php - IPN Paypal 协议(protocol)实际上需要 HTTP 200 响应吗?

标签 php paypal paypal-ipn

我将使用 php 在我的网站中实现 IPN 协议(protocol)。

Paypal documentation请注意协议(protocol)如下:

  1. 用户点击按钮。
  2. Paypal 向我的 IPN 监听器发布一条 IPN 消息。
  3. 我的监听器必须发送一个空的 HTTP 200 OK 响应。
  4. 我的监听器必须将从 paypal 获得的消息(带有前面的字符串)发送回 paypal。
  5. Paypal 向我的听众发送“已验证”或“无效”响应。

谁能解释为什么协议(protocol)要求这个 [3] 步骤?

为什么光是第[4]步就完成不了呢?

此外,我注意到在 another 中在 paypal 文档的章节中,他们自己跳过了这个 [3]rd 步骤(参见他们的实现)。所以我想知道,真的有必要吗??

最佳答案

只要您的 IPN 脚本成功完成,200 OK 响应就会自动发生。这让我们的 PayPal 服务器确实完成了。

如果 PayPal 的 IPN 服务器从您的 Web 服务器返回的不是 200 OK,它将假定您的脚本失败并将该 IPN 放入一个队列中以重新发送。它将在 30 秒、60 秒、120 秒等后重新发送,直到获得 200 OK。

这就是为什么有时人们会得到重复的 IPN。例如,如果您在脚本的最底部有一些东西失败了,但是您所有的电子邮件通知、数据库更新等实际上在那之前都起作用了,您最终会看到那些事情再次发生又是因为 PayPal 不断重新发送 IPN。当然,这可能会非常困惑,因此您要确保不会发生这种情况。

不过,响应代码会自动从您的网络服务器发送回 PayPal。这不是您实际上必须在代码中执行的操作。

关于php - IPN Paypal 协议(protocol)实际上需要 HTTP 200 响应吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033987/

相关文章:

php - 应该如何在 PHP 中合并数组的 2 个元素?

php - mysqli_commit 失败会自动回滚吗?

php :Fatal error: Call to undefined function sqlsrv_connect()

paypal - 如何将网站中的用户名链接到 PayPal 信息电子邮件?

Paypal IPN : Why do I have to verify every time a payment is made?

php - 使用 php 执行查询

php - Paypal:处理多币种支付

php - 如何使网页只能从某些链接访问

Paypal recurring_payment_skipped 条件

php - 用于购物车的 Paypal IPN 处理程序