【问题标题】:Paypal IPN getting delayed by hoursPaypal IPN 延迟数小时
【发布时间】:2016-05-02 23:20:13
【问题描述】:

我正在使用贝宝自适应付款通过贝宝进行交易。虽然很少有交易需要超过 6 小时才能收到 IPN。

我浏览了论坛帖子和他们的文档,我通过了 - https://developer.paypal.com/webapps/developer/docs/classic/products/instant-payment-notification/

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

回调时间超过 6 小时太长了。有什么建议吗?

【问题讨论】:

  • 您是否检查过您的 IPN 历史记录和服务器日志,以确保您的 IPN 脚本中没有发生错误,导致返回 PayPal 时响应错误?如果您的 IPN URL 有很多错误,它们会将您排在缓慢的队列中,这样您就不会占用太多资源。
  • 是的,我检查了 IPN 历史记录和服务器日志,它们看起来还不错。它返回状态码 200。
  • 我猜他们可能会被推迟,但这么长的时间很少见。我最近没有注意到我的 IPN 出现这种延迟。
  • 同意,这发生在 10 笔交易中有 2 笔。
  • 没有 SLA。我已经看到他们推迟了几天。询问贝宝。

标签: paypal paypal-ipn paypal-adaptive-payments


【解决方案1】:

我已经构建了几个自定义推车。平均而言,我看到 PayPal IPN 最长会在 2 分钟内返回,而且经常性付款通常比单次付款需要更长的时间,因为它们在初始设置时会发送两条 IPN 消息,而不仅仅是一条。我通常采用“自定义”属性并放置一个我永久保存的唯一标识符。所以,即使我可能会看到一个初始 IPN 是通过定期付款进入的,我还是会等待那个说 txn_typesubscr_payment 并且 payment_statusCompleted 的。除非您看到第二条消息,否则您不能真正相信订阅付款已被支付。如果是单笔付款,那么我会寻找txn_typeweb_acceptpayment_statusCompleted

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

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 2012-05-29
    • 1970-01-01
    • 2021-05-16
    • 2015-07-12
    • 2015-04-07
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多