是IPN paypal协议实际需要的HTTP 200响应?

时间:2014-01-10 00:20:11

标签: php paypal paypal-ipn

我将在我的网站上使用php实现IPN协议。

Paypal documentation请注意该协议如下:

  1. 用户点击按钮。
  2. Paypal向我的IPN听众发布了一条IPN消息。
  3. 我的侦听器必须发送一个空的HTTP 200 OK响应。
  4. 我的听众必须将从paypal(前面的字符串)获得的消息发送回paypal。
  5. Paypal向我的听众发送“已验证”或“无效”回复。
  6. 任何人都可以解释为什么协议需要这个[3]步骤?

    为什么不能只用[4]步骤来实现它?

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

1 个答案:

答案 0 :(得分:2)

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

如果PayPal的IPN服务器从您的Web服务器获得200以外的其他内容,它将假定您的脚本失败并将该IPN放入要重新发送的队列中。它将在30秒,然后60秒,然后120秒等重新发送,直到它达到200 OK。

这就是为什么有时人们最终会有重复的IPN。例如,如果你的脚本底部有一些东西,那就失败了,但是你的所有电子邮件通知,数据库更新等在此之前确实有效,你最终会看到这些事情再次发生再次因为PayPal不断重新发送IPN。当然,这可能非常混乱,所以你要确保没有发生。

但是,同样,响应代码会自动从您的Web服务器发送回PayPal。这不是你在代码中必须要做的事情。