Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?

Posted

技术标签:

【中文标题】Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?【英文标题】:Paypal IPN protocol: Why is the empty HTTP 200 response not send in the examples?Paypal IPN 协议:为什么示例中没有发送空的 HTTP 200 响应? 【发布时间】:2013-10-01 02:29:55 【问题描述】:

我看到了几个用 php 实现 Paypal IPN 协议的例子,比如https://github.com/paypal/ipn-code-samples/blob/master/IPN_PHP.txt。它工作正常。 然而,我有一个困扰我的疑问。

https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNIntro/ 上的文档说:

... 2. PayPal HTTP 向您的听众发送一条 IPN 消息,通知您此事件。 3. 您的侦听器返回一个空的 HTTP 200 响应。 4. 您的侦听器 HTTP 将完整的、未更改的消息发送回 PayPal。 ...

在我看到的示例中,第 3 步被跳过,第 4 步在第 2 步之后完成。 这是为什么呢?

【问题讨论】:

您可能想要检查标准示例,这些示例完全按照 paypal 开发人员文档的方式实现了 Paypal IPN 协议。你确定你指的是网上推荐的例子吗? 以下网址是Paypal推荐的github.com/paypal/ipn-code-samples/blob/master/IPN_PHP.txt,确实在paypal官方github项目中,所以我想这是推荐的例子。我看不到他们在那里执行第 2 步。此外,如果我尝试使用 IPN simulator 执行示例代码并执行 ngrep,我看不到正在发送的空 200 响应。另一方面,一切似乎都很好,因为我成功完成了所有其他步骤。 【参考方案1】:

但我在这里看到了: https://developer.paypal.com/webapps/developer/docs/classic/ipn/gs_IPN/

<?php

   // Send an empty HTTP 200 OK response to acknowledge receipt of the notification 
   header('HTTP/1.1 200 OK'); 
   ...

【讨论】:

【参考方案2】:

200 是 PHP 脚本的默认响应。你不必发送它,你只需要确保你没有发送任何其他东西!

空的也一样:如果你不做echo,那么你的回复就是空的。

【讨论】:

达人,我也在找这个问题。我对侦听器功能感到困惑,如果我将 emtpy HTTP 200 发送到贝宝。那么我将如何处理其余的事情,即将发布数据发送回贝宝以进行验证。

以上是关于Paypal IPN 协议:为啥示例中没有发送空的 HTTP 200 响应?的主要内容,如果未能解决你的问题,请参考以下文章

Paypal IPN 不适用于订阅

PayPal 没有向听众发送 IPN

如果没有消息发送回 PayPal,paypal IPN 会发生啥情况

为啥我的贝宝 ipn 验证总是返回无效?

Paypal IPN 示例代码没有 ActionResult。如果没有视图,我该如何提供网址?

PayPal:IPN/REST/Webhooks 与 Java 程序的集成