前言
最近在做OA项目,一个项目有个业务场景是:当上一个用户审核后,需要发送通知给下一节点的用户。因为我们只有小程序端和PC端,所以考虑到采用微信消息的方式
一、为什么使用微信公众号模板消息?
当前项目于只有微信小程序端,能够选择的方式不多。查看微信官方文档发现,小程序和公众号自有的消息订阅功能,普通账号只允许开通一次性订阅功能,只有特定行业的账号才允许开通长期订阅功能。最后发现公众号的消息模板比较符合业务场景。实现的效果类似每次消费后,美团公众号都会推送相应消息,无需多次授权。
二、实现原理
利用微信开放平台的unionID,实现多应用间用户共享。用户关注相关联的公众号之后,可以拿到用户的unionID与openID,此时如果用户再登录小程序,也可以拿到小程序对应的unionID与openID,因为微信体系中,同一平台下各应用可以通过unionID进行用户关联,所以,此时可以通过小程序的unionID找到公众号对应的openID进行模板消息推送。
三、实现步骤
1.创建微信开放平台账号
2.绑定小程序账号
3.绑定公众号账号
注意:只有服务号才能使用消息模板功能,在申请公众号时务必注意。
4.公众号申请开通模板消息
登录公众号,点击新的功能,找到模板消息,申请开通即可
5.公众号配置
不熟悉公众号开发的可以自行百度相关必要配置信息,主要是标红部分
6.进行微信公众号开发
这里只贴关键逻辑代码,用户关注公众号后,微信服务器会推送一条消息到我们配置的服务器接口,此时,我们需要解析这部分信息,将openID和unionID存起来即可。
获取用户信息
获取accesstoken GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 获取用户信息 GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
模板消息推送
POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
7.小程序绑定
配置业务域名
实现思路
小程序可调用原生wx.login()方法获取code,再调用微信jscode2session 接口换取openID**(此接口也会返回unionID信息)**,因为此处调用不需要小程序授权,所以可以静默调用。
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
总结
现在大部分场景的消息推送功能都可以通过微信公众号模板来实现,无论是APP、小程序、网页应用,只要将对应的应用绑定到同一个微信开放平台账号下。 如果需要公众号跳转小程序,只需要将公众号与小程序绑定,然后在推送的模板消息中设置跳转的小程序appID与pagePath参数即可。
官方文档地址
获取公众号accessToken 获取公众号用户信息(openID和unionID) 模板消息推送 获取小程序AccessToken 获取小程序openID和unionId信息
|