Jump to content
Sign in to follow this  
Fimo

Ошибка с корзиной при изменении заказа, ПОМОГИТЕ РЕШИТЬ!

Recommended Posts

Добрый день!
Помогите решить проблему движка, нашел ошибку но нигде не могу найти человека кто бы уже сталкивался с такой проблемой движка, видимо я буду первым ))

Есть работающий магазин, много заказов уже, постоянно приходиться заходить постоянно исправлять заказы в админке (добавлять товары к заказу или убирать их от туда). Со временем заказов стало много и клиенты начали часто жаловаться что они сидят на сайте час-два, добавляют товары в корзину и тут воаля, она становится пустой не успев оформить заказ что заставляет клиентов просто напросто покинуть сайт не сделав заказ. Я сначала не придал этому сильного значения так как думал что проблема с браузером на стороне клиента, но когда в день начали клиенты звонить по несколько раз с такой проблемой я понял что проблема на моей стороне. Начал разбираться в чем дело и понял, что я сижу и целый день изменяю заказы клиентов которые уже оформили заказ или добавляю сам заказы через админ панель и при сохранении этих заказов у всех корзины становятся пустыми. Я думал что у меня какой то конфликт с темой или модулем, но нет, поставил чистую сборку ок сторе и оригинала и понял что на них такая же проблема на дефолтной теме без лишних модулем. 

Помогите решить данную проблему в движке!!! Прошу!!!

  • +1 1

Share this post


Link to post
Share on other sites

Добрый день!

Помогите решить проблему движка, нашел ошибку но нигде не могу найти человека кто бы уже сталкивался с такой проблемой движка, видимо я буду первым ))

Есть работающий магазин, много заказов уже, постоянно приходиться заходить постоянно исправлять заказы в админке (добавлять товары к заказу или убирать их от туда). Со временем заказов стало много и клиенты начали часто жаловаться что они сидят на сайте час-два, добавляют товары в корзину и тут воаля, она становится пустой не успев оформить заказ что заставляет клиентов просто напросто покинуть сайт не сделав заказ. Я сначала не придал этому сильного значения так как думал что проблема с браузером на стороне клиента, но когда в день начали клиенты звонить по несколько раз с такой проблемой я понял что проблема на моей стороне. Начал разбираться в чем дело и понял, что я сижу и целый день изменяю заказы клиентов которые уже оформили заказ или добавляю сам заказы через админ панель и при сохранении этих заказов у всех корзины становятся пустыми. Я думал что у меня какой то конфликт с темой или модулем, но нет, поставил чистую сборку ок сторе и оригинала и понял что на них такая же проблема на дефолтной теме без лишних модулем. 

Помогите решить данную проблему в движке!!! Прошу!!!

Идентичная проблема, У Вас получилось найти причину и как победили?

Только в добавок к всему товар который пользователь добавил в корзину после оформления заказа весь сыпется в редактируемый товар!

Edited by Maxim45

Share this post


Link to post
Share on other sites

этож опенкарт. свыкнитесь постепенно с редактированием заказов

Share this post


Link to post
Share on other sites

Привет! Напишите ваши версии опенкарта.

Share this post


Link to post
Share on other sites

Приведу решение проблемы на версии 1.5.5.x

 

В файле catalog/controller/checkout/manual.php находим строку:

$this->customer->login($customer_info['email'], '', true);

После неё добавляем:

$cart_save = isset($this->session->data['cart']) ? $this->session->data['cart'] : array();

В конце файла еть блок кода:

			// Reset everything
			$this->cart->clear();
			$this->customer->logout();
			
			unset($this->session->data['shipping_method']);
			unset($this->session->data['shipping_methods']);
			unset($this->session->data['payment_method']);
			unset($this->session->data['payment_methods']);
			unset($this->session->data['coupon']);
			unset($this->session->data['reward']);
			unset($this->session->data['voucher']);
			unset($this->session->data['vouchers']);

Именно в конце файла. Не в начале.

 

В этом блоке после строки:

$this->cart->clear();

Добавляем:

if (!empty($cart_save)) {
  $this->session->data['cart'] = $cart_save;
}

Нет возможности проверить. Но должно помочь.

Напишите, как пройдёт после доработки.

Share this post


Link to post
Share on other sites

Можно попробовать вариант проще.
Ориентировался на код ocStore 1.5.5.1.2, но скорее всего и на других версиях 1.5.5.х будет так же.

В конце файла перед строкой:

$this->customer->logout();

Добавить:

unset($this->session->data['cart']);

Это предотвратит затирание корзины клиента при логауте.

 

P.S.:

И после строки:

$this->customer->logout();

Добавить:

$this->session->data['cart'] = array();
Edited by mpn2005

Share this post


