Перейти к содержанию
notfa

[Решено?..] Не всегда очищается корзина после оформления заказа

Рекомендуемые сообщения

Версия 1.5.3.1

Заметил такой баг, но не могу воспроизвести его сам, только у покупателей.

Возможно кто-то сталкивался.

После оформления заказа у покупателей не очищается корзина, или очищается, но потом снова все товары из заказа появляются как добавленные в корзину.

Сломал голову, не могу найти где баг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы решили эту проблему? Поделитесь, пожалуйста. У нас ситуация точно такая же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Ссылки давайте на свои сайты.

2. Огласили бы к примеру, что пользователя с именем "тест+цифры" ваши менеджеры учитывать не будут, чтобы желающие могли проверить оформление заказа и корзину.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том что такое происходит не у всех и не всегда, закономерность мы выявить не смогли и сами повторить такой опыт нарочно тоже не смогли. Пару раз было, что сегодня успешно оформили заказ, завтра зашли в личный кабинет, весь вчерашний заказ снова в корзине + только что добавленные товары.

Ссылка hmade.com.ua, опенкарт 1.5.1.3

Оглашаем: пользователей с именем "тест+цифры" менеджеры учитывать не будут.

За решение проблемы готовы сказать спасибо в денежном эквиваленте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте переадресацию с  http://hmade.com.ua/  на  http://www.hmade.com.ua/ , потому что иначе у вас скрипты не работают на главной странице и кукисы для двух разных доменов сохраняются

Отсюда и бага с корзиной

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не помогло! 

Все так же: заказ оформляется, корзина очищается, через два дня покупатель заходит в свой личный кабинет и видит там все те же товары в корзине, которые он купил два дня назад. От браузера не зависит.

Подскажите, что это может быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь нашел решение? У меня - аналогичный баг.

Сайт: cardopt.com.ua

Изменено пользователем afwollis
unlinked

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в теме предлагают 3 варианта решения:

1. В system/library/cart.php добавить обнуление поля в системную функцию очистки корзины

<modification>
    <id>Bug Fix for Clear Cart</id>
    <version>1.0</version>
    <vqmver>2.1.6</vqmver>
    <author>OpenCartHelp.com</author>
    <file name="system/library/cart.php">
        <operation error="log">
            <search position="after" index="2"><![CDATA[$this->session->data['cart'] = array();]]></search>
            <add><![CDATA[
        if (isset($this->session->data['customer_id'])) {
            $customer_id = $this->session->data['customer_id'];

            $this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '' WHERE customer_id = '" . (int)$customer_id . "'");
        }
            ]]></add>
        </operation>
    </file>
</modification>

 

2. в /catalog/model/checkout/order.php в public function confirm( добавить

if ($order_info['customer_id']) {
     $this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '' WHERE customer_id = '" . (int)$order_info['customer_id' . "'");
}

или

if (!empty($order_info['customer_id'])) {
     $this->db->query("UPDATE `" . DB_PREFIX . "customer` SET `cart` = '' WHERE `customer_id` = '" . (int)$order_info['customer_id'] . "'");
}

отличия вижу, просто ещё не проверял какой рабочий

3. Тоже в catalog/model/checkout/order.php

НО в двух местах перед

$this->db->query("UPDATE `" . DB_PREFIX . "order` SET order_status_id

добавить

$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '' WHERE customer_id = '" . (int)$order_info['customer_id'] . "'");

 

 

Прошу совета профи, какой вариант адекватней с точки зрения работы движка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы ошибку нашли, гуглите http://forum.opencart.com/, там есть топик с этой проблемой.

Ошибка кстати вылезала еще раз, там косяк в двух местах, на опенкарт.ком и про вторую проблему есть топик.

 

ПС. Ошибка элементарная, но времени убили на ее отлов - уйму))

спасибо конечно... но все 3 варианта, что я тут указал, взяты именно оттуда.

и пусть слегка, но отличаются. Меня интересовала идеологическая близость к принципам работы движка.

 

а вот про так и не названную вторую это жестоко...

мало того что не дали наводок, так ещё и пообещали смерть уйме моего времени. Вот спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока работаем по 3-му варианту. будут сбои сразу отпишусь.

глядишь кому поможет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скорее всего, речь идет о посте

 

 

