在线报名人数统计小程序导出太阳码

文章目录

    真实需求

    除了转发到群里,让群里用户点击小程序进行报名。有时,还需要能将指定活动的小程序二维码打印出来,放在线下方便参与者用手机扫码打开小程序进行报名。

    报名人数统计小程序体验地址

    本地开发测试

    由于每次生成 token,都会导致之前的 token 失效,所以需要能在本地开发环境获取到线上的 token。

    最简单的做法,在每次线上启动阶段获取的 token 打印到日志里,或者写入一个指定文件。然后在测试环境使用写死的 token。

    下载小程码

    为了导出太阳码,而引入一个 canvas 库,增加小程序安装包体积,并不值得。因为会导致启动加载变慢。其实最简单的做法是,直接后台生成图片,前端加载图片即可。

    参考代码:

    http://code.lncios.cn/order_system/order_service/src/23e6300550ef270998496a638fb839284359152f/service/qrcode.go

    // 获取小程序码
    func (q qrcode) getQrMCode(shopId string, accessToken, page string) []byte {
    	path := "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken
    	client := &http.Client{}
    	params := `{"scene":"shopId=` + shopId + `", "page": "` + page + `"}`
    	reqBody := bytes.NewBuffer([]byte(params))
    	request, _ := http.NewRequest("POST", path, reqBody)
    	request.Header.Set("Content-type", "application/json")
    	response, _ := client.Do(request)
    	if response.StatusCode == 200 {
    		body, err := ioutil.ReadAll(response.Body)
    		if err != nil {
    		}
    		return body
    	}
    	return nil
    }
    

    保存到文件的方法:

    https://stackoverflow.com/questions/22417283/save-an-image-from-url-to-file

    import (
        "fmt"
        "io"
        "log"
        "net/http"
        "os"
    )
    
    func main() {
        url := "http://i.imgur.com/m1UIjW1.jpg"
        // don't worry about errors
        response, e := http.Get(url)
        if e != nil {
            log.Fatal(e)
        }
        defer response.Body.Close()
    
        //open a file for writing
        file, err := os.Create("/tmp/asdf.jpg")
        if err != nil {
            log.Fatal(err)
        }
        defer file.Close()
    
        // Use io.Copy to just dump the response body to the file. This supports huge files
        _, err = io.Copy(file, response.Body)
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println("Success!")
    }
    

    可选太阳码还是二维码

    需要确认二维码是否有生成次数的限制

    功能入口放哪里

    在活动详情入口处。不更改报名清单页了,因为每次都要广告审核,很容易失败。

    定期清理

    历史图片。

    利用 golang cron,凌晨清理掉图片目录。

    参考文档

    • https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式