2014-01-10 35 views
3

我打算在我的网站上使用php实现IPN协议。是IPN paypal协议实际需要的HTTP 200响应吗?

Paypal documentation请注意,协议变为如下:

  1. 用户点击按钮。
  2. PayPal发布我的IPN监听器IPN消息。
  3. 我的监听器必须发送一个空的HTTP 200 OK响应。
  4. 我的听众必须发送从贝宝取出的消息(与前面的字符串)回PayPal。
  5. 贝宝向我的听众发送“VERIFIED”或“INVALID”响应。

谁能解释一下为什么协议要求这个步骤?

为什么不能只是用[4]次步骤实现?

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

回答

2

200 OK应答会只要你的IPN脚本成功完成自动发生。这让贝宝服务器确实完成了。

如果PayPal的IPN服务器获取超过200 OK从Web服务器返回其他的东西它会假设你的脚本失败,将地方IPN在阙重新发送。它将在30秒后,然后60秒,然后120秒等重新发送,直到它达到200 OK。

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

此外,虽然,响应代码被从Web服务器自动发送回PayPal。这不是你在你的代码中必须做的事情。

+0

你确定我不需要手动发送吗?因为他们在这里手动执行:https://developer.paypal.com/docs/classic/ipn/gs_IPN/(前3行代码) – user1028741

+0

谢谢你的回答 – user1028741

+0

哈,他们在那里做的很有趣。他们只是这样做,试图阻止这么多失败的IPN外出。总的来说,如果它失败了,他们会重新发送它。这将是一个小窍门,让它始终认为它的工作,即使它实际上在该行后面失败。这实际上是一个马虎的做法。我完全是这样说出来的。 –