Режим работы

Ваша корзина пуста!

500 ошибка при подтверждении заказа Opencart 2.3

При подтверждении заказа в Opencart 2.3 может возникать ошибка 500, клиенту не показывается сообщение об успешном заказе, но при этом заказ сохраняется. 

Если посмотреть в консоль браузера (F12) то в панели разработчика на вкладке "Сеть" можно увидеть ошибку в запросе confirm к платежному модулю, например:

index.php?route=extension/payment/cheque/confirm&_=**** - ошибка 500
index.php?route=extension/payment/bank_transfer/confirm&_=****  - ошибка 500
index.php?route=extension/payment/cheque/cod&_=**** - HTTP 500
index.php?route=extension/payment/cheque/free_checkout&_=**** - ошибка 500

Если же у вас включен вывод ошибок на экран, тогда вы увидите ошибку

Fatal error: Call to a member function check() on a non-object in /catalog/model/checkout/order.php on line 267

Эти ошибки из-за того, что в сборке Opencart 2.3 есть баг (ошибка) в процессе заказа, если включен какой-то модуль из раздела "Защита от мошенничества", например "Защита от мошенничества по IP".

Это решается очень просто, нужно открыть файл 

/catalog/model/checkout/order.php

найти там строку

$fraud_status_id = $this->{'model_fraud_' . $extension['code']}->check($order_info);

и заменить на

$fraud_status_id = $this->{'model_extension_fraud_' . $extension['code']}->check($order_info);

Сохранить файл и обновить модификации в админке на всякий случай.