开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
凯发app官方网站的技术支持 & 案例 faq 
接入指南 > 接入准备 > 签名验签 > 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配
收藏
我的文档
设置
错误描述
验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,如下示例:
java
复制代码
{
"code": "40002",
"msg": "invalid arguments",
"sub_code": "isv.invalid-signature",
"sub_msg": "验签出错,建议检查签名字符串或私钥与应用公钥是否匹配,网关生成的验签字符串为:alipay_sdk=alipay-sdk-java-dynamicversionno&app_id=201607****045&biz_content={"out_trade_no":"20200728112327106397754","total_amount":"0.01","subject":"测试test","timeout_express":"5m"}&charset=utf-8&format=json&method=alipay.trade.precreate&notify_url=http://www.opendocs.alipay.com&sign_type=rsa&timetamp=2020-07-28 11:23:32&version=1.0"
}
问题原因
密钥不匹配
编码格式不统一
请求参数数据有误
接口调用加签方式和应用上选择的加签方式不对应
sdk 调用的提交方法有误
sdk 运行环境有误
凯发app官方网站的解决方案
密钥不匹配
检查密钥是否匹配,详见
注意:其他原因排查无误情况下,请重点排查密钥不匹配该原因点。
编码格式不统一
编码格式不统一会导致中文乱码,从而导致请求报错,乱码参数示例 :"subject":"鎮ㄥソ"。
兼有中文字段的参数建议先设置 123 等数据,避免中文乱码进行测试,看是否会报错。
数字、英文的方式测试正常,请商家自行检查自己环境中哪个位置编码格式统一导致中文乱码(如页面、服务器、浏览器等)。
数字、英文的方式测试也是报错,可检查其他方式的报错原因。
请求参数错误
检查必填参数是否传递,可先只传必传参数进行测试是否还会报错。如果必传参数测试成功,再进行设置选传参数确认是哪个参数导致报错。
不可随意添加转义符。
请求参数中不要进行空传值,或者有空格。
回调地址等携带 ?id=123 这类自定义参数。notify_url 或者 return_url 等携带 ?id=123 这类自定义参数。 错误示例:https://您的域名/notify_url.php?id=123&test=abc
注意:如果您的请求报错请请同时检查您的异步地址是否符合要求 。
签名方式错误
根据应用中 接口加签方式 选择加签模式 选择对应的模式签名。
公钥证书和公钥的签名方式有所不同,相较普通公钥签名,公钥证书签名多了 alipay_root_cert_sn 和 app_cert_sn 参数参与签名。
注意:资金类接口(单笔转账到支付宝账户和现金红包)会强制检验接口是否通过公钥证书签名设置,建议如果资金类接口使用公钥方式设置签名,需改成公钥证书模式。

sdk 调用的提交方法有误
该点错误正常是公钥证书方式做提交才会有此以下原因。
检查公钥证书的 response 请求方式是否正确:
java 语言 response 的 execute()方法需改成 certificateexecute()。
php语言 response 的 execute()方法仍然使用 execute()。
.net语言 response 的 execute()方法需改成 certificateexecute()。
注意:公钥证书和普通公钥的 pageexecute 和 sdkexecute 调用方法一致,未改变,可查看 rsa2 和公钥证书签名验签的区别
检查 sdk 运行环境
核实各开发语言 sdk 运行环境是否符合 sdk 要求。
注意:.net 开发语言请注意在自查上述问题,没有发现问题,请更新官方最新 sdk 再重新测试。
自签名重点检查
1sign、文件流等不参与签名
2待签名参数排序需按照键值 ascii 码递增排序(字母升序排序)
3加签后的 sign 需 encode 处理
自签名可查看 数据签名 流程。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图