收藏
回答

服务商模式下:客户端调JSAPI支付报支付验证签名失败

问题描述:服务商模式替特约商户发起 小程序的微信支付,服务商下单成功,但二次签名之后 小程序调支付返回 “支付验证签名失败”

我通过2种方式都是返回“支付验证签名失败”,具体详细信息如下:

     a、MD5方式:签名参数 和 签名结果 都是一样的,但还是返回 “支付验证签名失败” (这里 商户直连方式 签名是没有问题,仅仅是服务商模式下 换成了 服务商的 api 密钥,appId还是唤起小程序支付的 小程序appId)

     b、通过RSA 方式:也是返回“支付验证签名失败”,签名过程是 通过 官网下的 demo 示例操作的,过程如下:

签名结果如下:

 错误提示:客户端JSAPI调起支付后返回提示:支付验证签名失败

最后一次编辑于  2021-07-08
回答关注问题邀请回答
收藏

4 个回答

  • ?,!。
    ?,!。
    2022-02-24

    折腾了一下午和一晚上终于解决了。我这边的问题是:我们之前已经对接 过app的微信支付,后台直接返回了{ "package": "Sign=WXPay", "appid": "wx666", "sign": "7E9360EE36", "partnerid": "1116401", "prepayid": "wx66000", "noncestr": "345332", "timestamp": "1625620895" } 这样的数据各式我当时的做法是拿着后台返回的这些参数 格式化后直接去调用微信支付。

    但是注意注意,JSAPI加密sign的方法和app不一样, sign不能混用,它是是 需要把appId , timeStamp, nonceStr,package, signType 5个参数拼接key 以后 再使用md5加密


    2022-02-24
    有用 1
    回复
  • 北望沣渭
    北望沣渭
    2021-07-13

    代码看了看,没发现异常,顺这个思路排查下:1. 二签的时候,字符串叠加时,timestamp的值是什么(需要秒级整数10字节);2. 二签时候,私钥是服务商私钥,看看是不是没给对

    2021-07-13
    有用
    回复 7
    • 班班
      班班
      2021-07-13
      这个是二签 之后的 结果报文,私钥用的是服务商私钥。第二个是服务商的私钥,就是没找到原因,一直卡住中、、、
      2021-07-13
      回复
    • 班班
      班班
      2021-07-13
      我跟微信官方提供的 工具进行签名,签名结果都是一样。搞不懂为啥就是“支付签名验证结果失败”  这个知道怎么处理吗?卡了好几天了、、、
      2021-07-13
      回复
    • 北望沣渭
      北望沣渭
      2021-07-13回复班班
      刚才我用nodejs按你的逻辑复现了一般,APIv3是能正常唤起支付的,有两个地方需要你再查一下:1. 你的服务商及子商户的JSAPI域名有没有配置? 2. 是不是真机调试的?
      2021-07-13
      回复
    • 北望沣渭
      北望沣渭
      2021-07-13回复班班
      还有个点,你可能也要注意一下,就是你的二次签名数据,给前端的时候,base64的paySign看看是不是有异常(常见问题slash被转译了),这个可能会造成微信端验签不过
      2021-07-13
      回复
    • 班班
      班班
      2021-07-14
      问题已解决。统一下单和二次签名都没问题(使用的是V3,和RSA签名方式),是小程序端调支付时 signType固定传成了MD5导致的,现在已解决。非常感谢花时间帮忙排查!!!
      2021-07-14
      回复
    查看更多(2)
  • Memory
    Memory
    2021-07-07

    签名错误问题可以按照以下几点进行排查:

    1、使用签名检查工具校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    6、接口需要使用UTF-8编码

    7、服务商模式下,统一下单中的sub_appid是否有传入

    8、“唤起支付接口”中的签名类型是否与“统一下单接口”的类型一致


    2021-07-07
    有用
    回复 13
    • 班班
      班班
      2021-07-11
      已排查,还是验签失败。麻烦帮我看下 服务商模式是 通过RSA 还是 MD5 进行二次签名?具体的两种方式我上面已贴出来了
      2021-07-11
      回复
    • Memory
      Memory
      2021-07-11回复班班
      二次签名要和下单的时候签名保持一致,你这V2和V3混用?
      2021-07-11
      回复
    • 班班
      班班
      2021-07-11回复Memory
      我V3也试过了,V3应该就是RSA方式吧?还是返回支付验证签名失败,我调的就是上面我发的方式b,帮我看下调用的对不对,非常感谢!
      2021-07-11
      回复
    • Memory
      Memory
      2021-07-12回复班班
      那你到底是V2还是V3呢?统一下单的代码也贴一下
      2021-07-12
      回复
    • 班班
      班班
      2021-07-12回复Memory
      见上传图片,谢谢!
      2021-07-12
      回复
    查看更多(8)
  • 班班
    班班
    2021-07-07

    寻求大家帮助,谢谢!

    2021-07-07
    有用
    回复
登录 后发表内容