Команда авторизации платежа Magento 2


У меня возникли проблемы с пониманием того, как выполняется команда "Авторизовать" в способе оплаты.

Magento 2 использует компоненты Javascript для способов оплаты, и щелчок "Оформить заказ" инициирует весь процесс, я просто не уверен, как/когда запрос на авторизацию будет создан и отправлен поставщику платежей.

Например, если я использую образец платежного шлюза, который предоставляет Magento: https://github.com/magento/magento2-samples/tree/master/sample-module-payment-gateway , как будет вызываться конструктор запросов?

РЕДАКТИРОВАТЬ

Это ссылка на ответ Джони Джонса

Когда Magento выполняет действия по размещению заказа, он вызывает операцию авторизации или захвата (также используется для операции продажи) (в соответствии с операцией, настроенной для выбранного способа оплаты).

Это та часть, которая у меня есть проблемы с.

Правильно ли я вас понимаю, что команда, указанная в платежных модулях di.xml (авторизация/захват/продажа), автоматически вызывается при срабатывании действия "Разместить заказ"?

Если да, то какова точка входа, т.Е. Какой класс/файл вызывается первым в гипотетической ситуации, когда у вас есть только 1 команда в пуле команд (например, команда авторизации)?

И, если это не требует слишком многого, какой минимум вам нужно иметь чтобы начать выполнение команды? Действительно ли достаточно просто иметь простой пользовательский способ оплаты и команду, указанную в способе оплаты di.xml?

Author: Lez, 2018-01-17

1 answers

Когда Magento выполняет действия по размещению заказа, он вызывает authorize или capture (используется для sale операции также ) платежную операцию (в соответствии с операцией, настроенной для выбранного способа оплаты).

Это действие запускает цепочку методов, и если ваша интеграция платежей основана на шлюзе поставщика платежей Magento, инфраструктура продаж пытается вызвать команду authorize или capture платежного шлюза из пула команд .

Как вы можете видеть из документация, пул команд содержит список доступных команд, в большинстве случаев есть authorize, sale, capture, refund, cancel, void но вы можете указать собственные команды и использовать пул команд в качестве зависимости в своих классах для выполнения доступных команд.

В качестве примера реализация Braintree использует GetPaymentNonceCommand для создания одноразового платежа.

Командное взаимодействие объясняет эту диаграмму в документах разработчиков Magento.

UPD: Authorize.net имеет хороший учебник о различных типах платежных транзакций, возможно, это поможет понять, почему в Magento есть разные действия, такие как authorize и capture.

UPD2: Когда клиент нажимает Place Order и если используется действие по умолчанию (payment-information Точка входа ВЕБ-API), когда Magento вызывает следующую абстрактную цепочку:

Quote::submit
   ->Order::place
      ->OrderPayment::place (authorize|sale) - depends on configured payment action for a payment method
          ->PaymentAdapter::authorize|sale
              ->GatewayCommand::authorize|sale - the needed command will be read from the di.xml
                  -> ... - other payment gateway stuff

"Границей" между модулем продаж и оплаты является \Magento\Sales\Model\Order\Payment::place() и \Magento\Payment\Model\Method\Adapter::authorize()|sale().

Для простого потока, по крайней мере, вам нужен скелет способа оплаты (папка etc с di.xml, module.xml, и т.д. - можно найти в репозитории образцов Magento) и команда шлюза с соответствующей инфраструктурой - сборщики запросов, проверки, обработчики ответов, клиенты http|soap и т.д.

Официальная документация шаг за шагом охватывает все требования.

 4
Author: joni jones, 2018-01-18 15:13:16