我们有一个使用 PayPal 作为付款方式之一的制作游戏。在某些情况下,我们永远不会收到 webhook 通知。
这是正在发生的顺序。有时我们会从这个序列中获得 webhook,而其他时候我们不会。在服务器上,我们使用 Java API。所有这些都是生产(不是沙盒)贝宝服务器的行为。
- 用户选择产品后,它会调用我们的服务器,该服务器通过 Payment.create() 创建 Payment 对象。此时状态为“已创建”,我们将用户重定向到链接中返回的approval_url。
- 用户批准付款并被发送回我们的服务器。我们通过 Payment.get() 获取付款,这是成功的,并且状态为“已创建”。
- 我们使用 PaymentExecution 执行付款。这将返回更新状态为“已批准”的付款。
- 然后我们等待 WebHook 通知我们付款已完成。有时,从不发送此 webhook,导致购买不完整。检查 PayPal 控制台,付款不存在 webhook 事件,即使付款显示为已完成。
这里的问题是:
- 这是正确的顺序吗?还是缺少什么?
- 当用户从 PayPal 返回而不是仍然“创建”时,付款不应该被“批准”吗?
- 成功执行后,付款不应该是“完成”还是“进行中”?
- 处理 webhook 永远不会到达的情况的正确方法是什么?继续轮询付款直到状态更新?