开发者社区> 问答> 正文

#支付宝 invalid-signature (验签出错),怎么办?

invalid-signature (验签出错)

展开
收起
保持可爱mmm 2020-05-05 16:24:24 2032 0
1 条回答
写回答
取消 提交回答
  • 验签出错排查方案:

    1、密钥不匹配;

    建议使用支付宝开放平台助手检查密钥是否匹配。

    RSA2密钥配详见如何检验RSA2密钥是否匹配。

    公钥证书匹配详见如何检验密钥证书是否匹配。

    2、编码格式不统一;

    不统一导致中文乱码,从而导致请求报错 乱码参数示例 :"subject\":\"鎮ㄥソ\"

    兼有有中文字段的参数先设置123等数据,避免中文乱码测试

    3、请求参数中有空格,转义符,特殊字符(基本上会出现在biz_content中);

    (1)建议只传必传参数测试;

    (2)不可随意添加转义符;

    (2)请求参数中不要进行空传值,或者是有空格;

    4、回调地址携带?id=123这类自定义参数

    notify_url或者return_url不能加?id=123这类自定义参数;

    错误示例:https://您的域名/notify_url.php?id=123&test=abc。

    5、sign_type设置是否正确

    如出现sign值与sign_type参数指定的签名类型不一致该错误,建议排查签名方式和私钥的格式是否对应,如私钥是2048位的需使用rsa2签名方式,如私钥是1024位的需使用rsa签名方式。

    2018年1月5日之后创建的应用与公钥证书签名,sign_type必须设置为RSA2

    6、根据接口加签方式选择对应签名流程。

    接口加签方式为“公钥证书”,就必须使用公钥证书方式进行签名;

    接口加签方式为“公钥”,就必须使用普通公钥方式进行签名。

    7、公钥证书签名调用方法错误

    公钥证书的response请求方式是否正确:

    (1)java语言response的execute()方法需改成certificateExecute();

    (2)PHP语言response的execute()方法仍然使用execute();

    (3).Net语言response的execute()方法需改成CertificateExecute();

    注:公钥证书和普通公钥的pageExecute和sdkExecute调用方法一致,未改变。

    8、检查sdk运行环境

    注:.NET开发语言请注意在自查上述问题,没有发现问题,请更新官方最新sdk在重新测试;

    官方最新.NET sdk下载地址:服务端 SDK 。

    具体报错详见各报错处理流程

    (1)验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,参见以上8个排查方案

    (2)验签出错,应用未配置对应签名算法的公钥或者证书

    (3)验签出错,sign值与sign_type参数指定的签名类型不一致

    (4)验签出错,请确认charset参数放在了URL查询字符串中且各参数值使用charset参数指示的字符集编码

    2020-05-05 16:24:34
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载