We are not seeing anything like the order not finishing. Since we are also not having issue with receiving the email confirmations of orders does that mean that we are left with:
- Bug in the order confirm function (less likely)
- Bug in the order update function (less likely)
This is resulting in many clients cancelling their order, calling in after seeing the issue, or ordering more products than they intended so any further ideas would be great as we need to find a fix quickly.

 

т.е. баг в модели /model/checkout/order/

1) function confirm

2) function update

 

решение приведено в посте #9 любой из вариантов.

 

2Notfa, никогда недолюбливал людей, которые так делают. Либо пиши всю инфу, либо не пиши ничего

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока работаем по 3-му варианту. будут сбои сразу отпишусь.

глядишь кому поможет

На каком варианте остановились?

У меня на 1.5.3.1 после решения из третьего варианта периодические жалобы не прекратились.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы уже и обновились с 1.5.1.3 на 1.5.5.1, а глюк этот остался :(

Напишите, кому какой вариант помог.

 

 

Никто не замечал связи между этим глюком и способами оплаты и/или доставки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрите, если я все правильно поняла, то судя по буржуйскому топику, ссылка на который была выше, проблема возникает когда покупатель не нажимает на кнопку Продолжить на странице checkout/success, а просто закрывает браузер на этой странице. Когда он потом залогинивается, опенкарт думает что надо восстановить старую сессию и добавляет товары с прошлого заказа в корзину.

Поскольку заставить всех нажимать на кнопку Продолжить мы не сможем, надо в checkout/success прописать код закрывающий и затем открывающий новую сессию. Именно по кнопке Продолжить для покупателя открывается новая сессия после оформления заказа.

Кто сможет это грамотно реализовать для 1.5.5.1?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вариант предложенный deeman разработчиком модуля Simple - упрощенная регистрация и заказ 4.1.4

 

в файле

\system\library\customer.php

есть

$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '" . $this->db->escape(isset($this->session->data['cart']) ? serialize($this->session->data['cart']) : '') . "', wishlist = '" . $this->db->escape(isset($this->session->data['wishlist']) ? serialize($this->session->data['wishlist']) : '') . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE customer_id = '" . (int)$this->customer_id . "'");

его надо заменить на

$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '" . $this->db->escape(!empty($this->session->data['cart']) ? serialize($this->session->data['cart']) : '') . "', wishlist = '" . $this->db->escape(isset($this->session->data['wishlist']) ? serialize($this->session->data['wishlist']) : '') . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE customer_id = '" . (int)$this->customer_id . "'");

и в ystem\library\cart.php 

добавить после public function clear() {

if ($this->customer->isLogged()) {
              $this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '' WHERE customer_id = '" . (int)$this->customer->getId() . "'");
          }

Мне помогло. 

За что deeman огромное спасибо!

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

hmade, этот способ мне не помог :(

Версия 1.5.3.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

разобрались?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот способ начинает работать для новых заказов?

У одного клиента, в корзине до сих пор старый заказ, количество позиций очень большое, по одному удалить нереально. Как всем клиентам очистить корзину ?

1.5.5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 27.05.2014 в 20:54, hmade сказал:

вариант предложенный deeman разработчиком модуля Simple - упрощенная регистрация и заказ 4.1.4

 

в файле

\system\library\customer.php

есть


$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '" . $this->db->escape(isset($this->session->data['cart']) ? serialize($this->session->data['cart']) : '') . "', wishlist = '" . $this->db->escape(isset($this->session->data['wishlist']) ? serialize($this->session->data['wishlist']) : '') . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE customer_id = '" . (int)$this->customer_id . "'");

его надо заменить на


$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '" . $this->db->escape(!empty($this->session->data['cart']) ? serialize($this->session->data['cart']) : '') . "', wishlist = '" . $this->db->escape(isset($this->session->data['wishlist']) ? serialize($this->session->data['wishlist']) : '') . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "' WHERE customer_id = '" . (int)$this->customer_id . "'");

и в ystem\library\cart.php 

добавить после public function clear() {


if ($this->customer->isLogged()) {
              $this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = '' WHERE customer_id = '" . (int)$this->customer->getId() . "'");
          }

Мне помогло. 

За что deeman огромное спасибо!

 

Мне, вроде как, тоже помогло. Понаблюдаем еще несколько дней.

OcStore 1.5.5.1.1

Изменено пользователем SiteNNPro

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.