收藏
回答

虚拟支付 fail PAY_SIG_INVALID -15006?

class PaySignatureService {

  static calcPaySig(appkey: string, message: string): string {

    const hmac = crypto.createHmac('sha256', appkey);

    hmac.update(message);

    return hmac.digest('hex');

  }


  static calcSignature(signData: string, sessionKey: string): string {

    const hmac = crypto.createHmac('sha256', sessionKey);

    hmac.update(signData);

    return hmac.digest('hex');

  }

}


export const virtualPayment = async (

  req: Request,

  res: Response

) => {

  const { productId, goodsPrice } = req.body;

  try {

  const uri = '/xpay/requestVirtualPayment'; //  /xpay/query_user_balance

  const appkey = 'HvkwbwYj4Y0o29MkAObPn1u2vkNr4jTP';

  const outTradeNo = uuidv4().replace(/-/g, '');

  const sessionKey = userAtuth.session_key;

 

  const signData = JSON.stringify({

    offerId: '123000',

    buyQuantity: 1,

    env: 0,

    currencyType: 'CNY',

    productId: String(productId),

    goodsPrice: Number(goodsPrice),

    outTradeNo: String(outTradeNo),

    attach: 'testdata',

  });

  const paySig = PaySignatureService.calcPaySig(appkey,uri + '&' + signData);

  const signature = PaySignatureService.calcSignature(signData, sessionKey);


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

3 个回答

  • 神经蛙
    神经蛙
    3小时前

    uri 用requestVirtualPayment

    3小时前
    有用 1
    回复 3
    • Irshat
      Irshat
      发表于移动端
      3小时前
      就是不加 /xpay 是吧
      3小时前
      回复
    • 神经蛙
      神经蛙
      3小时前回复Irshat
      是的
      3小时前
      回复
    • Irshat
      Irshat
      发表于移动端
      3小时前回复神经蛙
      好的谢谢,我试试
      3小时前
      回复
  • showms
    showms
    2小时前

    就是支付签名错了,可以参考一下,这里面有nodejs版本签名代码

    https://developers.weixin.qq.com/community/develop/article/doc/0000ae4f1b4f80f4d8c4c7ca266013

    2小时前
    有用
    回复 1
    • Irshat
      Irshat
      发表于移动端
      2小时前
      好的,谢谢,我看看
      2小时前
      回复
  • 智能回答 智能回答 本次回答由AI生成
    11小时前
    有用
    回复 2
    • Irshat
      Irshat
      11小时前
      1450498874
      11小时前
      回复
    • Irshat
      Irshat
      11小时前
      11小时前
      回复
登录 后发表内容