没有收到Paypal IPN Sandbox的回复

use*_*084 10 php paypal paypal-sandbox paypal-ipn

我正在将paypal结账放到我的网站上,但是我和听众一起倒下了.对于那些不熟悉Paypal IPN系统的人来说,Paypal基本上会向您的脚本发送一条有关交易的消息,您可以通过添加几个位来发回该消息.如果Paypal收到正确的答复,它将回复'已验证',如果没有,它会说'无效'.

第一位我成功了.我的代码能够从paypal接收信息,添加额外内容并将其发回.但是,Sandbox没有回复说"已验证"或"无效".我几乎从paypal网站上复制了我的代码,所以我希望这会相当简单,所以如果你花一点时间查看我的代码,也许一些新的眼睛可以找出我出错的地方.

这是代码.没什么特别的,它实际上只是获取信息,调整它,传回它并读取响应(它要么没有得到或者没有意识到它的到来)

<?php

$debug=true;

//Put together postback info

$postback = 'cmd=_notify-validate';

foreach($_POST as $key =>$value){
     $postback .= "&$key=$value";
}

// build the header string to post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($postback) . "\r\n\r\n";

$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);//open the connection

if(!$fp){ //no conn
    die();
}

//post data back
fputs($fp, $header . $postback);

while(!feof($fp)){

    $res=fgets ($fp, 1024);

    if((strcmp($res, "VERIFIED")) == 0){ //verified!
        if($debug){         
            $filename = 'debug/debug5_verified.txt'; //create a file telling me we're verified
            $filehandle=fopen($filename, 'w');
            fwrite($filehandle,'VERIFIED!');
            fclose($filehandle);
        }
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

pre*_*mer 11

切换到使用HTTPS网址,我不知道什么时候,但最近我的所有测试脚本都开始在普通的HTTP版本上失败.他们看起来正在迁移.

我使用的是相同的paypal示例代码:

    $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);    
Run Code Online (Sandbox Code Playgroud)

要么

    $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
Run Code Online (Sandbox Code Playgroud)


use*_*084 9

所以我想我找到了一个解决方案.事实证明连接到ssl:// sandbox ....没有问题,它实际上正在检索答案.代码被挂断了

while(!feof($fp)){
    $res=fgets($fp,1024);
}
Run Code Online (Sandbox Code Playgroud)

位.我所做的只是替换为:

$res=stream_get_contents($fp, 1024);
Run Code Online (Sandbox Code Playgroud)

它第一次工作!现在我可以继续我的生活.再次感谢您对此的所有帮助.