参考链接

准备

  1. 签约与审核
  2. 密钥生成和上传

接入

注意问题

「交易订单处理失败 请稍后再试 ali64」

如何排查并解决这个问题呢?这个问题,就好比我们在没有足够的错误信息的情境下对BUG进行调试;应该用控制变量法。

  1. 运行 DEMO 程序,输入商户号、私钥等信息将其跑通,并记录下签名。
  2. 我们一般在服务端做签名,那么使用与 DEMO 支付请求同样的参数进行签名,将此签名与 DEMO 中得到的签名进行比较,就能分析这个问题了。

在我接入的时候,对比了两个签名,发现服务端签名的字段并没有做 urlencode(对比之下现象:大部分字符相同,少量字符不同),于是多做一次转码也就可以解决问题了。

总结一下:支付宝提供的 DEMO 中,同样是调用 SDK 简单封装的方法,客户端和服务端,一个在签名时做了 urlencode,一个没有;对于传入私钥的格式也不同,让人有点莫名其妙;而 readme 文件误导作用大于指导作用。SDK 开发方统一一下格式很难吗?是考验开发者的智商还是情商呢真让人搞不懂。

结论,这个问题一般来说是签名错误。可能原因有

  1. 密钥不对 (现象:签名完全不同)
  2. 生成的签名没有经过 urlencode (现象:签名少量字符不同)