WordPress支付宝异步通知验签失败
如果支付宝异步验签一直返回false,很有可能是你的接收数据,被WordPress系统代码转义了。
可以在异步通知代码处打印收到的数据
var_dump($_POST);
exit();
上面接收的数据就是被WordPress系统方法转义了,正常的数据结构如下:
那么WordPress系统是在哪里转义了数据了?
wp_magic_quotes方法,在文件:wp-includes/load.php中调用
接收到的数据被修改了,当然验签就失败了,WordPress系统解决办法如下:
$_POST = stripslashes_data($_POST);
function stripslashes_data($input_array)
{
if (empty($input_array) || !is_array($input_array)) {
return $input_array;
}
foreach ($input_array as $k => $v) {
if (is_array($v)) {
$input_array[$k] = stripslashes_data($v);
} elseif (is_string($v)) {
$input_array[$k] = stripslashes($v);
}
}
return $input_array;
}