PayumBundle在后台捕获付款并不容易

时间:2019-11-01 12:48:04

标签: php symfony paypal payum

我正在寻找一种简单而正确的方式来完成付款后的流程-已捕获,已取消。 我认为这是一个典型的要求。

我不想在完成页面中执行此操作-我的付款方式中的该方法处于待处理状态,并且已将其用户解雇。我想要付款门发送付款完成时-后台方式。

但这在这个捆绑包中并不容易。

事件未触发-因此 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状态更改时如何做出决定。

当用户付款或取消付款时,我只需要启动我的流程即可...

1 个答案:

答案 0 :(得分:0)

我从问题的标签中猜测您正在使用Paypal作为支付网关,在这种情况下,Payum默认使用您已配置的完成网址,该相同的网址被Paypal用作通知网址,因此如果存在您的付款状态发生任何变化时,Paypal都会再次调用该网址。 因此,如果您需要执行某些操作(例如调度事件),则可以从此处开始。