Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

SpringBoot发送微信模板消息

1、环境

  • jdk 1.8.0_271
  • Maven 3.6.1
  • MySQL 8.0

2、工作

这段时间在做项目的时候,甲方要求将之前的易班消息推送更换成微信公众号模板消息推送,所以本文就是记录一下使用模板消息的过程,

开发的时候我用的是微信的测试公众账号,但是实际的功能和企业的账号是一样的。

3、准备工作

首先我们要知道,模板消息是什么?以下就是公众号模板消息,我们在生活中很多场景都会接触到它。
This is a picture without description

在进入了测试号的管理后台之后,我们可以在这里设置我们的模板消息的模板

This is a picture without description

首先我们要在公众平台中设置好我们的模板,然后 java 中根据模板信息来添加相应的内容。

4、java后端编写

我们创建一个名为WeChatNotify的工具类,里面存放的是模板消息的设置内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@Component
public class WeChatNotify {
@Autowired
private IDictService ds;
@Autowired
private ParseUtil pu;
@Autowired
private JdrService js;

// 发送模板信息
public String push(String openid,String map, Bxd bxd) {
//1,配置
WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
wxStorage.setAppId("wxacc93d31c5dbd26f");
wxStorage.setSecret("f8c9e82b590ac71eb12e96f77cf65740");
WxMpService wxMpService = new WxMpServiceImpl();
wxMpService.setWxMpConfigStorage(wxStorage);
//2,推送消息
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(openid)//要推送的用户openid
.templateId("-1pT4MrVw4asKamh0IQMF6c22Ih74dRjxqN8fwhjoQs")//模版id
.url("https://www.cyc0819.top")//点击模版消息要访问的网址
.build();

// 获取保修类别
String bxlb=pu.paraseBxlb(bxd.getBxlb());
//3,正式版发送模版消息,这里需要配置你的信息,替换微信公众号上创建的模板内容
templateMessage.addData(new WxMpTemplateData("map", map, "#173177"));
templateMessage.addData(new WxMpTemplateData("type",bxlb, "#173177"));
templateMessage.addData(new WxMpTemplateData("text", bxd.getXxdd()+bxd.getBxnr(), "#173177"));
templateMessage.addData(new WxMpTemplateData("time", bxd.getYysj(), "#173177"));
templateMessage.addData(new WxMpTemplateData("name", bxd.getSbr(), "#173177"));
templateMessage.addData(new WxMpTemplateData("phone", bxd.getSbrsj(), "#173177"));
try {
wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
return "推送成功";
} catch (Exception e) {
System.out.println("推送失败:" + e.getMessage());
e.printStackTrace();
return "推送失败";
}
}

// 检查openid是否已经绑定
public String selOpenid(String ybid){
String openid=js.selOpenidForYbid(ybid);
if (openid == null){
return null;
}
return openid;
}
}

在这里,我们需要公众号的appid,appsecret,以及接收人的openid

如何获取用户的 openid 可以看以下这篇文章。

给足所需要的消息,然后在要发送消息的地方调用即可

1
2
3
4
5
6
7
public String zdpdWeChat(String eid, String bxlb,Bxd bxd){
String ybid=zdpd(eid,bxlb);
String map=es.selxxwz(Integer.parseInt(eid));
//调用发送模板信息
wcn.push("OPENID",map,bxd);
return ybid;
}