使用golang快速开发微信公众平台(八):获取用户二维码

使用golang快速开发微信公众平台(八):获取用户二维码,第1张

概述今天终于解决了之前提到的支付url地址无效问题甚是高兴,来把二维码也写写。 二维码文档写的简单明了,但是没有写咋个实际展示,我试了好久,连base64解码都考虑了。。。最终发现,还是简单粗暴的方法适合我。 业务场景如下:进入页面,根据获取到的用户openId,显示该用户的二维码。 都闪开,我要放代码了: /** 微信显示用户二维码 */type WXShowUserQrController s

今天终于解决了之前提到的支付url地址无效问题甚是高兴,来把二维码也写写。
二维码文档写的简单明了,但是没有写咋个实际展示,我试了好久,连base64解码都考虑了。。。最终发现,还是简单粗暴的方法适合我。
业务场景如下:进入页面,根据获取到的用户openID,显示该用户的二维码。

都闪开,我要放代码了:
/** 微信显示用户二维码 */type WXShowUserQrController struct {    beego.Controller}type WxQrGet struct {    Actionname string          `Json:"action_name"`    AInfo      *WxQrActionInfo `Json:"action_info"`}type WxQrActionInfo struct {    Sc *Scene `Json:"scene"`}type Scene struct {    SceneID int `Json:"scene_ID"`}type QrBody struct {    Ticket        string `Json:"ticket"`    ExpireSeconds string `Json:"expire_seconds"`    Url           string `Json:"url"`}func (c *WXShowUserQrController) Get() {        ...        //此处uID就是openID        wxUser := models.WxUser{WxID: uID}        if ticket,err := getQrFromWx(&wxUser,&at); err == nil {                //这里粗暴的直接拼出用户的二维码地址,然后在页面上显示出来                c.Data["ticket"] = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket            }        c.Tplname = "wx_show_user_qr.HTML"}func getQrFromWx(wxUser *models.WxUser,at *models.WxAccesstoken) (string,error) {    ticker := ""    scence := Scene{SceneID: wxUser.ID}    wxQrActionInfo := WxQrActionInfo{Sc: &scence}    wxQrGet := WxQrGet{Actionname: "QR_liMIT_SCENE",AInfo: &wxQrActionInfo}    if JsonBytes,err := Json.Marshal(wxQrGet); err == nil {        //fmt.Println("at.Accesstoken---------",at.Accesstoken)        //fmt.Println("JsonBytes---------",string(JsonBytes))        postReq,err := http.NewRequest("POST",strings.Join([]string{`https://API.weixin.qq.com/cgi-bin/qrcode/create`,"?access_token=",at.Accesstoken},""),//bytes.NewReader([]byte(`{"action_name": "QR_liMIT_SCENE","action_info": {"scene": {"scene_ID": 123}}}`)))            bytes.NewReader(JsonBytes))        if err != nil {            fmt.Println("向微信发送 qr建立 请求失败",err)            logUtils.GetLog().Error("向微信发送 qr建立 请求失败",err)            return ticker,err        }        postReq.header.Set("Content-Type","application/Json; enCoding=utf-8")        clIEnt := &http.ClIEnt{}        resp,err := clIEnt.Do(postReq)        if err != nil {            fmt.Println("clIEnt向微信发送 qr建立 请求失败",err)            logUtils.GetLog().Error("clIEnt向微信发送 qr建立 请求失败",err        } else {            //fmt.Printf("向微信发送 qr建立 请求成功----准备读取resp%+v\n",resp)            body,err := IoUtil.ReadAll(resp.Body)            if err != nil {                fmt.Println("发送get请求获取 wxUserInfo 读取返回body错误",err)                logUtils.GetLog().Error("发送get请求获取 wxUserInfo 读取返回body错误",err)                return ticker,err            } else {                //fmt.Println("解析body----->",string(body))                qrBody := new(QrBody)                if err := Json.Unmarshal(body,qrBody); err == nil {                    fmt.Printf("qrbody-----%+v\n",qrBody)                    ticker = qrBody.Ticket                } else {                    fmt.Println("Json转换错误",err)                    logUtils.GetLog().Error("Json转换错误",err)                    return ticker,err                }            }        }        defer resp.Body.Close()    } else {        fmt.Println("Json转换错误",err)        logUtils.GetLog().Error("Json转换错误",err)        return ticker,err    }    return ticker,nil}

搞定收工

总结

以上是内存溢出为你收集整理的使用golang快速开发微信公众平台(八):获取用户二维码全部内容,希望文章能够帮你解决使用golang快速开发微信公众平台(八):获取用户二维码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存