我正在寻找一种简单而正确的方法来在付款完成时运行我的流程——捕获、取消。 我认为这是一个典型的要求。
我不想在完成页面中执行此操作 - 它在我的付款方式中处于待处理状态并且它的用户被解雇了。我想要付款门发送付款完成时 - 后台方式。
但这在这个包中并不容易。
事件不会被触发 - 所以 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 }
文档有错误 - 当前置为真时它在假时起作用 - 这是我的错误报告
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
呃...
请帮助我 - 当我真的收到 paymentDetails 状态更改时我该如何做出决定。
我只需要在用户付款或取消付款时触发我的流程......
最佳答案
我从你的问题的标签中猜测你正在使用 Paypal 作为支付网关,在这种情况下,Payum 默认使用你配置的 done url,这个相同的 url 被 Paypal 用作通知 url,所以如果有您的付款状态发生任何变化,Paypal 将再次调用此 url。 因此,如果您需要做某事,例如调度事件,您可以从这里开始。
关于php - PayumBundle 在后台捕获付款并不容易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58659500/