更新时间:2023-04-06 15:04:55收藏我的文档设置返回文档简介同步验签失败主要分为同步通知验签失败和同步响应参数失败。●同步通知验签失败一般是类似于电脑网站支付成功后,前端同步页面跳转返回的同步通知验签。●同步响应参数验签失败一般是类似于当面付调用后直接 response 返回的响应参数验签。如果是使用 sdk 签名验签的,同步响应参数已经在初始化的代码中封装了验签流程,如果验签失败是会返回类似 check sign fail!的报错信息。支付宝公钥错误(重点检查)排查代码中支付宝公钥参数与开放平台上接口加签方式位置获取的支付宝公钥是否一致。大部分商户报错是由于支付宝公钥错误导致,需在开放平台的接口加签方式位置的支付宝公钥中获取,注意不是通过密钥生成工具生成的。使用工具生成的密钥为应用私钥和应用公钥,应用公钥与支付宝公钥数据不同。●如果应用的接口加签方式设置为公钥,则获取支付宝公钥数据,使用支付宝公钥数据进行验签。●如果应用的接口加签方式设置为公钥证书,则获取支付宝公钥证书信息,使用支付宝公钥证书进行验签。支付宝公钥获取详见 如何获取支付宝公钥。编码类型错误检查编码类型 charset 是否正确,避免中文乱码等原因。建议请求返回会导致中文乱码的参数优先设置为英文或者数字,如 subject 和 body 设置为 123,避免中文乱码。如果是由于乱码问题导致,建议检查自己项目的编码格式是否与请求返回的格式一致,该报错只会由于编码格式不统一导致。签名类型错误验签使用的支付宝公钥与签名类型(异步返回的 sign_type 参数)不匹配。检查异步通知返回的 sign_type 类型,验签时必须与 sign_type 相一致。说明:sign_type 设置了 rsa 或 rsa2,需使用与之对应的支付宝公钥,不能混淆使用。验签代码错误不同语言的 sdk 验签代码不同,并且证书验签和 rsa2 密钥验签的代码示例也不相同,同步通知验签方式和同步响应参数验签方式是不同的。详情请参见 如何使用 rsa2 签名验签、如何使用证书签名验签。注意:同步通知验签方式和异步通知验签方式相同。验签数据错误同步通知验签失败获取的同步通知是 get 获取,需要将同步通知 urldecode 转义后才可以验签。同步通知返回的 sign=432+1ead,需要 urldecode 处理为 sign=432 1ead。同步响应参数验签失败●检查验签内容是否完整,支付宝返回的 json 中 xxx_response 的值(xxx 代表接口名),验签需要包含 json 首尾的 { 和 } 两个大括号,双引号也需要参与验签。●如果字符串中包含 http:// 的正斜杠,需要先将正斜杠做转义。当验签不通过时将正斜杠转义一次后再做一次验签等。如返回的响应参数中已带有反斜杠,转义处理,需使用两个反斜杠进行标记,如扫码支付返回参数信息。示例如下: