说明
该报错只会出现在app支付【alipay.trade.app.pay 】接口中。
APP支付交易参数验证不通过,建议根据下面的思路去分析和排查。出现此类异常时系统交互如下:
注意红色字体部分信息交互,此时商户客户端会收到详细错误信息,包含具体错误码以及错误描述(注意:支付宝app弹窗提示中的错误文案,为用户视角所看到的错误信息,不可用于开发者视角用于排查问题的依据)。错误信息格式样例(如下图)
其中,sub_code 和 sub_msg 为具体错误原因,可参照“错误码描述”来进行排查和解决。
【公共错误码列表】
优先测试
这个错误请优先让客户端同学测试客户端demo,只配置账号和密钥进行测试。
客户端demo下载地址:[url]https://docs.open.alipay.com/54/104509[/url]
如果客户端可以正常支付请着重检查自己的服务端中的请求参数也就是错误原因中的第7点。
如果客户端也是相同报错,请按照错误原因中的第1, 2, 4 ,5作为优先排查点。
注意:客户端demo只配置账号和密钥测试,请勿修改其他参数。
错误原因
1.appid 应用未上线,应用必须是“已上线”状态才可以调用
检查方法:登录这个地址【点击登录】查看我的应用》调用app支付接口的appid应用是否“已上线”(如下图)
2.没有签约app支付接口或者签约还在审核中
首先:查看自己是否已经签约app支付接口
如果发现自己未签约或者签约过期请走这个帖子
如果签约在审核中请耐心等待签约生效进行测试。
3.检查app支付测试环境
A.正式环境网关:[url]https://openapi.alipay.com/gateway.do[/url]
B.沙箱环境网关:[url]https://openapi.alipaydev.com/gateway.do[/url]
注意:请使用对应的环境中的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配置账号和密钥进行测试:[url]https://openclub.alipay.com/read.php?tid=2376&fid=60[/url]
特别注意: APP支付不支持第三方应用授权,请不要传参数app_auth_token;
请严格按照官方提供的【App支付文档】去开发集成。
正确提问方式
如果您根据上述自查方案还是没有查出错误,请按照正确的提问方式进行追问提供信息(信息不完成不回复)
测试环境(沙箱还是正式)+请求appid+报错请求参数一份+请求时间
如果有其他情况请详细描述:类似于,本人已经测试官方demo客户端Android和iso都可以支付但是自己开发的的Android端可以ios端不可以,信息越详细越方便判断问题。
如果您对该访问有什么疑问和建议欢迎吐槽