Выдать ошибку при оформлении заказа на заказ
Я пишу пользовательский модуль оформления заказа для работы с оформлением заказа на странице, и я хочу, чтобы предупреждение JavaScript сообщало пользователю, когда его карта была отклонена или произошла ошибка с API. В настоящее время обработка PHP создает исключение через исключение Mage::Throw, но это не приводит к появлению ошибки JavaScript.
Как я могу это сделать? Требуется ли код JavaScript или мне нужно возвращать определенную структуру данных в функции захвата или обработки?
1 answers
Привет и добро пожаловать в Magento.СЕ! Это уже функция оформления заказа Magento на странице.
При проверке любая возникшая ошибка (в том числе ошибка, вызванная шлюзом) отображается в виде предупреждения Javascript. Возьмите текущий встроенный Magento Authorize.net модуль (здесь показан в режиме песочницы) в случае отклонения:
Он отвечает снижением предупреждения Javscript:
Как он это делает?
Если вы посмотрите в платеж модуль для возвращенной ошибки мы видим, что это текст описания на Exception
из Mage_Paygate_Model_Authorizenet::_place
Файл app/code/core/Mage/Paygate/Model/Authorizenet.php (строка 519):
//line 519:
case self::REQUEST_TYPE_AUTH_CAPTURE:
$newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE;
$defaultExceptionMessage = Mage::helper('paygate')->__('Payment capturing error.');
break;
//...
//line 576:
Mage::throwException($defaultExceptionMessage);
Итак, мы видим, что любое исключение, возникшее во время оплаты, возвращается в виде ответа JSON. Если вы посмотрите на вкладку сеть при неудачной отправке платежа, вы увидите ответ JSON от маршрута checkout/onepage/saveOrder
:
{"success":false,"error":true,"error_messages":"Payment capturing error."}
Эти три свойства являются ключом к отображению Javascript предупреждение:
- Успех должен быть ложным
- Ошибка должна быть истинной
-
error_messages содержит текст из сообщения
Mage::throwException
Чтобы воспользоваться этим, все, что потребуется, - это создать пользовательское исключение из вашего способа оплаты