【发布时间】:2016-07-16 15:56:04
【问题描述】:
我正在尝试将 PayPal REST API 集成到我的 Symfony 2 网络应用程序中,但我发现很难理解完整的工作流程到底是什么样子:
PayPal docs 描述了接受付款的以下步骤。可以使用PayPal Playground 来模拟这些步骤:
- 获取访问令牌
-
通过查询 API创建
Payment对象 - 将用户重定向到
Payment响应中收到的approval url - 在用户在 PayPal 页面上批准付款后,他会使用
Payment对象中定义的成功链接重定向回我的页面。使用收到的信息执行付款。 - 付款已完成,状态为
approved
From the docs:一旦付款完成,它被称为 销售。然后,您可以查看销售情况并进行退款。
到目前为止一切顺利。但是: 在这个工作流程中,Webhook 在哪里使用/触发?我在 PayPal Developer Dashboard 中定义了一个通配符 Webhook(接受所有可能的事件)。
我的观察是,我的系统收到 Webhook 事件 1-2 分钟 (!) 在用户被重定向回成功链接和 付款完成后(第 4 步)。
除了执行付款和接收 Webhook 之间的长时间延迟之外,这个工作流程意味着,我只收到处理成功链接的 Webhook AFTER。 这意味着,处理成功链接对于完成付款是绝对必要的。这是正确的吗?
我需要使用 Webhooks 吗?
几天前我已经问过this question,nifr 的回答很合理:不能相信用户会遵循任何重定向 URL,而应该只依赖 Webhook 事件。
但这与我之前描述的观察结果相冲突,因为如果不处理重定向 URL,我将永远不会收到 Webhook...
因此,处理PAYMENT.SALE.COMPLETED webhook 事件没有多大意义,因为这应该在处理重定向 URL 时已经完成。 正确吗?
但是,只有通过监听这些事件才能处理待处理付款的更新、处理退款或撤销付款等。
所以答案是:只使用 Webhooks 来获取之前付款的更新。正确吗?
所以,主要问题是:
- 接受付款的 5 步流程并未说明使用 Webhooks。这似乎没有多大意义,因为没有 Webhooks 会错过更新事件等? 那么,真的可以在没有 Webhooks 的情况下实现完整的支付流程吗?
- 如果是,在这种情况下如何处理更新(退款、待处理等)?
- 如果不是,什么是正确的策略/时间来完成订单,因为需要很长时间才能完全接收和处理 webhook?
【问题讨论】:
标签: php paypal paypal-sandbox paypal-rest-sdk