【问题标题】:PayumBundle capture payment in background not easyPayumBundle 在后台捕获付款并不容易
【发布时间】: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 状态更改时如何做出决定。

我只需要在用户付款或取消付款时触发我的流程...

【问题讨论】:

    标签: php symfony paypal payum


    【解决方案1】:

    我从您的问题标签中猜测您正在使用 Paypal 作为支付网关,在这种情况下,Payum 默认使用您配置的完成 url,相同的 url 被 Paypal 用作通知 url,所以如果有如果您的付款状态发生任何变化,Paypal 将再次调用此 URL。 所以如果你需要做一些事情,比如调度一个事件,你可以从这里开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-13
      • 2013-08-04
      • 2013-02-06
      • 2019-01-24
      • 1970-01-01
      • 2014-11-30
      • 2013-12-05
      • 1970-01-01
      相关资源
      最近更新 更多