Paypal IPN未发送,握手未经验证。请检查您的信息

时间:2015-11-27 18:48:13

标签: php ssl paypal ssl-certificate paypal-ipn

经过搜索和google搜索后,使用https(自签名证书)启用我的wamp安装[我按照本指南click here] 我还为域名激活了dyn-dns免费服务。 但是我一直试着测试ipn模拟器,总是得到相同的消息。 另外,如果我测试在线网站IPN无法发送请求。

签署证书是强制性的吗? ipn接受的网址格式是什么? 它目前正在运作? 这个错误消息的原因是什么?

1 个答案:

答案 0 :(得分:0)

试一试:

$req = 'cmd=_notify-validate';

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

$res = '';
$ch = curl_init(paypal_url());
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);//Should be 1 if you want to verify peer
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);//Should be 2 if you want to verify host
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));   
$res = curl_exec($ch);
curl_close($ch);


    $fname = 'ipn_intial_' . date('Y.m.d-h.i.s', time()) . '.txt';
    file_put_contents('log/' . $fname, $req);

    $fname = 'ipn_intial_result_' . date('Y.m.d-h.i.s', time()) . '.txt';
    file_put_contents('log/' . $fname, $res);

if(strcmp($res, "VERIFIED") == 0) 
{
    ....
}

如果paypal请求甚至没有发送到您的服务器,那么您可能会遇到防火墙问题。