今天移动端支付宝支付突然报“商家订单参数异常,请重新发起付款”,并且iOS和安卓端同时报这个错误,通过观察其实本质上已经调起了支付宝的SDK,然后弹出的上面的错误。想让客户端的同学看看是否可以复现,查看是否还有更详细的错误,可是客户端同学竟然可以调起支付,并没有报错误,但是大部分人是调不起来的。通过查看服务端的接口日志,服务端在支付宝已经下单成功了,只是客户端调起支付的时候验证没通过,因为双端都报,所以综合分析应该是公共问题。
看了一下官方文档,其实有很多中可能的,看了各种情况,怀疑是证书过期了,就登录支付报开放平台看了下应用的密钥设置,发现状态是未设置状态,很是奇怪,以前肯定设置过了,支付宝支付都用了2年多了,后来怀疑是过期了,支付宝把设置状态给清空了。后续就根据官方证书到期更新指南进行更新,其实在更新过程中还是遇到一些问题,总结了如下几点:
- 接口的加签方式分为密钥和证书两种方式,这个项目用的是证书方式
- 用支付宝支付宝开放平台开发助手生成CSR文件后,商户私钥要点击其底部的【打开文件位置】获取,不要用上面的生成密钥后复制或者点击【打开密钥文件路径】获取。本质上这应该是分别生成密钥和证书两种方式的参数用的。
- 在支付宝开放平台设置参数时,上传CSR文件后,会生成三个文件:应用公钥证书(alipayCertPublicKey_RSA2.crt),支付宝公钥证书(appCertPublicKey_XXXXXX.crt,XXXXX代表APPID),支付宝根证书(alipayRootCert.crt),分别下载后使用即可。
其他项目用的接口加签方式都是密钥,只有这一个用的证书方式,当时这么选择,主要是用了官方的GO版本的SDK,SDK本身采用的这种方式,所以选择了证书方式。密钥文件过期了,服务端还可以下单成功,怀疑出现这种情况,是支付宝的服务端验证不严格造成的。
文章评论