Платежный модуль Opencart 2
- Подробности
- Категория: Opencart (OCstore)
- Обновлено 21.03.2020
В Opencart заказ создается каждый раз по нажатию кнопки "Продолжить" в блоке выбора способа оплаты. На кнопке висит обработчик Ajax в файле /catalog/view/theme/default/template/checkout/checkout.tpl
строка 773: url: 'index.php?route=checkout/confirm',
Класс ControllerCheckoutConfirm (/catalog/controller/checkout/confirm.php) создает заказ в строке 314:
$this->session->data['order_id'] = $this->model_checkout_order->addOrder($order_data);
и пишет его в базу с параметром order_status_id =0
Если зайти в админку, то этот "временный" заказ "без статуса" можно увидеть в списке заказов по фильтру "Ошибочные заказы".
Как только пользователь нажимает последнюю кнопку "Оформить заказ", скрипт платежного модуля меняет статус заказа на тот, который указан в настройках этого платежного модуля. Некоторые платежные модули сначала перенаправляют пользователя на платежный шлюз и, если оплата в шлюзе прошла успешно, то по Callback меняют статус заказа. Однако, если пользователь передумал платить, то статус заказа так и остается order_status_id =0, то есть "Ошибочный".
Такая логика работы платежного модуля не всегда оправдана. Мы хотим, чтобы сначала платежный модуль сменил статус заказа, например, на "В обработке", а уж потом пусть отправляет пользователя на платежный шлюз.