Jump to content
Sign in to follow this  
notfa

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

Recommended Posts

Версия 1.5.3.1

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

  • +1 1

Share this post


Link to post
Share on other sites

Не помогло! 

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

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

Share this post


Link to post
Share on other sites

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

Сайт: cardopt.com.ua

Edited by afwollis
unlinked

Share this post


Link to post
Share on other sites

в теме предлагают 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'] . "'");

 

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

вариант предложенный 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

Share this post


Link to post
Share on other sites

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

Версия 1.5.3.1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

1.5.5

Share this post


Link to post
Share on other sites
В 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

Edited by SiteNNPro

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.