支付宝在线支付demo异步通知接口校验失败

距离去年11月收到支付宝要求升级在线支付加密方式的通知已经2个多月了,最近抽空升级接口,发现官方demo中存在一个关于异步通知校验的坑,记录下来方便查阅!

测试环境,支付宝沙箱环境+PHP7.4+Nginx

问题所在返回测试数据:

'fund_bill_list' => '[{//"amount//"://"2.00//",//"fundChannel//"://"ALIPAYACCOUNT//"}]'

很明显,这段数据中存在转义字符,并且转义字符参与了支付宝的异步通知签名验证。

解决办法:使用PHP的字符替换函数str_replace替换成空,或者使用PHP的stripslashes函数进行反引用。需要注意的是stripslashes只能去除一层转义符号,这里存在两层,因此需要调用两次。

支付宝在线支付demo异步通知接口校验失败

支付宝在线支付demo异步通知接口校验失败

简单办法直接替换

$_POST['fund_bill_list'] = str_replace('//', '', $_POST['fund_bill_list']);

将上面代码加入支付宝的异步通知获取post参数后面即可修复问题!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242539.html

(0)
上一篇 2022年4月7日 18:44
下一篇 2022年4月7日

相关推荐

发表回复

登录后才能评论