如果响应失败,PayPal如何获得回拨

时间:2013-04-04 03:37:48

标签: paypal postback

如果在买家点击“取消并返回xxx商店”的情况下,我可以获得回复参数吗?下面的代码是我在palpal webscr过程中点击取消后我试图回发params回显的方式:

$req = 'cmd=_notify-synch';
$pp_hostname = "www.sandbox.paypal.com";
$tx_token = $_GET['tx'];
$auth_token = "Ti-bfX-sv-zNDXZS";
$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", $res);
    $keyarray = array();
    if(strcmp($lines[0], "SUCCESS") == 0){

        for($i=1; $i<count($lines);$i++){
        list($key,$val) = explode("=", $lines[$i]);
        $keyarray[urldecode($key)] = urldecode($val);
        }

   //process payment 

}else if(strcmp($lines[0], "FAIL") == 0){

    $lines = explode("\n", $res);
    $keyarray = array();

    for($i=1; $i<count($lines);$i++){
        list($key,$val) = explode("=", $lines[$i]);
        $keyarray[urldecode($key)] = urldecode($val);
    }

    // echo post back params if FAIL
    echo "<p><h3>Transaction ".$keyarray['payment_status']."!</h3></p>";



}

}

如果回复FAIL,是否有可能获得回复参数?如果买家取消交易,我需要在db中处理一些数据。

感谢。

2 个答案:

答案 0 :(得分:0)

PayPal不会将任何参数传回给您取消,但您可以将自己的参数传回。您可以动态填充取消URL,以帮助您识别用户或订单,然后在取消URL上读取该URL。例如,您可以将取消网址动态填充到https://www.mysite.com/cancel.php?orderid=483723之类的内容,然后根据订单ID或您传递回取消网址的内容,在系统中自行查找。< / p>

答案 1 :(得分:0)

paypal提供有关交易信息的所有信息,以获取更多信息,请查看以下链接信息

REASON_CODE

https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/