PayPal IPN 侦听器响应

Posted

技术标签:

【中文标题】PayPal IPN 侦听器响应【英文标题】:PayPal IPN listener response 【发布时间】:2012-05-20 11:45:39 【问题描述】:

在 PayPal 的沙盒中进行全面测试并让流程完美运行之后。我已经把它直播了,但它不工作。

我正在通过 notify_url 从 PayPal 接收 POST 数据。然后我在数据前面使用 cmd=_notify-validate 将其发送回 PayPal。

使用 PayPals 记录的代码,我正在使用它向 PayPal 发送消息。

$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

(使用此代码获取响应)

$res = stream_get_contents($fp, 1024);

我得到的回复是:

HTTP/1.1 200 OK
日期:格林威治标准时间 2012 年 5 月 11 日星期五 20:51:28
X 框架选项:SAMEORIGIN
的Set-Cookie:cwrClyrK4LoCV1fydGbAxiNL6iG = SdeBuKBN39mjr3w791CHr_MlSkoBdDmbxpQOjT_WOicyD_Sg6BYZm8koiEv2-5XBUkCjpXQwFqIxIQgIyo3e7arO8015CVw96dpne2CNjbgc1CvpDlqXn72IBWq%7cW7uYn6Za7ljG4iLtLVcyFoPk8gZD7sr_S8WjwZrZWD8UXzE7KAH3bll9TVik3wbdCFlrZG%7csxrZZHSH5SWBGfrKsIU6Dz-K43j4h37efIkWFcVJVER0ncRxNJ0wANN1Dp3pZpV2PLxC1m%7c1336769488;域=.paypal.com;路径=/;安全的; HttpOnly
设置 Cookie:cookie_check=yes; expires=周一,2022 年 5 月 9 日 20:51:28 GMT;域=.paypal.com;路径=/;安全的; HttpOnly
设置 Cookie:navcmd=_notify-validate;域=.paypal.com;路径=/;安全的; HttpOnly
设置 Cookie:navlns=0.0;到期=格林威治标准时间 2032 年 5 月 6 日星期四 20:51:28;域=.paypal.com;路径=/;安全的; HttpOnly
设置 Cookie:Apache=10.73.8.50.1336769488653443;路径=/; expires=Sun, 04-May-42 20:51:28 GMT
变化:接受编码
严格的传输安全性:max-age=14400
连接:关闭
内容类型:文本/html;字符集=UTF-8
设置 Cookie:TSe9a623=bb3c8ce40a7f3f6d1c018255c9

我没有得到的是 INVALID 或 VERIFIED 响应。这是 PayPal 的全部输出。在沙盒中,我在最后一行得到了 VERIFIED,并且没有 Set-Cookie。

我没有收到 INVALID 或 VERIFIED 响应似乎很奇怪。

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

您是否使用 fwrite/fputs 将请求写入套接字?此外,从响应的长度来看,您可能需要从流中读取超过 1024 个字节。这已经非常接近了。

您可能希望循环读取响应:

$resp = '';
while (!feof($fp)) 
    $resp .= stream_get_contents($fp, 1024);

然后您可以使用以下方法将标题与正文分开:

list($headers, $response) = explode("\r\n\r\n", 2);

【讨论】:

太棒了!!这就是问题所在。

以上是关于PayPal IPN 侦听器响应的主要内容,如果未能解决你的问题,请参考以下文章

Paypal IPN 侦听器代码挂起/无响应

如何在spring控制器中配置paypal ipn监听器响应

Paypal IPN 侦听器不返回值

C# 中的 Paypal IPN 侦听器问题

PayPal IPN 模拟器工作正常,但 IPN 不响应沙盒支付

无法在 Codeigniter 中接收 PayPal IPN 响应