Выдать ошибку при оформлении заказа на заказ


Я пишу пользовательский модуль оформления заказа для работы с оформлением заказа на странице, и я хочу, чтобы предупреждение JavaScript сообщало пользователю, когда его карта была отклонена или произошла ошибка с API. В настоящее время обработка PHP создает исключение через исключение Mage::Throw, но это не приводит к появлению ошибки JavaScript.

Как я могу это сделать? Требуется ли код JavaScript или мне нужно возвращать определенную структуру данных в функции захвата или обработки?

Author: Kerry Ritter, 2014-07-26

1 answers

Привет и добро пожаловать в Magento.СЕ! Это уже функция оформления заказа Magento на странице.

При проверке любая возникшая ошибка (в том числе ошибка, вызванная шлюзом) отображается в виде предупреждения Javascript. Возьмите текущий встроенный Magento Authorize.net модуль (здесь показан в режиме песочницы) в случае отклонения:

enter image description here

Он отвечает снижением предупреждения Javscript:

enter image description here

Как он это делает?

Если вы посмотрите в платеж модуль для возвращенной ошибки мы видим, что это текст описания на 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

Чтобы воспользоваться этим, все, что потребуется, - это создать пользовательское исключение из вашего способа оплаты

 5
Author: philwinkle, 2014-07-26 19:24:45