新版支付宝SDK和以往有很大的区别,但是接入流程、思路都是一样的。
这里给出新版支付宝APP sdk在异步通知时候验签失败的坑。
根据支付宝官方文档,处理好异步通知业务逻辑代码后,调试始终验签失败。 通常在这种情况下面,我们首先考虑公钥是否用错,其次是参数是不是有问题。
找错1,检查公钥
![支付宝异步通知](http://www.xieenjie.com/ueditor/php/upload/image/20180109/22.png "支付宝异步通知")
找错2,检查验签的时候,是否把post参数进行过其他加工
####坑!
结果到最后发现是支付宝异步通知给我们的参数有问题,这个坑真大。 支付宝给我们的参数`fund_bill_list`(支付金额信息)是个json格式,但是我们拿到的字符串中 引号 被转义 & quot;了,所以在验签的时候无论怎么弄都是失败
![支付宝异步通知](http://www.xieenjie.com/ueditor/php/upload/image/20180109/11.png "支付宝异步通知")
处理
```php
$_POST['fund_bill_list'] = str_replace('"', '"', $_POST['fund_bill_list']);
$aopclient->rsaCheckV1($_POST, NULL, AliPayConfig::SignType);
```
在验签rsaCheckV1函数之前,把$_POST['fund_bill_list']的引号处理一下就成功了!!!
####总结
支付宝回调异步验签失败,调试方式没有捷径,只有将通知的参数拿到,一个一个字符的检查!
作者:谢恩杰
首发链接:http://www.xieenjie.com//Article/detail/id/189.html
首发文章,著作权归作者所有,转载请注明出处!
知识改变命运,科技创造未来!谢恩杰博客分享互联网产品研发相关最新技术经验及解决方案,让更多的人少走弯路,获取到想要的东西!
投诉
我要投稿