PayumBundle зафиксировать платеж в фоновом режиме непросто

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

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

Но это не просто в этой связке.

События не запускаются - поэтому 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

угу...

пожалуйста, помогите мне - как я могу принять решение, когда я действительно получу изменение статуса платежной информации.

Мне просто нужно запустить мой процесс, когда пользователь заплатил или отменил платеж...


person Developer    schedule 01.11.2019    source источник


Ответы (1)


Из тегов вашего вопроса я предполагаю, что вы используете Paypal в качестве платежного шлюза, в этом случае Payum по умолчанию использует настроенный вами URL-адрес, этот же URL-адрес используется Paypal в качестве URL-адреса уведомления, поэтому, если есть какое-либо изменение статуса в вашем платеже, Paypal снова вызовет этот URL-адрес. Поэтому, если вам нужно что-то сделать, например отправить событие, вы можете сделать это отсюда.

person yurguis    schedule 22.11.2019