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]原始数据- 它从来不是同一组字符,但总是垃圾(并且只有大约6个字符) 我已经检查了我贝宝帐户中的编码,并将其设置为UTF-8。没有帮助。 我使用了PayPal IPN模拟器,使用了完全相同的代码(地址改为sandbox),它工作得非常好。 我尝试了贝宝IPN历史中的3个独立的IPN,包括1个以前没有失败的IPN。它们都不起作用,都会产生相同的垃圾数据。 我已经尝试过直接以$\u POST的形式处理来自PayPal的输入,并使用file\u get\u contents('php://input'). 没有任何区别;所有的东西都在模拟器中工作,只是现场的垃圾 这是我的侦听器代码。这与你在网上其他地方看到的例子几乎相同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]原始数据- 它从来不是同一组字符,但总是垃圾(并且只有大
<?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都被正确发送。我尝试的每次重发都会导致无效数据。在我看来,很明显问题出在贝宝身上。不管是不是我的账户,我都不知道。