评论

全网最全v3接口签名报错排查指引!!!!

v3接口签名报错排查大全

前言:签名错误!估计很多朋友看到这个报错的时候就比较头大了,不知道如何下手,对什么是签名等都不是特别了解,所以很难处理好这类问题,下面是我总结的目前一些签名错误的排查指引。阅读本文章前,建议提前看一下文章右侧的目录,帮助你更好的阅读此文章。

确定自己使用的什么版本接口(通过这两个就可以直接判断使用的是什么版本):

v3接口特征:

1、参数是JSON格式

2、签名类型为非对称密钥SHA256-RSA参考的是: 如何生成签名

v2接口特征:

1、参数是XML格式

2、签名类型为MD5/HMAC-SHA256,参考的是: 签名算法

---------

v2签名错误排查指引: 点击

---------

什么是签名:

1、这里解释的稍微通俗一点,就是把要传递给接口的参数,进行加密,加密的这个动作就是签名,作用就是保障这条请求是你的请求

2、v2接口使用的是APIv2密钥进行签名的(注意是APIv2密钥,跟APIv3密钥没有关系,二者互不影响)

3、v3接口使用的是商户API证书的私钥进行签名的( 什么是商户API证书?如何获取商户API证书?,按照该文档下载后是一个压缩包,有个说明文件,建议先阅读一下说明文件,解压后找到apiclient_key.pem文件,双击选择文本方式打开,就是私钥内容了)

先确定自己是服务商还是直连商户:

需要提前准备的工具:

1、 postman

2、 v3接口签名生成工具(若签名长度过长可能会导致签名工具直接闪退,说明签名本身就有问题)


下载解压收拾打开这个文件(有些朋友打开时可能会提示这个错误,原因是电脑本身自己就缺少了 msvcr120.dll 该组件,可以到网上自行下载一个,这里也无法上传,所以需要自己去下载一下了)

打开后选择【签名/验签】

3、 微信支付API v3 Postman脚本使用指南,点击下载( 注意:该脚本只适用于v3接口进行测试)


下载后按照官方的步骤进行导入,然后配置,配置后是这样的(只需要配置下图配置的三个参数,其他的不用管,注意格式要跟下图一样),记得保存配置(ctrl+s)

注意看自己的请求头是否有这个,我这边配置好直接就有了,没有的手动添加一下即可,注意是:Authorization {{auth}} 别写错了


如何确定是配置成功,点证书下载能成功则说明配置没有问题,若报签名错误(就是这个三个参数有问题,缺少了或者有空格或者商户号和证书序列号商户API证书私钥不匹配,注意服务商模式使用的是服务商的商户API证书私钥)或其他错误则是配置有问题(插件没有导入,或者不小心修改了插件的方法或者填入参数格式不对或者没有保存)

下面介绍一下签名错误的检查方法

小程序发券插件报错查看 全网最全v2接口签名报错排查指引!!!!

若使用的是v3接口的SDK报《微信支付签名验证失败》,则说明是APIv3密钥错误

服务端接口签名错误(比如JSAPI下单、APP下单等接口,除调起支付和回调接口基本可以认为是服务端接口)

只要状态码是401和提示签名啥啥错的,都是签名有问题

1、先使用postman进行测试,按照上述v3接口postman插件配置好后,只要请求证书能成功,则代表使用的商户号、商户API证书私钥和商户API证书序列号是正确的(注意商户API证书序列号和商户API证书是一一对应的吗,如下图,使用的是第一个商户API证书序列号就使用使用第一个对应的后面的证书)

如何查看商户API证书序列号:


2、使用postman测试没有问题,则代表这三个参数没有问题,使用验签工具进行验签(注意:验签所使用到的商户API证书私钥一定要是postman当中配置的,若是服务商模式,则使用服务商的商户API证书私钥:apiclient_key.pem)

v3接口post请求:


明文格式如下 ( 【对应我的,各位朋友根据自己真实参数进行填写,注意:里面的中文请求是怎么样,在验签工具就是怎么样,不要请求的是字符串,打印出来到签名工具是转义字符】 ):
HTTP请求方法\n --> POST(换行,也就是我们常说的回车键
URL\n --> /v3/pay/transactions/native( 换行,也就是我们常说的回车键 ,注意v3前面一定要带,一定要注意自己真实请求的接口的url是什么,很多人都是使用证书的url,要注意看自己真实请求的接口
请求时间戳\n --> 1651914100(换行,也就是我们常说的回车键
请求随机串\n --> qwer12345(换行,也就是我们常说的回车键
请求报文主体\n -->(这个就是自己真实的请求参数,就一行){“mchid”:“1900006xxxx”,“out_trade_no”:“native121775250120140703323355”,“appid”:“wxdace60xxxxxxx”,“description”:“Image形象店-深圳腾大-QQ公仔”,“notify_url”: “ https://weixin.qq.com/","amount”: {
“total”: 1,“currency”: “CNY”}}(换行,也就是我们常说的回车键

签名值如下(各位朋友根据自己真实参数进行填写):
bmxt36Iplhdc5vnA4J/yEG4jfgdeWEO3Ws7viQ6cXCjJdoKyFIJM8S7HL7aNpxxxxxJMi/PjMGSt2NdZdXrD35J9yq6JnpLnRYrmup8n7z3hAg2sqzqykvbPltQeLsTCwZEkP20CaPO4cxxxxxxxxxxxornI39iXJ6FcSgoffM0MO5BCzoDq+Q4iUTYjLBEysKRxxxxxRjaVo9E2buvEgl0eEb4b98FtpgZOiUg28fxl6O/dm+z7AaLfu9okuOuXhxKjH8J2/7k0x7hJW5viaaD0Bcq+Xg==
(验签出现这个则说明签名本身就有问题,有空格或者长度有问题)

v3接口get请求:


HTTP请求方法\n --> GET(换行,也就是我们常说的回车键

URL\n --> /v3/pay/transactions/id/1217752501201407033233368018?mchid=1900006xxxx(换行,也就是我们常说的回车键
请求时间戳\n --> 1651914100(换行,也就是我们常说的回车键
请求随机串\n --> qwer12345(换行,也就是我们常说的回车键

请求报文主体\n -->)换行(根据签名规则,一个换行,加上面的一个,所以是两个,可参考上面的验签截图,也就是我们常说的回车键
签名长度:

若上述验签显示不通过则说明是你签名值有问题,没有按照官方的要求生成,可能的原因有
1、代码里面的 \n并不是换行,而且当成了字符串
2、参数有空格、特殊符号或者大小写不对,比如i、L(小写的L),可能是代码某个方法转义了
3、签名使用的 商户性质跟使用的商户API证书私钥不匹配,比如服务商模式使用了子商户的商户API证书私钥(注意使用的文档别搞错了,如何区分文档是不是服务商的,一般文档参数带了子商户号就是服务商的文档
4、完整签名值Authorization跟不符合文档要求

5、注意检查在验签工具当中的参数 是否有反斜杠 \,而你实际传递给接口的是没有的,导致你生成签名的参数是带\,接口校验时是没有,所以签名失败!注意举一反三,有可能是金额的问题,比如签名的时候是33.0,传递给接口的是33,或者反过来的,所以需要严格注意参数
注意,需要跟图片的格式一样,标点符号均为英文下的符号,不要有多余的空格,检查商户号、商户API证书序列号等是否正确且一一匹配
6、生成签名的请求参数部分(请求报文主体这部分),带有中文生成签名,单请求当中的中文却出现了乱码,所以导致接口检测到的签名是使用中文生成的,而传递的是乱码,导致签名问题

客户端签名错误(比如JSAPI调起支付、APP调起支付等,这类属于特殊签名方式,在对应的文档会有详细的说明情况,比如JSAPI调起支付就有介绍如何生成签名)

签名步骤(以JSAPI调起支付为例)

使用验签工具进行验签:


签名长度:

1.先确定前后端使用的是不是同一个签名方式(说白话就是前端必须需要使用一样的版本,比如都使用v2或者v3,本文介绍的是v3,所以服务端,比如下单接口必须是使用的v3版,json格式的参数),前后端签名方式或使用的版本不一致就会报签名错误
2.按照对应的文档检查参数格式及参数是否正确(比如: 签名时是否需要prepayid=
3.调起支付的前端方法尽量使用微信支付官方文档提供的方法,注意参数不要有空格等问题

4.如果上面检查都没有问题,可能自己的代码有问题,前后端传输问题,比如时间戳timeStamp后端没有成功传递给接口,导致最终传递给微信接是空的也会报错,这种情况建议先把参数提前生成好,然后写死在前端,建议直接重新写个简单的测试页面(可以避免缓存的影响)

最后一次编辑于  2022-09-06  
点赞 6
收藏
分享 评论

35 个评论

  • 基地的沙丘
    基地的沙丘
    2023-04-15

    无语了...验签工具提示通过,提交请求一直报“签名错误”,搞了好几天

    原来签名第一个参数method我传的是小写post,但是微信后台校验用的是大写POST!!!!!!!

    改成大写后提交通过

    API文档也没说要大写啊,太坑了...

    2023-04-15
    赞同 3
    回复
  • R
    R
    2022-07-01

    非常详细,很有帮助,没有之一

    2022-07-01
    赞同 2
    回复
  • KitFung-P
    KitFung-P
    2023-07-11

    POST

    /v3/new-tax-control-fapiao/fapiao-applications/upload-fapiao-file

    1689056552

    T3T8SA3QDLLS3WJRLBKQ2QDYRZ7DT3OK

    {"digest_algorithm":"SM3","file_type":"PDF","digest":"7bb061e3ba01da674f1f0808a99136a6e911702f23d2027dd21e8f0b5f4d943d"}

    ---------------------------------------------------------------------------------------------------------------------

    {"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization","sign_information":{"method":"POST","sign_message_length":226,"truncated_sign_message":"POST\n/v3/new-tax-control-fapiao/fapiao-applications/upload-fapiao-file\n1689056552\nT3T8SA3QDLLS3WJRLBKQ2QDYRZ7DT3OK\n{digest_\n","url":"/v3/new-tax-control-fapiao/fapiao-applications/upload-fapiao-file"}},"message":"错误的签名,验签失败"}

    前面几个接口签名都正确到了上传发票接口签名怎么都过不去,崩溃了!官网文档都是乱写的,写的啥呀? https://pay.weixin.qq.com/docs/merchant/apis/fapiao/fapiao-applications/upload-fapiao-file.html


    2023-07-11
    赞同 1
    回复 1
    • 这么近"那么远
      这么近"那么远
      2023-11-20
      请问这个问题你解决了吗?我也遇到,无论怎么调写digest_alogrithm还是digest_algorithm,都是签名错误!
      2023-11-20
      回复
  • momo
    momo
    2023-07-06

    下载了工具根本就打不开,你说上天我也用不了。API文档也写得令人费解,很多关键的信息要自己去别的地方查才知道原来如此。做事情请用点心!

    2023-07-06
    赞同 1
    回复
  • lee_JPlife
    lee_JPlife
    2023-01-06

    相同的问题,验签工具通过,接口返回 401“错误的签名,验签失败”。 技术支持在哪里?谢谢

    2023-01-06
    赞同 1
    回复 1
    • HOPE
      HOPE
      2023-01-13
      先把中午替换试试看,可能是你代码里面的参数是中午,传递给接口的中午乱码,所以签名错误
      2023-01-13
      回复
  • 随简
    随简
    2022-05-18

    写的很全

    2022-05-18
    赞同 1
    回复
  • BOLT.Q
    BOLT.Q
    2023-12-13

    调起支付签名报错验签失败,验签工具返回的是正确的,唯一可以怀疑的地方也可能是appid用错,主要是下单appid,调起支付appid,还有生成签名appid,这三个到底用的是哪个appid?

    2023-12-13
    赞同
    回复
  • 这么近"那么远
    这么近"那么远
    2023-11-20
    输入源“/body/file”映射到字段“电子发票文件”必填性规则校验失败,此字段为必填项
    

    https://pay.weixin.qq.com/docs/merchant/apis/fapiao/fapiao-applications/upload-fapiao-file.html

    这个怎么解决?无论写digest_alogrithm还是digest_algorithm,都是签名错误!

    2023-11-20
    赞同
    回复
  • 那个谁
    那个谁
    2023-06-05

    服务器统一签名下单给客户端 安卓都没问题 就苹果一直报 支付验证签名失败

    2023-06-05
    赞同
    回复 1
    • 那个谁
      那个谁
      2023-06-05
      所有参数都是服务器弄的 下单成功的 安卓都可以 为什么苹果就不行呢
      2023-06-05
      回复
  • 小懒猫
    小懒猫
    2023-03-21

    验签通过了,接口调用401,怎么解?

    2023-03-21
    赞同
    回复 1
    • HOPE
      HOPE
      2023-03-24
      我看你两张图的参数值都是不一样的
      2023-03-24
      回复

正在加载...

请 登录 后发表内容

哆哆女性网常嘉起名seo 怎样优化网站素材设计临沂 网站建设上海网站建设高端定制游戏网站的制作方法百度网站关键词优化武汉营销推广外包邢台永城餐具三室一厅户型图景观网站设计起名大全免费取名2019快照seo速成输入法培训营销推广怎么做大余哪个饭店好吃seo优化用户体验么网站产品设计家纺店铺起名字大全seo专题服饰网站制作音乐公司起名华老师你在哪里读后感周易专业取名起名大全品牌网站制作企业公司营销推广制度起名按笔画河南民权县属于哪个市电影免费观看最新成都网站制作公司哪个好淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化