收藏
回答

调用 wx.requestVirtualPayment 持续返回"errCode": -15005



## 问题

小程序调用 `wx.requestVirtualPayment`(mode: short_series_goods)持续返回:

{ "errMsg": "requestVirtualPayment:fail SIGNATURE_INVALID", "errno": -15005, "errCode": -15005 }

paySig 未报 -15006,仅 signature 报 -15005。


## 环境

- 现网 env: 0

- 商品 1yuan 已发布到现网

- 测试设备 iPhone,pf: ios

- 基础库 >= 2.19.2


## 签名逻辑(Node.js)

const sigParams = {

  appId: APPID,

  attach: signParams.attach,

  buyQuantity: String(signParams.buyQuantity),

  currencyType: signParams.currencyType,

  env: String(signParams.env),

  goodsPrice: String(signParams.goodsPrice),

  offerId: signParams.offerId,

  openid: userOpenid,

  outTradeNo: signParams.outTradeNo,

  pf: pf,

  productId: signParams.productId,

  ts: String(ts),

  zoneId: '1',

};

const sigStr = Object.keys(sigParams).sort().map(k => `${k}=${sigParams[k]}`).join('&');


const signature = crypto.createHmac('sha256', sessionKey).update(sigStr + '&session_key=' + sessionKey).digest('hex');

const paySig = crypto.createHmac('sha256', APP_KEY).update(sigStr + '&key=' + APP_KEY).digest('hex');


## 已尝试

MD5、HMAC-SHA256、session_key 字符串/Buffer、snake_case/camelCase、包含/去掉 attach/pfkey/org_loc/method、paySig 业务参数分离、signData 包含/去掉 openid 等。


## 请求帮助

确认 signature 的 HMAC-SHA256 密钥、签名字符串格式、参与签名的字段及字段命名规范。

```


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

2 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    06-22

    你这代码算法啥的都没写对。。。

    06-22
    有用
    回复 1
    • one
      one
      06-22
      不会代码,AI写的☹️  。现在解决了
      06-22
      回复
  • 智能回答 智能回答 本次回答由AI生成
    06-21
    有用
    回复
登录 后发表内容