收藏
回答

小程序微信支付提示验证签名失败,该如何处理?

前提:我的微信支付使用的是V2的接口

1. 我的小程序绑定了两个商户,其中一个商户A不用了,另外一个商户B正常使用

2. 我的APP微信支付正常使用,连接的商户B

3. 微信统一下单接口,正常下单,参数如下:

param:{

nonce_str=f3a72d3eb44f45d6826bc6a7f5474687,

openid=oPSMY0XPhn1DAJkubA3gnIW40YOQ,

sign=BBBFAC4462D95998F804A0657093DC41,

mch_id=1465558***,

body=客户订单支付,

notify_url=*******,

spbill_create_ip=125.121.43.85,

out_trade_no=test20230606191149060-656172,

appid=wx1f5*******,

total_fee=1,

trade_type=JSAPI,

sign_type=MD5

}

4. 我给小程序端返回的内容如下:

resultMap:

{

package=prepay_id=wx06191149663964bccc5b6cbe9438250000,

paySign=2B637B4F24F7DC013705DCDEE50309BB,

appid=wx1f5555bdb*****,

signType=MD5,

partnerid=1465558***,

prepayid=wx06191149663964bccc5b6cbe9438250000,

noncestr=b73QK6PhbEdVT8gl,

timestamp=1686049909

}

这里要说明的是,

1.sign的校验,我通过官方工具已经测试,没有问题

2.下单的appid和后面生成sign的appId的问题,我已经避免且测试

3.尝试将统一下单和发送给小程序的noncestr保持移植

4.下单的signType和返回给前端的signType保持了一致

现在的情况时,微信小程序的前端可以拉去支付,但是付款,提示验证签名失败



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

2 个回答

  • Memory
    Memory
    2023-06-06

    小程序调起支付没有partnerid,也没有APPID,nonceStr和timeStamp的S是大写

    2023-06-06
    有用 1
    回复 8
    • 🏍海涛💻
      🏍海涛💻
      2023-06-07
      这个我在小程序调起支付的时候,是正常的
      2023-06-07
      回复
    • Memory
      Memory
      2023-06-07回复🏍海涛💻
      正常还报签名失败?
      2023-06-07
      回复
    • 🏍海涛💻
      🏍海涛💻
      2023-06-07回复Memory
      我说的正常,是指小程序没有partnerid,也没有APPID,nonceStr和timeStamp的S是大写,并且我的签名验证在后台都试过了,唉
      2023-06-07
      回复
    • Memory
      Memory
      2023-06-07回复🏍海涛💻
      二次调起支付签名计算参数和实际调用必须要一致,自己检查检查吧
      2023-06-07
      回复
    • 🏍海涛💻
      🏍海涛💻
      2023-06-07回复Memory
      二次调起签名计算,是指小程序端的调用么?其实我不是很明白他的验签逻辑。现在是统一下单生成验签,然后返回给小程序端再生成验签,然后这两次进行比较么?
      2023-06-07
      回复
    查看更多(3)
  • A000  沈国安_APP网站小程序
    A000 沈国安_APP网站小程序
    2023-10-30

    巨坑:小程序appId 、时间戳、随机字符串、订单详情扩展字符串 这个4个顺序不能错,必须按照这个顺序签名才对。重点、重点、重点 顺序(appId、timeStamp、nonceStr、package)

    2023-10-30
    有用
    回复 1
    • 贾鹏飞
      贾鹏飞
      06-18
      对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串
      06-18
      回复
登录 后发表内容