Paypal 贝宝IPN“失败”

Paypal 贝宝IPN“失败”,paypal,eclipse-pdt,paypal-ipn,Paypal,Eclipse Pdt,Paypal Ipn,我正在想办法如何使用贝宝的IPN,但我遇到了麻烦 我希望买家在购买后被转发到成功页面,并且我希望该页面显示他们交易的详细信息。我选择IPN而不是PDT,因为我还想用他们的数据做一些其他幕后工作 不管怎样,下面是我正在使用的代码——我在沙盒模式下测试——但每次都返回FAIL $req = 'cmd=_notify-validate'; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value));

我正在想办法如何使用贝宝的IPN,但我遇到了麻烦

我希望买家在购买后被转发到成功页面,并且我希望该页面显示他们交易的详细信息。我选择IPN而不是PDT,因为我还想用他们的数据做一些其他幕后工作

不管怎样,下面是我正在使用的代码——我在沙盒模式下测试——但每次都返回FAIL

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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 ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {

// PAYMENT VALIDATED & VERIFIED!

echo "Validated!";

}

else if (strcmp ($res, "INVALID") == 0) {

// PAYMENT INVALID & INVESTIGATE MANUALY!

echo "Invalid!";

}
}
fclose ($fp);
}

我在测试环境中遇到了同样的问题,因为我的项目名称具有特殊的特征, 然后我将项目名称改为只有英文单词和数字。它很好用


但在现实环境中,我仍然发现这个问题,我阅读了,但我仍然不知道为什么我没有意识到我设置的沙箱帐户未经验证。我重新创建了预配置的沙盒帐户,然后它开始完美工作。

谢谢提示。我的商品名称都是英文字母,所以我不认为这是造成问题的原因。