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

标签 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 }

文档有错误 - 当前置为真时它在假时起作用 - 这是我的错误报告

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/

相关文章:

php - Web Profiler 未显示在开发中

paypal - 如何使用 Paypal 客户端 rest api 创建订阅付款?

php - 避免往返 key 查找

php - Word XML 到 HTML(备选方案)

PHP/MYSQL 安全问题(在线订单、管理员门户)

php - 在亚马逊上设置 Symfony2 应用程序(傻瓜)

php - "No identifier/primary key specified for Entity"- 扩展 FOS 用户

php - 对齐下面的两个按钮

paypal - 如何在 PayPal 沙盒网站上测试 "checkout without a PayPal account"?

paypal - 通过 PayPal API 处理磁条数据