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);
Сохранить файл и обновить модификации в админке на всякий случай.