生成微信小程序码

前端生成微信小程序码

获取 access_token

uni.request({
  url: 'https://api.weixin.qq.com/cgi-bin/token',
  data: {
    grant_type: 'client_credential',
    appid: APP_ID,
    secret: APP_SECRET,
  },
  success: (res) => {
    console.log(res.data.access_token)
  },
})

下面使用的 uni.app 的请求方式,如果不用这种,换一种请求方式就行了

html

<image :src="qrCode" style="width: 380rpx" />

createwxaqrcode

uni.request({
   url: `https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=${access_token}`,
   method: 'POST',
   responseType: 'arraybuffer',
   data: {
     path: 'pages/index/index?id=123',
     width: 380,
   },
   success: (res) => {
     this.qrCode = `data:image/jpg;base64,${uni.arrayBufferToBase64(
       res.data
     )}`
   },
 })

getwxacode

uni.request({
  url: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`,
  method: 'POST',
  responseType: 'arraybuffer',
  data: {
    path: 'pages/index/index?id=123',
    width: 380,
    auto_color: true,
    line_color: { r: 219, g: 35, b: 35 },
    // ...
  },
  success: (res) => {
    this.qrCode = `data:image/png;base64,${uni.arrayBufferToBase64(
      res.data
    )}`
  },
})

getwxacodeunlimit

uni.request({
  url: `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${access_token}`,
  method: 'POST',
  responseType: 'arraybuffer',
  data: {
    scene: 'id=123',
    // path: 'pages/index/index', // 可选
    width: 380,
    auto_color: true,
    line_color: { r: 219, g: 35, b: 35 },
    // ...
  },
  success: (res) => {
    this.qrCode = `data:image/png;base64,${uni.arrayBufferToBase64(
      res.data
    )}`
  },
})
接口特点次数是否必须发布限制
/cgi-bin/wxaapp/createwxaqrcode需要的码数量较少共 10w 次否(开发版)url 最大长度 128 字节
/wxa/getwxacode需要的码数量较少共 10w 次url 最大长度 128 字节
/wxa/getwxacodeunlimit需要的码数量极多暂无限制通过 scene 传参(最大支持 32 个可见字符)

获取小程序码(一物一码)

一物一码

保存小程序码(app端使用)

 saveXcxQrFn() {
   let dataTime = new Date().getTime()
   let count = 666
   let num = Math.floor(Math.random() * count)
   let randomNumber = dataTime + '' + num
   let base64 = this.xcxQrCode.replace(/^data:image\/\w+;base64,/, '')
   let bitmap = new plus.nativeObj.Bitmap('bmp')
   
   bitmap.loadBase64Data(
     this.xcxQrCode,
     () => {
       let filePath = `_doc/uniapp_temp_${randomNumber}/canvas/${randomNumber}.png`
       bitmap.save(
         filePath,
         {
           overwrite: true,
           format: 'png',
           quality: 100,
         },
         () => {
           uni.saveImageToPhotosAlbum({
             filePath,
             success: () => {
               uni.showToast({
                 title: '保存成功,请到相册查看',
                 icon: 'none',
               })
             },
             fail: () => {
               uni.showToast({
                 title: '保存失败,请稍后重试',
                 icon: 'none',
               })
             },
             complete: () => {
               bitmap.clear()
             },
           })
         },
         () => {
           uni.showToast({
             title: '保存失败,请稍后重试',
             icon: 'none',
           })
           bitmap.clear()
         }
       )
     },
     (e) => {
       uni.showToast({
         title: '保存失败,请稍后重试',
         icon: 'none',
       })
       bitmap.clear()
     }
   )
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值