Событие Magento всегда отправляется при успешном размещении заказа? - PullRequest
7 голосов
/ 15 ноября 2011

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

Я бы хотел, чтобы мой код запускался на разных этапах, когда посетитель проходит через сайт.Поэтому я добавил отладку в Mage :: dispatchEvent и прошел по сайту, чтобы увидеть, какие события запускаются на каждом этапе.Их много!

Меня интересуют два места:

  • , когда посетитель выбрал платежный адрес и перешел к следующему этапу процесса оформления заказа..

  • , когда пользователь успешно размещает заказ

Для адреса выставления счета один, события, которые я видел при запуске, выглядят актуально:

controller_action_predispatch_checkout_onepage_saveBilling
controller_action_postdispatch_checkout_onepage_saveBilling

«pre» и «post» подсказали мне, что на самом деле есть событие «checkout_onepage_saveBilling», но его нет, поэтому мой первый вопрос - почему «pre» и «post»?

Для успешного заказа, события, которые выглядят хорошо:

checkout_onepage_controller_success_action
checkout_multishipping_controller_success_action

Мой второй вопрос: будут ли эти события запускаться для всех способов оплаты?Например, при использовании Google Checkout или PayPal (стандартное перенаправление) событие сработает и в какой момент?При возвращении на сайт из PayPal?Если так, то возникнет вопрос: а что, если пользователь не вернется после завершения платежа?

Спасибо за любую помощь.

Ответы [ 2 ]

15 голосов
/ 11 января 2013

К сожалению, я заметил, что checkout_submit_all_after не срабатывает для заказов Paypal Express.

За исключением модификации моделей Paypal, чтобы добавить это (или, возможно, подключиться к событиям, которые они могут запустить - я еще не проверял это), я думаю, checkout_onepage_controller_success_action действительно может быть единственным событием, на которое вы можете абсолютно рассчитывать для каждого тип заказа.

6 голосов
/ 15 ноября 2011

Событие predispatch сработает до вызова действия, событие postdispatch сработает после завершения действия. Поэтому, если вам нужно узнать, каков был результат действия, вам следует использовать событие postdispatch.

Для успешных заказов проверьте событие checkout_submit_all_after.

Если вы еще не видели, https://www.nicksays.co.uk/magento-events-cheat-sheet-1-9/, - это удобный справочник для событий Magento.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...