微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Paypal IPN:如果我的听众在收到 IPN 后没有发回确认会怎样?

如何解决Paypal IPN:如果我的听众在收到 IPN 后没有发回确认会怎样?

这可能不是最佳实践,但在我的一个简单项目中,我一直在使用以下链接,在客户填写我的 Google 表单后发送给他们的电子邮件

https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&no_shipping=1&tax=0&amount=60&business=my@email.com&currency_code=USD&notify_url=https://example.com/myListener.php&item_name=dummy

在我的监听器中,我只是处理来自 IPN 的 POST 数据并将其发布到一个简单的谷歌表中,以便我知道我的客户是否已付款。

它一直工作正常(已记录数百笔交易,没有任何错误),直到最近我在 Paypal 的 IPN instruction page

enter image description here

虽然它说我的听众必须回复每条 IPN 消息,但我从未这样做过,我也认为我从未收到任何重新发送的消息。讽刺的是,今天刚写这篇文章的时候,我注意到最近的一笔交易在我的谷歌表中被报告了两次,这是唯一的异常记录。然后我发送了测试付款,但这次没有被报告两次。

我进入Pay​​pal账户查看IPN历史,该笔交易的“重试次数”为“1”,如下图:

enter image description here

所以这解释了为什么我的 Google Sheet 显示两个相同的交易。并且它部分匹配 IPN 说明页面中描述的行为,尽管只有 1 次重试,与“继续重试直到我的听众响应”相反。

有人知道为什么实际行为与他们在自己页面上所说的如此不同吗?

另外,由于我的听众实际上完美地工作,我现在不想碰它。但是,如果我保持原样,会不会导致潜在的问题?

解决方法

您的 IPN 侦听器必须在 PayPal 向其发送消息时回复 HTTP 2xx 成功状态,否则 PayPal 将不断重试(最多约 20 次),直到它这样做为止。

所以如果听众回复例如HTTP 4xx、5xx,或者根本不回复或无法连接 - PayPal 将继续重试。

我不确定这里的具体混淆是什么;行为如所述。您的屏幕截图显示最后一个状态为 200。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。