今天在对接支付宝 APP 支付的时候遇到了一个报错,记录下问题的排查过程~
报错过程
APP 中弹窗提示的报错“商家订单参数异常,请重新发起付款”,检查了下参数感觉没啥问题,不知道是啥问题导致的。
去官网搜了下,折腾排查了一遍,发现是环境问题,沙箱环境没有切回来导致的 (*/ω\*) 。
先放个官网提供的报错排查思路:
👉 [商家订单参数异常,请尝试返回后重新付款或联系商家确认 (ALIN10146)]
排查思路
造成这个问题的原因还挺多的,下面把排查过程总结下:
第一步:使用官方的诊断工具查日志
支付宝提供了一个日志的查询工具,可以直接根据交易号查到报错信息,(๑•̀ㅂ•́)و✧nice~!
👉 [诊断工具] 建议收藏使用
输入 out_trade_no 之后,说是“接口传入的 app_id(9021000123607990)不正确”
发现 appid 没有从沙箱的换回线上的,重新切换回线上的环境,发现查不到日志了=-=
⚠️注意:这个工具只能查线上环境的,沙箱环境的无法查询!!!
第二步:排查参数是否有问题
没有办法,只能重新确认下请求参数
method 没有问题,product_code 参数也跟文档上一致。
没啥思路了,重新按照官方的文档排查下。
第三步:排查密钥是否有问题
可以参考官网文档 👉 [如何检验 RSA2 密钥是否匹配]
检查了下密钥,发现没有问题,是匹配的;
应用私钥放在代码中,应用公钥上传到平台上,跟文档说的一致。
第四步:排查权限是否正常
可以参考官网文档 👉 [如何确认是否完成签约]
直接到应用下产品绑定里查看产品开通状态,是 已开通 的,没有问题
第五步:排查测试的环境
沙箱联调时要在客户端代码里加上下面这行代码,客户端请求的时候才能请求到沙箱环境,如果不加的话,就是请求到正式网关。
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
找到这里就定位到问题了。
我之前在沙箱测试的,想着网关和密钥切回去了之后就没有问题了,忘记了客户端还得改。
去掉这行代码之后,走通了。
希望能对你有所帮助~✿✿ヽ(°▽°)ノ✿,有问题一起沟通~。
关于沙箱的更多内容,可以参考这一篇: