验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配
报错原因
1、密钥不匹配
2、编码格式不统一
3、请求参数数据有误
4、接口调用加签方式和应用上选择的加签方式不对应
5、sdk调用的提交方法有误
6、sdk运行环境有误
排查方案 1、匹配不密钥
(非证书方式请求)检查自己的项目中的私钥和上传的商户公钥是否匹配:详见【如何检验RSA2密钥是否匹配】。
(证书方法请求)检查自己项目中的私钥和使用的商户公钥证书是否匹配:详见【如何检验密钥证书是否匹配】。
2、编码格式不统一
编码格式不统一会导致中文乱码,从而导致请求报错,乱码参数示例 :"subject":"鎮ㄥソ"
兼有有中文字段的参数建议先设置123等数据,避免中文乱码进行测试看是否会报错。
3、请求参数错误
(1)检查必填参数是否传递,可先只传必传参数进行测试是否还会报错;
如果必传参数测试成功,再进行设置选传参数确认是哪个参数导致报错。
(2)不可随意添加转义符;
(3)请求参数中不要进行空传值,或者有空格;
(4)回调地址等携带?id=123这类自定义参数
notify_url或者return_url等携带?id=123这类自定义参数
错误示例:https://您的域名/notify_url.php?id=123&test=abc
注:如果您的请求报错请同时检查您的异步地址是否符合要求 。
4、签名方式错误
根据应用中“接口加签方式”的“选择加签模式”,进行对应的模式签名。
公钥证书和公钥的签名方式不同:
相较普通公钥签名,公钥证书签名多了alipay_root_cert_sn和app_cert_sn参数参与签名。
注:资金类接口(单笔转账到支付宝账户和现金红包)会强制检验接口是否通过公钥证书签名设置,建议如果资金类接口使用公钥方式设置签名,需改成公钥证书模式。
5、sdk调用的提交方法有误
该点错误正常是公钥证书方式做提交才会有此以下原因.
检查公钥证书的response请求方式是否正确:
(1)java语言response的execute()方法需改成certificateExecute();
(2)PHP语言response的execute()方法仍然使用execute();
(3).Net语言response的execute()方法需改成CertificateExecute();
注:公钥证书和普通公钥的pageExecute和sdkExecute调用方法一致,未改变,详见【RSA2和公钥证书签名验签的区别】。
6、检查sdk运行环境
核实各开发语言sdk运行环境是否符合sdk要求
注:.NET开发语言请注意在自查上述问题,没有发现问题,请更新官方最新sdk在重新测试。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。