我无法让脚本从PayPal返回正确的值。我正在尝试验证付款,但我似乎无法从PayPal(实时或在沙箱中)获得VERIFIED
响应。这是我的脚本的内容:
$verify_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&' . http_build_query( $_POST );
$response = file_get_contents( $verify_url );
我不知道如何检查添加到查询中的$ _POST数据是否有效,所以我不知道出了什么问题。我已经尝试了PayPal GitHub存储库中的代码并收到相同的结果(它似乎访问了相同的地址)。我也试过
$vars = array();
$vars[] = 'cmd=_notify-validate';
foreach ($_POST as $key=>$field) {
if(!empty($field))
$vars[] = "$key=".urlencode(stripslashes($field));
}
$verify_url2 = 'https://www.sandbox.paypal.com/cgi-bin/webscr?'.implode('&',$vars);
$response2 = file_get_contents( $verify_url2 );
和
$raw_post_data = file_get_contents('php://input');
$verify_url3 = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&' . $raw_post_data;
$response3 = file_get_contents( $verify_url3 );
似乎从同一结果网址收到相同的回复。有什么地方我可以测试IPN消息,以确保我至少得到正确的变量?我刚刚达到了测试这个脚本所能做的极限,并且在2天内没有取得任何进展。
此外,PayPal中是否有任何特定设置我可能需要设置才能使此脚本按预期工作?我从来没有为其他网站设置任何内容,但我确实阅读了一些帖子,其中提到为IPN消息设置字符编码(我已将其设置为UTF-8)。
感谢。