IPN延迟和SAAS应用

IPN delay and SAAS application

我有一个 SAAS 网络应用程序,需要支付订阅费才能使用。如果订阅有效,一切正常,否则应用程序将进入只读模式,直到客户续订订阅。我已经使用 PayPal API.

开发了支付流程

问题是 PayPal 文档是这样说的:

"Although PayPal usually processes IPN messages immediately, IPN is not synchronized with actions on your website. Internet connectivity is not always 100% reliable and IPN messages can be lost or delayed. The IPN service automatically resends messages until the listener acknowledges them. The service resends messages for up to 4 days.
Because IPN is not a real-time service, your checkout flow should not wait for the IPN message before it is allowed to complete. If the checkout flow is dependent on receiving an IPN message, processing can be delayed by system load or other reasons. You should configure your checkout flow to handle a possible delay."

不幸的是,这正是我的情况:当客户续订订阅时,我需要立即激活应用程序,所以我将所有逻辑都放在 "notify callback" 我必须创建订单的地方,发送一封确认电子邮件,更新一些会话变量...但我如果 PayPal IPN 有延迟,这是一个问题! 这几天我在沙盒模式下做了一些测试,在一些情况下,我什至在成功支付后 4 小时就得到了 IPN 的答复!这对我的应用来说是不可接受的!

最后一个问题:什么是适合我的情况的最佳解决方案?将应用程序激活从 "notify callback" 移动到 "success callback" 是否有意义?可能有问题?

谢谢

不要为此使用 IPN;它不太合适,而且不是为了插入同步用户体验流程而设计的。它作为一种启动离线履行的方式效果很好,但如果客户正在积极等待访问,可能会延迟他们。

您没有具体说明您使用的是哪种 PayPal 产品,但每种产品都应提供一种方式来立即向您反馈付款已完成。例如,使用 Express Checkout 或任何基于 API 的支付,您可以在收到成功的 API 响应时采取行动(activate/re-activate 订阅)(DoEC API 在这种情况下快速结账)。

使用 web-only/non-API 产品,您可以在客户重定向到您的 return_url 时采取行动,如果需要,使用 PDT 安全地获取有关交易的信息(它可以包括 IPN 样式的密钥您 post 返回 PayPal 进行验证,就像您使用 IPN 所做的那样)。

如果您担心有人在浏览器重定向到您之前关闭浏览器的极端情况,或者其他某种断开连接或编程错误,您可以检查& activate/fulfill 收到 IPN 以捕获任何后果。因此,所有完成正常支付流程的客户都会立即被激活;如果他们做了一些奇怪的事情(或者你的代码被破坏了,或者其他什么),那么激活仍然会发生,尽管可能会延迟几秒钟或几分钟。