Ребятушки, сам с этой проблемой столкнулся, уже испугался, а потом вспомнил такую же ситуацию в MODx. В общем, в этих движках, да и в других тоже, завязка пользователя идёт через его email. И если у вас поле email необязательное (что логично), то при заказе оно пустое и такая вот байда происходит: заказ в админку приходит, а на страницу благодарности не идёт и корзина не чистится.
Решение:
Автозаполнять поле email, если его не заполнил (а кто его заполнять-то будет, лишние движения) клиент каким-то значением, я ставлю значение guest@домен
Пример кода для OpenCart 2.3:
Файл //catalog/view/theme/ТЕМА/template/checkout/newstorecheckout.tpl
Находим input с id="input-payment-email"
У меня этот инпут спрятан, и при нажатии на чекбокс Зарегистрироваться появляется вместе с полем ввода пароля - логичный ход, просто часть кода с полем дял email перенести в место рядом с полем для ввода пароля.
Примерный код я повесил на чекбокс Зарегистрироваться:
<input type="checkbox" name="register" onclick="jQuery('.register-form').toggle();if(jQuery(this).prop('checked')) jQuery('#input-payment-email').val('');else jQuery('#input-payment-email').val('
[email protected]')"> <?php echo $text_register; ?>
Смысл в том, чтобы при нажатии кнопки Оформить заказ поле с id="input-payment-email" не было пустым.
Всем удачи