我们有一款使用PayPal作为支付方式之一的制作游戏。在某些情况下,我们永远不会收到webhook通知。
这是正在发生的序列。有时我们从这个序列中得到webhook,而其他时候我们没有。在服务器上,我们使用Java API。所有这些都是生产(而非SANDBOX)PayPal服务器的行为。
- 用户选择产品后,它会调用我们的服务器,该服务器通过Payment.create()创建Payment对象。此时状态为"已创建",我们将用户重定向到链接中返回的approval_url
- 用户批准付款并将其发送回我们的服务器。我们通过payment.get()获取付款,它是成功的,状态为"已创建"
- 我们使用PaymentExecution执行付款。这将返回更新状态为"已批准"的付款
- 然后,我们等待WebHook通知我们付款已完成。有时,这个webhook永远不会发送,导致购买不完整。检查PayPal控制台,即使付款显示为已完成,也不存在付款的webhook事件
这里的问题是:
- 这是正确的顺序吗?还是什么东西不见了
- 当用户从PayPal返回而不是仍然"创建"时,付款不应该被"批准"吗
- 成功执行后,付款不应该是"已完成"还是"正在进行"
- 处理webhook从未到达的情况的正确方法是什么?继续轮询付款,直到状态更新
我认为您的序列没有任何问题。您也可以参考此处的步骤作为示例-https://developer.paypal.com/docs/integration/web/accept-paypal-payment/
关于Webhook,你提到有时你会得到Webhook而只有一些时候你没有。你能为你没有看到任何Webhook的调用提供一个关联或调试id吗?我们会麻烦射击然后回来吗?