Paypal IPN被延迟数小时

use*_*624 5 paypal paypal-ipn paypal-adaptive-payments

我正在使用贝宝自适应支付来通过贝宝进行交易。尽管很少有交易花费超过6个小时才能获得IPN。

我浏览过论坛帖子及其文档,也浏览过-https://developer.paypal.com/webapps/developer/docs/classic/products/instant-payment-notification/

“由于IPN不是实时服务,因此您的结帐流程不应在允许其完成之前等待IPN消息。如果结帐流程依赖于接收IPN消息,则处理可能会由于系统负载或其他原因而延迟。您应该配置您的结帐流程以处理可能的延迟。”

回调花费了6个多小时,实在太多了。有什么建议么 ?

Vol*_*ike 2

我已经制作了几辆定制手推车。平均而言,我看到 PayPal IPN 最长会在 2 分钟内返回,并且通常定期付款比单次付款需要更长的时间,因为它们在初始设置时发送两条 IPN 消息,而不仅仅是一条。我通常采用“自定义”属性并放置一个永久 cookie 的唯一标识符。因此,即使我可能会在定期付款中看到初始 IPN,我也会等待那个说“是”txn_typesubscr_payment人。除非您看到第二条消息,否则您不能真正相信订阅付款已支付。如果是单次付款,那么我会寻找to be和to 。payment_statusCompletedtxn_typeweb_acceptpayment_statusCompleted

我处理事情的方式是使用表单按钮技术将客户重定向到 PayPal 进行购买。客户付款,然后被重定向(感谢我最初创建的表单隐藏变量)回到我指定的自定义购物车 URL。我将该 URL 称为付款确认脚本。在通过 PayPal 确认付款时,我会显示一条带有进度条的消息,请稍候。我将它们放在那里 10 秒钟,然后重定向到收据。我在收据上检查数据库,看看我的 IPN 脚本是否已经处理了这个订单。如果没有,我会再次将它们重定向回付款确认脚本,再延迟 10 秒的进度条。我的收据使用会话 cookie 来确保我不会将它们多次发送到付款确认脚本的循环中。因此,客户又等待 10 秒,然后返回到收据页面,我再次进行测试,读取我保存的“自定义”属性上的永久 cookie,而不是来自我保存的 IPN 的“自定义”属性。用作数据库中的订单键。通常在第一个或第二个 10 秒延迟内,IPN 就会进入,我可以继续。但是,如果 IPN 仍未进入,那么我会重定向到一条友好的错误消息,指出无法确认他们的付款,并致电我们的呼叫中心来解决该问题。然后,我们的呼叫中心技术人员会看到 PayPal 中的延迟问题,退回其他交易,并通过电话手动向客户销售。