Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PayPal IPN突然收到垃圾_Php_Paypal Ipn - Fatal编程技术网

Php PayPal IPN突然收到垃圾

Php PayPal IPN突然收到垃圾,php,paypal-ipn,Php,Paypal Ipn,我有一个PayPal IPN处理程序,已经工作了5年多(随着时间的推移有各种更新)。昨天,我突然停止接收正常的“&”和“=”分隔的数据字符串,并开始获取~6个非ascii字符 当我记录从PayPal直接输入的数据时,在任何确认、解析、处理之前,我通常会得到 [2016-07-13 04:46 UTC]原始数据处理金额=0.00,折扣=0.00,保险金额=0.00,付款人id=等等 现在,我才明白 [2016-07-13 04:37 UTC]原始数据- 它从来不是同一组字符,但总是垃圾(并且只有大

我有一个PayPal IPN处理程序,已经工作了5年多(随着时间的推移有各种更新)。昨天,我突然停止接收正常的“&”和“=”分隔的数据字符串,并开始获取~6个非ascii字符

当我记录从PayPal直接输入的数据时,在任何确认、解析、处理之前,我通常会得到

[2016-07-13 04:46 UTC]原始数据处理金额=0.00,折扣=0.00,保险金额=0.00,付款人id=等等

现在,我才明白

[2016-07-13 04:37 UTC]原始数据-

它从来不是同一组字符,但总是垃圾(并且只有大约6个字符)

我已经检查了我贝宝帐户中的编码,并将其设置为UTF-8。没有帮助。 我使用了PayPal IPN模拟器,使用了完全相同的代码(地址改为sandbox),它工作得非常好。 我尝试了贝宝IPN历史中的3个独立的IPN,包括1个以前没有失败的IPN。它们都不起作用,都会产生相同的垃圾数据。 我已经尝试过直接以$\u POST的形式处理来自PayPal的输入,并使用file\u get\u contents('php://input'). 没有任何区别;所有的东西都在模拟器中工作,只是现场的垃圾

这是我的侦听器代码。这与你在网上其他地方看到的例子几乎相同

<?php 
error_reporting(E_ALL ^ E_NOTICE); 

define("LOG_FILE", "./ipn.log");

$raw_post_data = file_get_contents('php://input');
error_log(date('[Y-m-d H:i e] '). "Raw data " . $raw_post_data . PHP_EOL, 3, LOG_FILE);
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) 
{
    $keyval = explode ('=', $keyval);
    if (count($keyval) == 2)
        $myPost[$keyval[0]] = urldecode($keyval[1]);
}
// Read the post from PayPal and add 'cmd' 
$req = 'cmd=_notify-validate';
foreach ($myPost as $key => $value) 
{
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
        $value = urlencode(stripslashes($value));
    } else {
        $value = urlencode($value);
    }
    $req .= "&$key=$value";
}

我联系了PayPal技术支持,但他们从未解决过这个问题。我敢肯定,在这一点上,这是一个问题,对他们来说,唯一失败的事情是IPN重新发送。拥有它是有用的,但没有它我可以活下去

我联系了PayPal技术支持,但他们从未解决过这个问题。我敢肯定,在这一点上,这是一个问题,对他们来说,唯一失败的事情是IPN重新发送。拥有它是有用的,但没有它我可以活下去

我想知道PayPal是否正在强制Tls12。我通过登录PayPal、访问IPN历史页面并重新发送以前的IPN,确定只有在重新发送IPN时才会出现无效数据。从沙箱发送的IPN和所有原始IPN都被正确发送。我尝试的每次重发都会导致无效数据。在我看来,很明显问题出在贝宝身上。不管是不是我的帐户,我不知道。我想知道PayPal现在是否正在强制Tls12。我通过登录PayPal、访问IPN历史页面并重新发送以前的IPN,确定只有在重新发送IPN时才会出现无效数据。从沙箱发送的IPN和所有原始IPN都被正确发送。我尝试的每次重发都会导致无效数据。在我看来,很明显问题出在贝宝身上。不管是不是我的账户,我都不知道。