最近一直在做支付宝手机支付接口,感觉遇到的各种坑层出不穷,现在做个简单的整理,以免重走弯路,也给能看到这篇文章的小伙伴们点帮助。
支付宝集成过程中一直遇到“验签”错误,只好多读几遍文档一点点的查看错误。
验签错误肯定要从签名上去分析原因,首先怀疑公钥和私钥的问题,后来按照文档的说明用openssl生成了公钥和密钥。结果还是验签错误。
使用的是omnipay-alipay 包来完成的支付宝集成,可以在github上自行搜索。
后来使用laravel框架中的DD()打印一步步分析问题,看到公钥和私钥的后面都有/n的出现,可是这是pem文档中的格式,没有更改,在支付宝中获得支付宝公钥的时候也没有报错,觉得出现问题的可能性不大。
重点来了。。。。
开始借助伟大的搜索引擎
发现这篇文章
https://openclub.alipay.com/read.php?tid=1598&fid=46
中的链接指向的https://openclub.alipay.com/read.php?tid=1495&fid=25。然后自己看了下自己的接口网关是https://openapi.alipay.com/gateway.do;
心里面一万头草泥马飘过。 我的密钥明明是在文档https://docs.open.alipay.com/common/104740 mapi网关密钥那生成的,不在一个频道上啊。
后来百度下mapi网关产品和开放平台产品区别,发现了这样一篇文章https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106514#s1
手机网站支付老版本和手机网站支付新版本接口对比,问题显而易见了,用了新手机支付的网关,用了老手机支付的密钥,自然验签失败了。