Какое правильное событие наблюдателя magento для регистрации оплаченного заказа?

Я пытаюсь отправить заказы третьей стороне после и ТОЛЬКО после того, как заказ был оплачен и теперь ему присвоен статус «В обработке». Какой наблюдатель лучше всего использовать, чтобы настроить его для работы со всеми типами платежей?

После прочтения нескольких источников кажется, что:

sales_order_invoice_pay

Должен работать для всех способов оплаты, но похоже, что он был удален в Magento 1.9: http://rabee.me/codes/magento/cheatsheet/1.9/ (Этот список неполный, проверьте обновления ниже )

Другой вариант был:

'sales_order_payment_pay'

Но когда я тестирую его, устанавливая способ оплаты «Чек / Денежный перевод», он НЕ запускается после того, как я создаю счет на бэкэнде, используя «Заказ»> «Счет-фактура»> «Отправить счет-фактуру».

Этот метод вызывается только с другими способами оплаты? (paypal/authorize.net)

ОБНОВЛЕНИЕ:

После прочтения: этот другой вопрос кажется единственным способом гарантировать, что я экспортирую заказ ПОСЛЕ оплаты (онлайн или оффлайн) — это зафиксировать момент создания счета, и что для Magento 1.9 правильный наблюдатель :

sales_order_invoice_register

Создаются ли автоматически счета и отправляются ли они после оплаты онлайн-методами PayPal/authorize.net? Будет ли это по-прежнему верно при использовании их в песочнице/тестовом режиме?

ОБНОВЛЕНИЕ 2:

После долгих испытаний кажется, что 'sales_order_invoice_pay' — правильный метод для достижения того, что мне нужно.


person Ox3    schedule 01.08.2014    source источник


Ответы (1)


Что насчет checkout_onepage_controller_success_action. Это можно использовать, если оплата вашего заказа прошла успешно. Есть еще одно событие sales_order_payment_capture. Это может также использоваться в вашем случае. Я не использовал его раньше.

Проверьте эту ССЫЛКУ.

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

Согласно обсуждению, кажется, что sales_order_invoice_pay является идеальным наблюдателем для регистрации оплаченного заказа, и это событие все еще доступно в Magento 1.9. (не устарело)

Для получения дополнительной информации ознакомьтесь с этой Link< /сильный>

person Rajeev K Tomy    schedule 01.08.2014
comment
Спасибо за ваш ответ, кажется, что checkout_onepage_controller_success_action вызывается сразу после размещения заказа, и он не проверяет, был ли произведен платеж или нет, sales_order_payment_capture не будет работать для офлайн-платежей. Похоже, нет события, которое бы управляло ими всеми =( - person Ox3; 01.08.2014
comment
@progtammer_rkt: Спасибо, кажется, они предлагают «sales_order_invoice_pay», к сожалению, это событие было удалено в Magento 1.9. Я думаю, что это будет 'sales_order_invoice_register' или 'sales_order_payment_pay'. Я проведу некоторое тестирование, хотя будет очень полезно, если кто-то, кто успешно достиг того, что мне нужно, подтвердит, какой из них лучше. - person Ox3; 01.08.2014
comment
Неа. Это событие существует в magento 1.9. Взгляните на Mage_Sales_Model_Order_Invoice::pay(). Тогда может быть какая-то ошибка в вашем коде - person Rajeev K Tomy; 01.08.2014
comment
Большое спасибо за вашу помощь, вы уверены, что этот метод все еще доступен? Я проверил на: rabee.me/codes/magento/cheatsheet/1.9 и смог не найти. - person Ox3; 01.08.2014
comment
Список, скорее всего, неполон. Вот файл, который определяет это событие github.com/speedupmate/Magento-CE-Mirror/blob/master/app/code/. Взгляните на метод pay(). Также проверьте свою систему и убедитесь, что код выглядит так же. - person Rajeev K Tomy; 01.08.2014
comment
Спасибо за указание на то, что «sales_order_invoice_pay» все еще существует в Magento 1.9, после долгих испытаний кажется, что это правильное событие для наблюдения. - person Ox3; 02.08.2014
comment
@RajeevKTomy Где я могу найти список всех событий и их объяснение? - person Gem; 18.11.2019