支付宝支付接入
参考链接
准备
接入
注意问题
「交易订单处理失败 请稍后再试 ali64」
如何排查并解决这个问题呢?这个问题,就好比我们在没有足够的错误信息的情境下对BUG进行调试;应该用控制变量法。
- 运行 DEMO 程序,输入商户号、私钥等信息将其跑通,并记录下签名。
- 我们一般在服务端做签名,那么使用与 DEMO 支付请求同样的参数进行签名,将此签名与 DEMO 中得到的签名进行比较,就能分析这个问题了。
在我接入的时候,对比了两个签名,发现服务端签名的字段并没有做 urlencode(对比之下现象:大部分字符相同,少量字符不同),于是多做一次转码也就可以解决问题了。
总结一下:支付宝提供的 DEMO 中,同样是调用 SDK 简单封装的方法,客户端和服务端,一个在签名时做了 urlencode,一个没有;对于传入私钥的格式也不同,让人有点莫名其妙;而 readme 文件误导作用大于指导作用。SDK 开发方统一一下格式很难吗?是考验开发者的智商还是情商呢真让人搞不懂。
结论,这个问题一般来说是签名错误。可能原因有
- 密钥不对 (现象:签名完全不同)
- 生成的签名没有经过 urlencode (现象:签名少量字符不同)