在实际开发中,我们假如遇到了以下需求,用户操作数据会有相应的提醒,在微信里面的提醒,我想最适合不过的就是模板消息了吧。
开发之前
首先,模板消息,模板消息,肯定是需要模板才能往上面渲染数据,我们能做的只是改变模板的部分数据,大体结构还是不变的。
开发者需要到微信公众号后台申请模板,选择你公众号的行业来细分模板消息,微信公众号已有的模板就很多,添加即可,如果有特殊需要,可以自己按照微信要求编辑模板提交,但是需要审核!
我们开发用到的其实也就模板id
准备
首先新建一个实体类,主要用于参数的封装
public class TemplateData {
private String value;
private String color;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class WechatTemplate {
private String touser;
private String template_id;
private String url;
private Map<String, TemplateData> data;
public String getTouser() {
return touser;
}
public void setTouser(String touser) {
this.touser = touser;
}
public String getTemplate_id() {
return template_id;
}
public void setTemplate_id(String template_id) {
this.template_id = template_id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Map<String, TemplateData> getData() {
return data;
}
public void setData(Map<String, TemplateData> data) {
this.data = data;
}
}
在业务逻辑层将数据封装到我们的实体类上`
``
//采纳模板消息
String url = “https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=”+accessToken;
// 封装基础数据
WechatTemplate wechatTemplate = new WechatTemplate();
wechatTemplate.setTemplate_id("");
wechatTemplate.setTouser(user.getOpenid());
wechatTemplate.setUrl("”);
上面的templateid就是我们申请的模板id,touser是用户的openid,url表示点击模板消息的跳转页面。
模板的参数渲染通过上面的类进行封装
Map<String,TemplateData> mapdata = new HashMap<>();
// 封装模板数据
TemplateData first = new TemplateData();
first.setValue("您好,您的回复已被采纳");
first.setColor("#173177");
mapdata.put("first", first);
具体需求看模板的结构,设置显示的内容和颜色
模板消息的发送
wechatTemplate.setData(mapdata);
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
try {
JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
mapper.writeValue(gen, wechatTemplate);
gen.close();
String param = sw.toString();
TemplateUtil.sendPost(url, param);
} catch (IOException e) {
e.printStackTrace();
}
通过post方式,将参数一并发送过去,就可以在公众号首页看到模板消息了!!!