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

更新日期: 2021-04-10 阅读次数: 2437 字数: 510 分类: 微信小程序

真实需求

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

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

本地开发测试

由于每次生成 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 聊聊, 查看更多联系方式