Link to post
Share on other sites

А в версиях 2.х? начинаю редактировать заказ - у клиента в корзину добавляются товары из заказа, а если у него корзина не пустая - в редактируемый заказ добавляются товары из корзины. Странненько!

Share this post


Link to post
Share on other sites

А в версиях 2.х? начинаю редактировать заказ - у клиента в корзину добавляются товары из заказа, а если у него корзина не пустая - в редактируемый заказ добавляются товары из корзины. Странненько!

Нет особо времени просматривать все версии двойки. Там местами ой какие интересные отличия в структуре и коде.

 

Могу посмотреть на конкретно указанную версию, если интересует.

И описать, как там этот процесс организован.

Share this post


Link to post
Share on other sites

Со временем заказов стало много и клиенты начали часто жаловаться что они сидят на сайте час-два, добавляют товары в корзину и тут воаля, она становится пустой не успев оформить заказ что заставляет клиентов просто напросто покинуть сайт не сделав заказ. Я сначала не придал этому сильного значения так как думал что проблема с браузером на стороне клиента, но когда в день начали клиенты звонить по несколько раз с такой проблемой я понял что проблема на моей стороне.

 

system/library/session.php

 

для 1.5.5.1

<?php
class Session {
    public $data = array();
            
    public function __construct() {        
        if (!session_id()) {
            ini_set('session.use_cookies', 'On');
            ini_set('session.use_trans_sid', 'On');
            
            session_set_cookie_params(2592000, '/');
            session_start();
        }
    
        $this->data =& $_SESSION;
    }
    
    function getId() {
        return session_id();
    }
}
?>

Edited by zcell

Share this post


Link to post
Share on other sites

для opencart 2.*

<?php
class Session {
	public $data = array();

	public function __construct($session_id = '',  $key = 'default') {
		if (!session_id()) {
			ini_set('session.use_only_cookies', 'Off');
			ini_set('session.use_cookies', 'On');
			ini_set('session.use_trans_sid', 'On');
			ini_set('session.cookie_httponly', 'On');

			if (isset($_COOKIE[session_name()]) && !preg_match('/^[a-zA-Z0-9,\-]{22,40}$/', $_COOKIE[session_name()])) {
				exit();
			}

			if ($session_id) {
				session_id($session_id);
			}

			session_set_cookie_params(2592000, '/');
			session_start();
		}

		if (!isset($_SESSION[$key])) {
			$_SESSION[$key] = array();
		}

		$this->data =& $_SESSION[$key];
	}

	public function getId() {
		return session_id();
	}

	public function start() {
		return session_start();
	}

	public function destroy() {
		return session_destroy();
	}
}


Edited by zcell

Share this post


Link to post
Share on other sites

К сожалению, такие вопросы нельзя решить  однозначно..

Описанный метод подойдет, а может и не подойти.

 

Вас выкидывает из админки, когда вы долго в ней сидите, и ничего не делаете?

Share this post


Link to post
Share on other sites

если мой пример выше не помог, то возможно надо в самом конце .htaccess в корне дописать

