Я ищу простой и правильный способ запустить мой процесс, когда платеж будет завершен - захвачен, отменен. Я думаю, это типичное требование.
Я не хочу делать это на готовой странице - в моем способе оплаты она находится на рассмотрении, и ее пользователь уволен. Я хочу, когда платежный шлюз отправляет платеж в фоновом режиме.
Но это не просто в этой связке.
События не запускаются - поэтому 1 . Добавьте события Symfony https://github.com/Payum/Payum/blob/master/docs/event-dispatcher.md
payum.extension.event_dispatcher:
class: Payum\Core\Bridge\Symfony\Extension\EventDispatcherExtension
arguments: ["@event_dispatcher"]
public: true
tags:
- { name: payum.extension, all: true, prepend: true }
в документации есть ошибка - когда prepend имеет значение true, оно работает, когда false - вот мой отчет об ошибке
https://github.com/Payum/Payum/issues/821
Я не могу найти правильное название события - у нас всего 3 события
const GATEWAY_PRE_EXECUTE = 'payum.gateway.pre_execute';
const GATEWAY_EXECUTE = 'payum.gateway.execute';
const GATEWAY_POST_EXECUTE = 'payum.gateway.post_execute';
Добавляю слушатель PayumEvents::GATEWAY_POST_EXECUTE
Я вижу, что почти каждая операция в этом пакете выполняет какое-то действие, поэтому, прежде чем пользователь завершит оплату, мое событие запускается много раз.
в ExecuteEvent я не знаю, что происходит - я get_class $event->getContext()->getRequest() и 7 раз запускаю событие
Payum\Core\Request\GetHttpRequest
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\SetExpressCheckout
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\GetExpressCheckoutDetails
Payum\Core\Request\Sync
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\AuthorizeToken
Payum\Core\Request\Capture
Payum\Core\Request\Capture
Я только что перешел на сайт PayPal....
хорошо, я оплачу - следующие 10 раз уволят слушателя?
Payum\Core\Request\GetHttpRequest
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\GetExpressCheckoutDetails
Payum\Core\Request\Sync
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\DoExpressCheckoutPayment
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\GetExpressCheckoutDetails
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\GetTransactionDetails
Payum\Core\Request\Sync
Payum\Core\Request\Capture
Payum\Core\Request\Capture
Payum\Paypal\ExpressCheckout\Nvp\Request\Api\GetExpressCheckoutDetails
угу...
пожалуйста, помогите мне - как я могу принять решение, когда я действительно получу изменение статуса платежной информации.
Мне просто нужно запустить мой процесс, когда пользователь заплатил или отменил платеж...