繁体   English   中英

贝宝ipn监听器错误

[英]paypal ipn listener errors

我正在为Paypal自适应支付实现IPN侦听器,我从此处下载了示例代码:

https://cms.paypal.com/cms_content/IT/it_IT/files/developer/IPN_PHP_41.txt

然后我进行了一个事务(使用沙箱),但是我认为该示例是错误的,因为代码在我的error_log文件中返回了一些错误:

[16-Jun-2013 16:11:34 UTC] PHP Warning:  stripslashes() expects parameter 1 to be string, array given in /var/www/actions/IPNListener.php on line 7
[16-Jun-2013 16:11:34 UTC] PHP Notice:  Undefined variable: header in /var/www/actions/IPNListener.php on line 12
[16-Jun-2013 16:11:34 UTC] PHP Notice:  Undefined index: item_name in /var/www/actions/IPNListener.php on line 18

未定义索引不仅是“ item_name”,而且还包括所有索引!!!!

交易正常进行,交易完成后贝宝自动调用IPN ...但是贝宝示例代码根本不起作用! 你知道怎么解决吗?

试试这个

<?php
//Build the data to post back to Paypal
$postback = 'cmd=_notify-validate'; 

// go through each of the posted vars and add them to the postback variable
foreach ($_POST as $key => $value) {
   $value = urlencode(stripslashes($value));
   $postback .= "&$key=$value";
}

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

// Send to paypal or the sandbox depending on whether you're live or developing
// comment out one of the following lines
//$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);//open the connection
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
// or use port 443 for an SSL connection
//$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

    if (!$fp) 
    {
        // HTTP ERROR Failed to connect
        //error handling
    }
    else // if we've connected OK
    {
        fputs ($fp, $header . $postback);//post the data back
        while (!feof($fp)) 
        {
            $response = fgets ($fp, 1024);

            if (strcmp ($response, "VERIFIED") == 0) //It's verified
            {
                //do something
            }
            else if (strcmp ($response, "INVALID") == 0) 
            { 
                //the Paypal response is INVALID, not VERIFIED
                // This implies something is wrong
            }
        } //end of while
        fclose ($fp);
    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM