收藏
回答

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

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

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

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

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

签名结果如下:

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

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

3 个回答

  • ?,!。
    ?,!。
    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)
  • 班班
    班班
    2021-07-07

    寻求大家帮助,谢谢!

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