收藏
回答

JSAPI支付验证签名失败到底什么原因?

用的官方提供的java微信支付SDK。

沙箱模式跟正式环境调用统一下单API都成功了,并且获取到了预支付ID。

但是这个预支付ID在前端使用时,就一直提示支付验证签名失败。

查过很多论坛,也按照他们的说法,挨个验证了,依然无法支付。

回答关注问题邀请回答
收藏

4 个回答

  • 杨梅核
    杨梅核
    2020-05-26

    生成预订单的签名方式要和二次签名的生成方式一样。并且默认的签名方式前者是SHA256,后者是MD5。这个问题坑了我一个晚上,每一步打上日志后才发现的。

    2020-05-26
    有用 2
    回复
  • 微信支付技术助手1
    微信支付技术助手1
    2019-08-21

    请按照以下几点来检查,

    1)你签名中的key,也就是你的API密钥key,这个参数要你们自己到商户平台设置的,设置的规则是32位数字与字母大小写的组合的随机数,不能设置成签名串和参数appsecret,你们有正确设置吗???

    2)检查开放平台对应的包名与签名是否有正确设置。

    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 这里有详细的设置说明。

    3)调用支付使用的noncestr这个参数必须和商家服务器调用统一下单接口返回的那个noncestr一致

    4)从预支付订单返回的数据 ,没有重新签名,也会引起这个问题。

    5)重新安装微信后试试。


    2019-08-21
    有用 1
    回复 3
    • fenrir
      fenrir
      2019-08-21
      第4看得有点懵,"从预支付订单返回的数据"是指我们后台调用统一下单成功后拿到的数据吗?
      2019-08-21
      回复
    • fenrir
      fenrir
      2019-08-21

      按照你说的

      第一步,我刚刚重置了密钥了,用的uuid。

      第二步,我们这边用的是小程序调用的支付,用的你们提供的方法。

      第三步,我们从来没搞错过这一步

      至于你说的第四步,我是没看明白,其他的照你说的做了,依然支付失败。

      我能不能把预支付ID提供给你,你看一下验证失败的原因?

      2019-08-21
      回复
    • Young
      Young
      2020-12-22
      调用支付使用的noncestr这个参数必须和商家服务器调用统一下单接口返回的那个noncestr一致。


      这个是错的,妈个鸡,就是信了你的邪导致卡了一晚上!!!


      这个需要重新生成一个
      2020-12-22
      回复
  • fenrir
    fenrir
    2019-12-11

    - -基本不会在这里登录欸,刚刚才看到。建议去github下个demo,官方写的sdk真的太垃圾了

    2019-12-11
    有用
    回复 1
    • Tenk
      Tenk
      2020-07-27
      咋解决的
      2020-07-27
      回复
  • 全场最佳
    全场最佳
    2019-09-02

    你用等号(=)split来获取签名了?

    2019-09-02
    有用
    回复 5
    • fenrir
      fenrir
      2019-09-02
      已经解决了
      2019-09-02
      回复
    • 华&绅
      华&绅
      2019-09-03回复fenrir
      我也碰见了这个问题,麻烦指点下您是怎么解决的
      2019-09-03
      回复
    • 奇点
      奇点
      2019-10-28回复fenrir
      请问怎解决的
      2019-10-28
      回复
    • ·
      ·
      2020-11-19回复fenrir
      你这种人很贱,有问题就来问,解决了屁都不放一个
      2020-11-19
      2
      回复
    • 磊
      2021-08-18回复·
      让所有搜索到这个答案的人都忍不住在心里骂他一遍
      2021-08-18
      回复
登录 后发表内容