繁体   English   中英

贝宝IPN无法正常工作,无法验证

[英]Paypal IPN not working, cannot verify

我正在使用沙盒测试Paypal IPN,但无法正常工作。 结果总是显示为无效,我不知道为什么。 请帮助我检查编码中是否有任何错误。

(每次我发送IPN时,IPN历史记录中都没有记录数据。)

    <?php

class Paypal_IPN
{
    /** @var string $_url The paypal url to go to through cURL;

/**
* @param string $mode 'live' or 'sandbox'
*/

public function __construct($mode = 'live')
{
    if ($mode == 'live')
    $this->_url = 'https://www.paypal.com/cgi-bin/webscr';
    else
    $this->_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';

}

public function run()
{
    $postFields = 'cmd=_notify-validate';

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

    $ch = curl_init();

    curl_setopt_array($ch, array(
    CURLOPT_URL => $this->_url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postFields
    ));

    $result = curl_exec($ch);echo curl_error($ch);
    curl_close($ch);

    $fh = fopen('result.txt', 'w');
    fwrite($fh, $result . ' -- ' . $postFields);
    fclose($fh);
    echo $result;
    }
}
?>




  <?php
require 'Paypal_IPN.php';
$paypal = new Paypal_IPN('sandbox');
$paypal->run();
?>

这是我重新填充字符串的循环。 多年来,我已经对其进行了调整,以应对怪异现象。 另外,请记住最后一个字符串必须编码为UTF8

foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    //Fixes some special characters Paypal sends
    $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}', $value);
    $req .= '&' . $key . '=' . $value;
}

暂无
暂无

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

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