贝宝:与ipn响应的问题
问题描述:
我很容易从PayPal使用IPN获得验证答案 我通过notify_url从PayPal接收POST数据。然后我用cmd = _notify-验证数据的正面将它发回PayPal。贝宝:与ipn响应的问题
使用PayPals记录代码,我用这将消息发送到PayPal
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n"; // HTTP POST request
$header.= "Content-Type: application/x-www-form-urlencoded\r\n";
$header.= "Host: www.sandbox.paypal.com\r\n";
$header.= "Content-Length: " . strlen($req) . "\r\n";
$header.= "Connection: Close\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
然后我用这个
if (!$fp) {
// HTTP ERROR;
} else {
var_dump(fputs($fp, $header . $req));
while (!feof($fp)) {
$res = stream_get_contents($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
//Transaction verified
}
}
}
其实我有两个$ RES(由于同时循环)。第一似乎并不感兴趣,第二是
55 GMT
Connection: close
Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D880%26app%3Dslingshot%26TIME%3D1273590100; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT
Set-Cookie: Apache=10.72.128.11.1416751435364358; path=/; expires=Tue, 15-Nov-44 14:03:55 GMT
Vary: Accept-Encoding
Strict-Transport-Security: max-age=14400
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
8
VERIFIED
0
看来,第一部分是头和第二部分(8 VERIFIED 0)是真正的回应,但为什么我有这个0 8?通常人们使用
if (strcmp ($res, "VERIFIED") == 0) {
要检查$水库进行验证。所以我可以认为响应“已验证”,使用类似
if(strstr($res,'VERIFIED')) {
一些帮助吗?!?
谢谢
答
我有和你一样的问题。我使用strstr($ res,'VERIFIED')来检查通知是否被验证。
答
我有完全相同的问题,并能以相同的方式解决它。如果我使用贝宝的示例代码,我根本得不到答复。
但我遇到了一些在这里使用cURL工作的东西: https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php。
我需要使用这些说明来安装卷曲: curl_init() function not working
还可以下载和使用该脚本评论中发现的cacert.pem。
我仍然不确定为什么stream_get_contents()返回标头。如果你已经知道了,你能更新这个吗?