【发布时间】:2020-02-27 18:24:18
【问题描述】:
我正在寻找一种简单而正确的方式来在付款完成后运行我的流程 - 捕获、取消。 我认为这是一个典型的要求。
我不想在完成页面中执行此操作 - 在我的付款方式中它处于待处理状态,并且它的用户被解雇了。我想要付款门何时发送付款完成 - 后台方式。
但这在这个捆绑包中并不容易。
事件不会被触发 - 所以 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
我刚搬到贝宝网站....
好的,我付款了 - 让接下来的 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 状态更改时如何做出决定。
我只需要在用户付款或取消付款时触发我的流程...
【问题讨论】: