贝宝自动返回脚本始终被调用两次

时间:2019-05-06 09:25:09

标签: php paypal paypal-sandbox

我目前正在使用PayPal付款。直到最近,一切都进展顺利。我有一个订阅按钮。我已经设置了返回URL来处理从事务中获取数据,然后将其邮寄给用户。我需要的所有数据都已成功检索,但是问题是我的函数在返回时运行两次。我收到了本应收到两次的电子邮件。几周前,它的工作情况还不错,所以现在我想知道为什么突然出现了这个错误。

我在这里读过:Paypal adaptive payment return url is calling twice,可能是因为我还没有敲击“ click here”按钮,甚至还不到10秒。我已经尝试单击而不单击它,但仍然得到相同的结果。

我还读到这可能是因为在付款后开始订阅时会调用它。知道我该如何处理吗?

$pp_hostname = "www.sandbox.paypal.com"; // Change to www.sandbox.paypal.com to test against sandbox
$req = 'cmd=_notify-synch';

$tx_token = $_GET['tx'];
$auth_token = "my_token_from_paypal";
$req .= "&tx=$tx_token&at=$auth_token";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://$pp_hostname/cgi-bin/webscr");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
//set cacert.pem verisign certificate path in curl using 'CURLOPT_CAINFO' field here,
//if your server does not bundled with default verisign certificates.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname"));
$res = curl_exec($ch);
curl_close($ch);
if(!$res){
    //HTTP ERROR
}else{
     // parse the data
    $lines = explode("\n", trim($res));
    $keyarray = array();
    if (strcmp ($lines[0], "SUCCESS") == 0) 
    {
        for ($i = 1; $i < count($lines); $i++) {
            $temp = explode("=", $lines[$i],2);
            $keyarray[urldecode($temp[0])] = urldecode($temp[1]);
         }

         // code for mail handling
    }
    else if (strcmp ($lines[0], "FAIL") == 0) {
        echo 'there has been an error';
    }
}

0 个答案:

没有答案