SpringBoot打通微信公众号模板消息通知

  • 前言
  • 一、为什么使用微信公众号模板消息?
  • 二、实现原理
  • 三、实现步骤
  • 1.创建微信开放平台账号
  • 2.绑定小程序账号
  • 3.绑定公众号账号
  • 4.公众号申请开通模板消息
  • 5.公众号配置
  • 6.进行微信公众号开发
  • 获取用户信息
  • 模板消息推送
  • 7.小程序绑定
  • 配置业务域名
  • 实现思路
  • 总结
  • 官方文档地址



前言

最近在做OA项目,一个项目有个业务场景是:当上一个用户审核后,需要发送通知给下一节点的用户。因为我们只有小程序端和PC端,所以考虑到采用微信消息的方式


一、为什么使用微信公众号模板消息?

当前项目于只有微信小程序端,能够选择的方式不多。查看微信官方文档发现,小程序和公众号自有的消息订阅功能,普通账号只允许开通一次性订阅功能,只有特定行业的账号才允许开通长期订阅功能。最后发现公众号的消息模板比较符合业务场景。实现的效果类似每次消费后,美团公众号都会推送相应消息,无需多次授权。

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_微信

二、实现原理

利用微信开放平台的unionID,实现多应用间用户共享。用户关注相关联的公众号之后,可以拿到用户的unionID与openID,此时如果用户再登录小程序,也可以拿到小程序对应的unionID与openID,因为微信体系中,同一平台下各应用可以通过unionID进行用户关联,所以,此时可以通过小程序的unionID找到公众号对应的openID进行模板消息推送。

三、实现步骤

1.创建微信开放平台账号

2.绑定小程序账号

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_模板消息_02

3.绑定公众号账号

注意:只有服务号才能使用消息模板功能,在申请公众号时务必注意。

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_微信小程序_03

4.公众号申请开通模板消息

登录公众号,点击新的功能,找到模板消息,申请开通即可

5.公众号配置

不熟悉公众号开发的可以自行百度相关必要配置信息,主要是标红部分

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_微信_04

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

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_小程序_05

模板消息推送

POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_模板消息_06

7.小程序绑定

配置业务域名

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_微信_07

实现思路

小程序可调用原生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

springboot mp 微信公众号 含有html片段的消息 springboot微信公众号推送消息_微信_08


总结

现在大部分场景的消息推送功能都可以通过微信公众号模板来实现,无论是APP、小程序、网页应用,只要将对应的应用绑定到同一个微信开放平台账号下。
如果需要公众号跳转小程序,只需要将公众号与小程序绑定,然后在推送的模板消息中设置跳转的小程序appID与pagePath参数即可。