收藏
评论

云开发生成小程序二维码,有需要的进。

真机测试已通过。


小程序端:


wx.cloud.callFunction({

    name: 'getQRCode',

    data: {

        scene: 'scene',

        page: 'pages/index/index',

        width: 180

    }

}).then(res => {

    let qr = "data:image/png;base64," + wx.arrayBufferToBase64(res.result)

})


云函数:getQRCode:


const secret = 'your secret'


const rp = require('request-promise')

exports.main = async (event, context) => {

    let opt = {

        method: 'GET',

        url: 'https://api.weixin.qq.com/cgi-bin/token',

        qs: {

            appid: event.userInfo.appId,

            secret,

            grant_type: 'client_credential'

        },

        json: true

    }

    let res = await rp(opt)

    opt = {

        method: 'POST',

        url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + res.access_token,

        body: {

            'page': event.page,

            'width': event.width,

            'scene': event.scene

        },

        json: true,

        encoding: null

    }

    return await rp(opt)

}


最后一次编辑于  2018-12-07
收藏

7 个评论

  • Jack
    Jack
    2019-09-17

    请问楼主这样写可以传参吗

    2019-09-17
    赞同
    回复
  • 蝈蝈
    蝈蝈
    2019-04-15

    问下楼主,生成的buffer后,小程序那端如何转成图片呢

    2019-04-15
    赞同
    回复
  • ꧁꫞唐少꫞꧂
    ꧁꫞唐少꫞꧂
    2019-03-01

    async/await 使用需要引入额外的东西吗?

    2019-03-01
    赞同
    回复
  • 青艺
    青艺
    2018-12-14

    为什么我的返回结果  "invalid page hint: [a9RliA07023955]"     明明page是在 app.json  

    pages里存在的 ~~    

    2018-12-14
    赞同
    回复 1
    • 青艺
      青艺
      2018-12-14

      明白了 是因为小程序没有发布 所以 page没用~~

      2018-12-14
      回复
  • A(lwb)
    A(lwb)
    2018-11-30

    源码 联系我

    2018-11-30
    赞同
    回复 1
    • 老张
      老张
      2018-12-01

      看了。完全的猿人思维,汗。

      建议还是找个UI美化一下,可以点我头像看看我们的美工水平。

      2018-12-01
      回复
  • 哈罗哈皮
    哈罗哈皮
    2018-11-29

    老铁,你知道为什么在云函数里面生成二维码保存到云存储会无效,图片预览不了的吗?

    2018-11-29
    赞同
    回复 3
    • 老张
      老张
      2018-11-30

      不会啊,我最初也是保存在云存储里啊,完全可以预览的啊。

      你加上下面的代码就行了。

          let buffer = await rp(opt)

           const upload = await cloud.uploadFile({

             cloudPath: 'qr12345678.jpg',

             fileContent: buffer,

           })

       

           return { upload}


      2018-11-30
      回复
    • Fairy新
      Fairy新
      2019-02-14

      这种 黑色的可以吧 用于打印

      2019-02-14
      回复
    • 哈罗哈皮
      哈罗哈皮
      2019-02-14回复Fairy新

      应该没问题

      2019-02-14
      回复
  • 2018-11-28

    🐮,要做一个生成海报,把页面的小程序码存到这上面,节约服务器空间,但是不知道这个云有多大空间,会不会用一段时间就告诉我磁盘已满?

    2018-11-28
    赞同
    回复 9
    • 老张
      老张
      2018-11-29

      和你的需求完全一样。

      我最后的处理和你的不一样:

      不保存,每次需要的时候临时生成,保存在用户本机的storage里或者globalData里。

      原因:

      1、海报生成主要是为了让用户分享到朋友圈方便,但是用户会海量分享海报吗?绝对不会,所以没必要保存在云存储里;

      2、我们的二维码关联的内容是有可能会删除的,如果二维码保存在云存储里,删除的时候就要做一致性处理,如果出错还要滚回,否则云存储里将会有垃圾灾难。

      2018-11-29
      回复
    • 2018-11-29回复老张

      你生成小程序码是在后端吧,生成完还不是要存,不存小程序怎么下载?

      2018-11-29
      回复
    • 老张
      老张
      2018-11-30回复

      报端返回给小程序端的是二维码的二进制码,保存在本机小程序端的storage里或者globalData里。分享的时候临时生成海报发出去。

      为什么要保存在后台呢?哪个用户想要的时候就生成不就行了?

      谁想要,后台生成,发给前端,生成海报,保存在手机小程序存储里,分享出去。这个逻辑我觉得没毛病。


      2018-11-30
      回复
    • 2018-11-30回复老张

      图片的二进制码如何转成图片呢?

      2018-11-30
      回复
    • 老张
      老张
      2018-11-30回复老张

      或者从头到尾都不保存,直到海报分享结束了就销毁。下次需要再从新生成。

      2018-11-30
      回复
    查看更多(4)
登录 后发表内容