说明
该报错只会出现在app支付【alipay.trade.app.pay 】接口中。
APP支付交易参数验证不通过,建议根据下面的思路去分析和排查。出现此类异常时系统交互如下:
注意红色字体部分信息交互,此时商户客户端会收到详细错误信息,包含具体错误码以及错误描述(注意:支付宝app弹窗提示中的错误文案,为用户视角所看到的错误信息,不可用于开发者视角用于排查问题的依据)。错误信息格式样例(如下图)
其中,sub_code 和 sub_msg 为具体错误原因,可参照“错误码描述”来进行排查和解决。
【公共错误码列表】
优先测试
这个错误请优先让客户端同学测试客户端demo,只配置账号和密钥进行测试。
客户端demo下载地址:https://docs.open.alipay.com/54/104509
如果客户端可以正常支付请着重检查自己的服务端中的请求参数也就是错误原因中的第7点。
如果客户端也是相同报错,请按照错误原因中的第1, 2, 4 ,5作为优先排查点。
注意:客户端demo只配置账号和密钥测试,请勿修改其他参数。
错误原因
1.appid 应用未上线,应用必须是“已上线”状态才可以调用
检查方法:登录这个地址【点击登录】查看我的应用》调用app支付接口的appid应用是否“已上线”(如下图)
2.没有签约app支付接口或者签约还在审核中
首先:查看自己是否已经签约app支付接口【点击查看】如何查看签约详情
如果发现自己未签约或者签约过期请走这个帖子【点击查看】进行自助签约或者人工电话签约
如果签约在审核中请耐心等待签约生效进行测试。
3.检查app支付测试环境
A.正式环境网关:https://openapi.alipay.com/gateway.do
B.沙箱环境网关:https://openapi.alipaydev.com/gateway.do
注意:请使用对应的环境中的appid和密钥进行测试,千万不要正式环境和沙箱环境混用。
4.公私钥不匹配
建议走验证公钥正确性流程验证自己的公私钥是否匹配【点击查看验证流程】
5.请求使用对应的签名类型
注意:使用RSA或RSA2就使用对应的支付宝公钥(如下图)
6.检查 请求支付编码和是否做url encode
编码charset:就是请求了utf-8 但是用了gbk的编码encode:app支付接口(接口名称:alipay.trade.app.pay)对请求字符串的所有一级value(biz_content作为一个value)进行encode。详情查看请求示例下方说明【点击查看】或者查看sign有没有做encode,或者是否多做了一次encode。
7.请求参数问题
建议:只传必传请求参数,来缩小报错范围。
如果您的服务端是java或php可以使用该帖链接下的demo配置账号和密钥进行测试:https://openclub.alipay.com/read.php?tid=2376&fid=60
特别注意: APP支付不支持第三方应用授权,请不要传参数app_auth_token;
请严格按照官方提供的【App支付文档】去开发集成。
最后这个问题:
官方解决方案:https://openclub.alipay.com/read.php?tid=250&fid=2