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 侦听器响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在spring控制器中配置paypal ipn监听器响应