首先检查自己的配置的支付宝公钥和应用私钥是否正确,如果确定没有问题,但是仍然失败!
那就是json转义的问题,下面是解决办法,用下面函数把$_POST处理后,再传进去验签就行了
function removeEscapesFromArray($array) {
$result = array();
foreach ($array as $key => $value) {
if (is_string($value)) {
$result[$key] = stripslashes($value);
} elseif (is_array($value)) {
$result[$key] = removeEscapesFromArray($value);
} else {
$result[$key] = $value;
}
}
return $result;
}
Factory::payment()->common()->verifyNotify(removeEscapesFromArray($_POST))
反正支付宝的 Easy sdk 官方已经好几年没有维护了,不知道官方什么时候可以修复这个问题!
我更推荐大家使用 Omnipay-Alipay:https://github.com/lokielse/omnipay-alipay