PayPal REST API订单工作流程:付款 - >销售 - > Webhook?

And*_*ord 6 php paypal paypal-sandbox paypal-rest-sdk

我正在尝试将PayPal REST API集成到我的Symfony 2 Web应用程序中,但我发现很难理解完整的工作流程到底是什么样的:

贝宝文档描述以下步骤接受付款.可以使用PayPal Playground来模拟这些步骤:

  1. 获取访问令牌
  2. 创建一个Payment通过查询API对象
  3. 将用户重定向到响应中的已approval url接收Payment
  4. 用户在PayPal页面上批准付款后,使用Payment对象中定义的成功链接将其重定向回我的页面.使用收到的信息执行付款.
  5. 付款已完成并具有状态 approved

从文档:一旦付款完成后,它被称为 销售.然后,您可以查找销售并退款.

到现在为止还挺好.但是:在这个工作流程中,Webhooks在哪里使用/解雇?我在PayPal开发人员仪表板中定义了一个通配符Webhook(接受所有可能的事件).

我的观察是,我的系统接收网络挂接事件1-2分钟(!) 后,用户被重定向到成功的链接和被处决后付款(第四步).

除了执行付款和接收Webhook之间的这个长时间延迟之外,这个工作流程意味着我只接收处理成功链接的Webhook .这意味着,处理成功链接绝对是完成付款所必需的.它是否正确?

我需要使用Webhooks吗?

我已经在几天前问过这个问题了,nifr的答案是非常合理的:人们不能相信用户遵循任何重定向URL,但应该只依赖于Webhook事件.

然而,这与我之前描述的观察结果相冲突,因为如果不处理重定向URL,我将永远不会收到Webhook ...

因此,处理PAYMENT.SALE.COMPLETEDwebhook事件没有多大意义,因为在处理重定向URL时应该已经完成​​了.正确?

但是,只有通过收听这些事件,才能处理待处理付款的更新,处理退款或撤销付款等.

所以答案是:只使用Webhooks获取之前付款的更新.正确?

所以,主要问题是:

  1. 接受付款的5个步骤没有说明使用Webhooks.这似乎没有多大意义,因为没有Webhooks会错过更新事件等等?那么,没有Webhooks真的可以实现完整的支付工作流程吗?
  2. 如果是,在这种情况下如何处理更新(退款,待处理等)?
  3. 如果不是,那么完成订单的正确策略/时间是什么,因为完全接收和处理webhook需要相当长的时间?

Ram*_*i.Q 1

我仍然是 PayPal 世界的新手,但几天前我在网上商店中集成了 PayPal Plus REST API,根据我的理解,我可以看出工作流程如下所示:

  1. 创建付款
  2. 重定向至 PayPal
  3. 付款人可以使用 PayPal 帐户付款(使用银行直接借记卡或信用卡付款,无需 PayPal 帐户)
  4. 在 PayPal 端完成该过程后,PayPal 将用户重定向回您的成功 URL。
  5. 到目前为止,用户仍然没有被收费(你没有钱)。在您(在您的成功 URL 中)执行此操作时$payment->execute($paymentExecution,$api);,您要求 Paypal 向用户收取费用。但在此之后,你就没有钱了。Paypal 首先处理收费并稍后通过 WebhookEvents 通知您。

当用户通过直接借记卡或信用卡等方式付款时,Webhook 通知(具有令人讨厌的延迟)尤其重要。处理此类付款需要几秒钟/几分钟。

该redirectUrl对于收费/执行付款是绝对必要的。这里执行成功,只是告诉用户,他完成了他的工作,你可以在这里保存/捕获 PaymentID/Transaction id 以便以后通过 WebhookEvent Listener 使用/更新。

所以我建议您仅在通过 WebhookEvent Listener 收到通知后更新数据库(付款已完成),而不是在成功的 RedirectUrl 中更新。