Golang之微信【订阅通知】开发 - 下

{app.params.name}}{app.params.name}}{app.params.name}}

想要开发订阅通知的功能先要了解订阅通知开发的流程

第一步:发消息给用户
第二步:用户通过消息交互订阅通知
第三步:如果用户同意订阅通知,给用户发送通知消息

前面两步可以回顾前面发的文章

这里要说下,如何给订阅的用户发送消息

上一篇文章已经提到过如何处理用户的订阅信息

var wxSubscribe wx_subscribe.WxSubscribe

mysql.MasterCon().Where("openid = ?", openid).First(&wxSubscribe)

if wxSubscribe.Autokid == 0 {
    mysql.MasterCon().Create(&wx_subscribe.WxSubscribe{
        Action:     action,
        Openid:     openid,
        Scene:      scene,
        TemplateId: templateId,
        Ctime:      time.Now().Unix(),
    })
} else if wxSubscribe.Autokid > 0 && wxSubscribe.TheStatus == 1 {
    wxSubscribe.TheStatus = 0
    wxSubscribe.Ctime = time.Now().Unix()
    mysql.MasterCon().Save(wxSubscribe)
}

根据状态the_status查到订阅未发送消息的记录,根据记录中的openid,进行用户消息的发送

var wxSubscribe wx_subscribe.WxSubscribe
mysql.MasterCon().Where("the_status = ?", 0).First(&wxSubscribe)

进行下一步操作之前先看下需要什么接口,并且接口需要什么参数

 

看下参数的说明

 

先来获取下token

accessToken := getAccessToken()

关于获取token的方法参考这篇文章 Golang之微信【获取接口调用凭据】开发

url := "https://api.weixin.qq.com/cgi-bin/message/template/subscribe"
params := utils.H{
	"touser":      openid,
	"template_id": templateId,
	"scene":       scene,
	"title":       "订阅测试",
	"data": utils.H{
		"content": utils.H{
			"value": "VALUE",
			"color": "COLOR",
		},
	},
}

创建请求地址和请求需要传递的参数

jsonEncodeData := utils.JsonEncode(params)
requestBody := strings.NewReader(jsonEncodeData)

参数类型转换

request, err := http.NewRequest("POST", url, requestBody)

if err != nil {
	log.ErrorLogger.H(tag, utils.H{"error": err})
	return
}

创建请求,同时检测是否有异常

q := request.URL.Query()
q.Add("access_token", accessToken)
request.URL.RawQuery = q.Encode()

添加token的请求参数,我用这个方式,是比较“科学”的方式,也可以在前面创建url参数的时候拼接下

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/165



版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/165