我正在寻找一种简单而正确的方式来完成付款后的流程-已捕获,已取消。 我认为这是一个典型的要求。
我不想在完成页面中执行此操作-我的付款方式中的该方法处于待处理状态,并且已将其用户解雇。我想要付款门发送付款完成时-后台方式。
但这在这个捆绑包中并不容易。
事件未触发-因此 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
我刚搬到贝宝网站。...
好吧,我要付款-让下一位听众被解雇吗?
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
uggh ...
请帮助我-当我真正获得PaymentDetails状态更改时如何做出决定。
当用户付款或取消付款时,我只需要启动我的流程即可...
答案 0 :(得分:0)
我从问题的标签中猜测您正在使用Paypal作为支付网关,在这种情况下,Payum默认使用您已配置的完成网址,该相同的网址被Paypal用作通知网址,因此如果存在您的付款状态发生任何变化时,Paypal都会再次调用该网址。 因此,如果您需要执行某些操作(例如调度事件),则可以从此处开始。