egg.js-微信订阅消息

egg.js使用-微信订阅消息



前言

记录使用egg.js作小程序后台开发时遇到的一些问题


一、功能需求描述

用户提交补签申请,由管理员审批后通过微信订阅消息发送审批结果通知。

二、使用步骤

1.微信公众平台申请微信订阅消息模板

注:主体为个人,只能使用一次性订阅,即用户授权一次,就可以向用户发送一次消息

在这里插入图片描述

根据自己的项目需求选择模板的内容,完成后我们需要注意几个内容:模板id、详细内容右边的对应的属性名
在这里插入图片描述

2.小程序端用户授权订阅消息

调用wx.requestSubscribeMessage接口,tmplIds值就是刚才申请的模板id,最后可以根据接口返回的信息判断授权情况。

	wx.requestSubscribeMessage({
		tmplIds: ['xxxxxxxxxxxxxx'],
		success(res) {
		console.log(res);
		if (res.errMsg == 'requestSubscribeMessage:ok') {
		wx.showToast({
			title: '订阅成功'
		})
	} else {
		wx.showToast({
			title: '订阅失败'
				})
			}
		}
	})

用户每授权一次,后端就可以向用户发送一次订阅消息,时间不限。

3.后端发送订阅消息

根据文档解释,后端发送订阅消息需要有access_token,所以需要先调用getAccessToken接口获取access_token。
egg.js进行http请求可以使用curl,详细使用方法请看文档

let token = await this.ctx.curl('https://api.weixin.qq.com/cgi-bin/token', {
    method: 'GET',
    dataType: 'json', //※微信接口返回类型为text,我们转换为json方便后面获取token
    data: {
        appid: config.appid, //小程序appid
        secret: config.secret, //小程序密钥
        grant_type: 'client_credential'
    }
})
let access_token = token.data.access_token

最后是发送订阅消息的接口subscribeMessage.send,我们通过文档可知它是个POST请求,但细心发现,刚才获取的access_token需要query的方式拼接在url后面,后面的参数则还是在body里,在实践开发中也确实如此。还有我们需要发送的数据信息应该是一个json值,官方提供的请求示例为:

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "miniprogram_state":"developer",
  "lang":"zh_CN",
  "data": {
      "number01": {
          "value": "339208499"
      },
      "date01": {
          "value": "2015年01月05日"
      },
      "site01": {
          "value": "TIT创意园"
      } ,
      "site02": {
          "value": "广州市新港中路397号"
      }
  }
}

可知他是一个多个结点对象的信息,然后每个data的属性对象应该要对应我们订阅消息内容的属性值,所以我们可以先手动转一下JSON,最后的代码应该为:

let dataJSON = JSON.stringify({
    touser: user_id,
    template_id: 'xxxxxxxxxxxxxx',	//模板Id
    data:{
        thing6:{
            value: title
        },
        time13:{
            value: schedule_time
        },
        thing14:{
            value: repair_info
        },
        phrase11:{
            value: '审批通过'
        },
    }
})
let send = await this.ctx.curl('https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='+access_token, {
     method: 'POST',
     dataType: 'json',
     data: dataJSON
})

总结

简单介绍下eggjs微信订阅消息的使用过程,重点就是在access_token和data那里,希望能对大家有所帮助,也是帮自己做一个笔记。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值