php_value session.gc_maxlifetime 604800
php_value session.cookie_lifetime 604800
php_value session.save_path /var/www/*/data/www/sessions/

в последней строке нужно указать полный путь до папки с сессиями (ее нужно создать, можно выше корня сайта)

если после вставки этого кода у вас 500 ошибка сервера - то использовать его нет надобности.

Share this post


Link to post
Share on other sites

Люди вы читать умеете?
 
Проблема не связана с истечением срока сессии.
 

Начал разбираться в чем дело и понял, что я сижу и целый день изменяю заказы клиентов которые уже оформили заказ или добавляю сам заказы через админ панель и при сохранении этих заказов у всех корзины становятся пустыми.

Это именно checkout/manual.
Этот контроллер используется при редактировании заказа в админке.
И корзина пользователя просто при этом процессе очищается.
Надо подправить код и сохранить пользовательскую корзину.
 
 
Про истечения срока сессии есть и оригинальней приколы у хостеров некторых.
Это очистка временной папки по крону, при этом все сесии (которые там хранятся по умолчанию) теряются.
Помогает сменить папку хранения сессий в htaccess.

Но не на всяком хостинге это разрешено.

Share this post


Link to post
Share on other sites

Паша, там ведь все сумбурно у ТС написано. Поэтому я специально привел кусок текста в цитате, где идет речь о истечении срока жизни сессии.

Share this post


Link to post
Share on other sites

Паша, там ведь все сумбурно у ТС написано. Поэтому я специально привел кусок текста в цитате, где идет речь о истечении срока жизни сессии.

Да. Я тоже несколько раз перечитывал, пока понял на что это похоже.

 

На самом деле мы только предполагаем, а что там на самом деле не установить (по сумбурному описанию).  :-) 

Share this post


Link to post
Share on other sites

Вот что получается: клиент зарегистрирован, делал заказ вчера. Сегодня я этот заказ редактировал, через пару минут клиент вошел в свой профиль и увидел весь старый редактируемый заказ в своей корзине. Зачем оно ему надо?

Share this post


Link to post
Share on other sites

Даже вот еще что: редактируем заказ: добовляем товар в заказ - у клиента этот товар появляется в корзине, другой добавляем - у клиента уже два товара в корзине. Забавно. Завершаем редактировать заказ, а корзина у клиента остается с товарами.

Ну как такое может быть?

2.1.0.2

Edited by hmade

Share this post


Link to post
Share on other sites

Даже вот еще что: редактируем заказ: добовляем товар в заказ - у клиента этот товар появляется в корзине, другой добавляем - у клиента уже два товара в корзине. Забавно. Завершаем редактировать заказ, а корзина у клиента остается с товарами.

Ну как такое может быть?

2.1.0.2

Посмотрите

https://opencartforum.com/files/file/2958-orderpro-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0-%D0%B4%D0%BB%D1%8F-155x/

может и для 2ки есть у автора

Share this post


Link to post
Share on other sites

У меня такая же проблема, удалось кому-нибудь решить?

 

Opencart.CMS 2.1.0.2.1

 

И прикол в том, что если отредактировать заказ в админке - то приходит письмо на почту что поступил новый заказ.

Это как так?

 

PS в моей версии нет файла catalog/controller/checkout/manual.php

Edited by zyto

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  

  • Similar Content

    • By matroskin92
      300.00 руб
      Скачать/Купить дополнение


      Простое оформление заказа
      Простое решение для реального упрощения процесса оформления заказа, с настройкой которого разберется любой чайник. Модуль разделен на блоки, содержание (поля, методы) которых можно настроить индивидуально (например, для каждой группы доставки указать свои поля, а для самовывоза и вовсе их отключить). 
      При разработке модуля был использован опыт и требования к оформлению заказа интернет-магазинов с высокой конверсией продаж.
       
      ДЕМО
      Opencart / ocStore 2.3
      Opencart / ocStore 3.0
       
      Логин: demo
      Пароль: demo
       
      УСТАНОВКА
      Установите модуль через стандартный установщик Перейдите к настройкам модуля "Оформление заказа Custom" Осуществите первичную настройку модуля Обновите кэш модификаторов (Встроенный модификатор осуществляет переадресацию со стандартных страниц корзины и оформления заказа на настраиваемую.)  
      ЧТО ВНУТРИ
      Модуль имеет 8 основных блоков на одной странице
      Оформить как - (с регистрацией, без регистрации и авторизация) Корзина (с набором колонок, необходимых для отображения на странице) Личные данные (настройка полей для каждой группы пользователей) Доставка (поля, с отметкой для каких методов осуществлять отображение) Оплата (методы и группы пользователей для отображения) Поле комментария Модуле (таких как подарочные сертификаты, купоны) Итоговая таблица   
      Данное решение удовлетворит большинство магазинов, которым необходимо простое и быстрое оформление заказа, но нет желания устанавливать сложные модули. 
       
      ИЗМЕНЕНИЕ ОФОРМЛЕНИЯ
      Вы можете самостоятельно изменить оформление и изменить расположение блоков на свое усмотрение. Для сохранения работоспособности модуля сохраняйте уникальные идентификаторы (id) и названия полей и методов (name). В планах добавить в модуль различные темы оформления для быстрого старта.
       
      ПОДДЕРЖКА
      Поддержка осуществляется преимущественно в личных сообщениях.
       
      Внимание, описание выше соответствует модулю версии 2.0. Если Вы покупали модуль ранее - Вы можете бесплатно обновиться до актуальной версии.
       
      Описание версии модуля версии 1.0.4
       
      Добавил matroskin92 Добавлено 22.01.2019 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика https://matrosite.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • By matroskin92
      Простое решение для реального упрощения процесса оформления заказа, с настройкой которого разберется любой чайник. Модуль разделен на блоки, содержание (поля, методы) которых можно настроить индивидуально (например, для каждой группы доставки указать свои поля, а для самовывоза и вовсе их отключить). 
      При разработке модуля был использован опыт и требования к оформлению заказа интернет-магазинов с высокой конверсией продаж.
       
      ДЕМО
      Opencart / ocStore 2.3
      Opencart / ocStore 3.0
       
      Логин: demo
      Пароль: demo
       
      УСТАНОВКА
      Установите модуль через стандартный установщик Перейдите к настройкам модуля "Оформление заказа Custom" Осуществите первичную настройку модуля Обновите кэш модификаторов (Встроенный модификатор осуществляет переадресацию со стандартных страниц корзины и оформления заказа на настраиваемую.)  
      ЧТО ВНУТРИ
      Модуль имеет 8 основных блоков на одной странице
      Оформить как - (с регистрацией, без регистрации и авторизация) Корзина (с набором колонок, необходимых для отображения на странице) Личные данные (настройка полей для каждой группы пользователей) Доставка (поля, с отметкой для каких методов осуществлять отображение) Оплата (методы и группы пользователей для отображения) Поле комментария Модуле (таких как подарочные сертификаты, купоны) Итоговая таблица   
      Данное решение удовлетворит большинство магазинов, которым необходимо простое и быстрое оформление заказа, но нет желания устанавливать сложные модули. 
       
      ИЗМЕНЕНИЕ ОФОРМЛЕНИЯ
      Вы можете самостоятельно изменить оформление и изменить расположение блоков на свое усмотрение. Для сохранения работоспособности модуля сохраняйте уникальные идентификаторы (id) и названия полей и методов (name). В планах добавить в модуль различные темы оформления для быстрого старта.
       
      ПОДДЕРЖКА
      Поддержка осуществляется преимущественно в личных сообщениях.
       
      Внимание, описание выше соответствует модулю версии 2.0. Если Вы покупали модуль ранее - Вы можете бесплатно обновиться до актуальной версии.
       
      Описание версии модуля версии 1.0.4
       
    • By matroskin92
      490.00 руб
      Скачать/Купить дополнение


      Экспорт корзины/заказов в Excel
      Решение, 2 в 1.
      На сайте - экспорт корзины клиента (в любом месте шаблона), а так же экспорт заказа из личного кабинета интернет-магазина.
      В административной панели сайта - экспорт выбранных заказов в один файл .XLSX
       
      Модуль не зависит от используемого шаблона и работает со всеми популярными модулями оформления заказа. 
       
      УСТАНОВКА
      Установите библиотеку PHPExcel как обычный модуль Установите модуль для Вашей версии Opencart Активируйте в списке модулей и произведите необходимую настройку модуля. Добавьте вывод модуля в нужный в макет корзины, либо в макет отображения заказа в личном кабинете. Обновите кэш модификаторов По результатам работы модуля, пожалуйста, напишите отзыв.  
      ДЕМО
      OPENCART 3 / OCSTORE 3
      OPENCART 2.3 / OCSTORE 2.3
      Логин: demo
      Пароль: demo
       
      РАЗВИТИЕ МОДУЛЯ
      Если у вас есть идея, либо необходимость дополнительного функционала - смело пишите в личные сообщения. Если функционал покажется мне интересным, он будет добавлен в следующей версии модуля. Если модуль приобретается с дополнительными опциями - новые функции появляются значительно быстрее (больше кофе - меньше сна! Заряди разработчика по полной).
       
      ПОДДЕРЖКА
      Поддержка в личных сообщениях и в комментариях в соответствующей теме на форуме. 
      Если у Вас не получилось установить модуль, либо он работает не корректно, пожалуйста, прежде чем оставить отзыв модулю - напишите в личные сообщения, отвечаю оперативно.
       
      ОСТАЛИСЬ ВОПРОСЫ?
      Напишите в личные сообщения.
      Добавил matroskin92 Добавлено 07.03.2019 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика matro.site Старая цена 600 Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • By ViktorFDX
      Поменял в настройках стоимость доставки и теперь появилась ошибка: когда добавляю в корзину товар и открываю оформить заказ, у меня появилась ещё одна форма оформления заказа (дубль) как решить эту проблему? Фото пример:
       
       

    • By Pulemet
      300.00 руб
      Скачать/Купить дополнение


      Админка - управление обязательными полями в заказе
      В Opencart при редактировании заказа необходимо обязательно заполнять множество данных, которые во многих случаях просто не нужны. Данное расширение позволит вам отключить необходимость ввода полей (возможность заполнения остаётся) в админке заказа, в которых нет необходимости.

      Есть возможность настроить активность/неактивность следующих строк:

      Вкладка Данные покупателя:   Имя, Фамилия, E-Mail, Телефон;
      Вкладка Детали оплаты: Имя, Фамилия, Адрес 1, Город, Индекс, Страна, Регион / Область;
      Вкладка Детали доставки: Имя, Фамилия, Адрес 1, Город, Индекс, Страна, Регион / Область.


      Внимание! Работоспособность модуля гарантируется только в стандартной форме редактирования заказа.

      Почта для связи : order.opencart@gmail.com
      Добавил Pulemet Добавлено 26.09.2017 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.1 ocStore 2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет  
  • 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.