nodejs使用axios访问微信小程序getwxacodeunlimit接口批量生成小程序码保存本地方法...

使用axios访问接口,设置responseType: 'arraybuffer'

  /**
   * 获取小程序qrcode(不能设置 encoding: null,输出图片不能打开)
   * 设置responseType: 'arraybuffer'后成功输出图片
   * @param {String} page
   * @param {String} scene
   * @returns
   * @memberof GetQrCodeObj
   */
  getQrCode(page,scene,){
    return new Promise((resolve,reject)=>{
      axios.post('https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='+this.access_token,{
        scene:scene,
        page,
        is_hyaline:true
      },{
        responseType: 'arraybuffer'  // 关键在于设置responseType为'arraybuffer'
      }).then(res=>{
        let data = res.data
        if(data.errcode){
          reject(new Error('生成二维码失败'))
          return
        }
        dataFn.writeFileData(path.join(__dirname,'./dist/'+scene+'.png'),data).then(res=>{
          resolve(res)
        }).catch(err=>{
          reject(err)
        })
      }).catch(err=>{
        reject(err)
      })
    })
  }
复制代码

dataFn.writeFileData来源于我自己Promise封装的fs模块,在给表弟编写账本软件account-book中封装的方法 找到dataFn.js,dataFn.js还用到了dirExists.js

我在网上还找到了用request模块的方法,关键在于设置encoding: null,

/**
   * 获取小程序qrcode
   *
   * @param {String} page
   * @param {String} scene
   * @returns
   * @memberof GetQrCodeObj
   */
  getQrCode2(page,pack,name,){
    return new Promise((resolve,reject)=>{
        const params = {
          url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + this.access_token,
          method: "POST",
          json: true,
          encoding: null,  // 关键
          headers: {
              "content-type": "application/json",
          },
          body: {
              scene: scene,
              page,
              is_hyaline:true
          }
        }
        request(params, function(error, res, body) {
          if (!error && res.statusCode == 200) {
            dataFn.writeFileData(path.join(__dirname,'./dist/'+scene+'.png'),body).then(res=>{
              resolve(res)
            }).catch(err=>{
              reject(err)
            })
          } else {
            reject(error, body)
          }
      })
    })

  }
复制代码

转载于:https://juejin.im/post/5c19c46d6fb9a049d37f0af8

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值