这个问题遇到好几次了,之前解决过但是时间一长就忘记了,结果今天又因为这个大坑头疼了一整天,所以这次必须记录下来。
在确保各项信息无误的情况下仍然验签失败,很有可能引号被转义等奇葩问题导致的,记录一下我的解决方案:
验签方法verify()
在目录:/vendor/yansongda/pay/src/Gateways/Alipay.php里,方法里有一句
if (isset($data['fund_bill_list'])) {
$data['fund_bill_list'] = htmlspecialchars_decode($data['fund_bill_list']);
}
在这里打印$data['fund_bill_list']
发现里面的引号被转义了。
解决方法:使用stripslashes()
方法移除转义:
if (isset($data['fund_bill_list'])) {
$data['fund_bill_list'] = stripslashes( htmlspecialchars_decode($data['fund_bill_list']) );
}