使用wechatpay-node-v3这个库,回调验签报错证书拉取失败。
以下使用加密库的方式实现。
微信支付文档链接

async verifySign(header:any,body:any){
    //新申请的证书 v3要用公钥验签 报错证书拉取失败,可能新证书要重新获取一遍?
    // const res = await this.wxPay.verifySign({
    //   apiSecret:this.configService.get('wx_service.apiSecret'),
    //   body: body,
    //   signature: header['wechatpay-signature'],
    //   serial: header['wechatpay-serial'],
    //   nonce: header['wechatpay-noncet'],
    //   timestamp: header['wechatpay-timestamp'],
    // })
    //手动验签
    const timestamp = header['wechatpay-timestamp']
    const nonce = header['wechatpay-nonce']
    const signature = header['wechatpay-signature']
    // 2. 验证关键参数是否存在
    if (!signature || !timestamp || !nonce) {
      throw new Error('Missing required headers for verification');
    }
    const signStr = `${timestamp}\n${nonce}\n${JSON.stringify(body)}\n`
    //使用安全模块验证签名
    const res = crypto.verify('RSA-SHA256',Buffer.from(signStr),{
            key: this.pub_key,
            padding: crypto.constants.RSA_PKCS1_PADDING
        },Buffer.from(signature,'base64'))
    console.log("验签结果",res)

    return res
  }
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