1 新建消息请求类 WeChatTemplateRequest
@Data
public class WeChatTemplateRequest {
private String touser;
private String template_id;
private Map data;
private String url;
private String topcolor;
}
2 模板消息熟系类 WeChatTemplateData
public class WeChatTemplateData {
private String value;
private String color;
}
3 实现调用
private CommonRes sendWeChatByOpenid(String openId, String title, String content, String url) {
CommonRes res = new CommonRes(-1, "失败"); // 自己去写一个公共返回类,可自由定义
if (CommonUtil.existNull(openId, title, content)) {
res.setMsg("未知的openid、标题或内容");
return res;
}
// 获取 access token
String accessToken = getAccessToken(); // 自己写方法去实现
if (StringUtils.isEmpty(accessToken)) {
res.setMsg("获取 token 失败");
return res;
}
String tempUrl = sendTemplateUrl += accessToken; // sendTemplateUrl 是推送模板消息的请求链接
WeChatTemplateRequest t = new WeChatTemplateRequest();
t.setTouser(openId);
t.setTopcolor("#000000");
if (url != null && !StringUtils.isEmpty(url)) {
t.setUrl(url);
}
t.setTemplate_id(templateId);
Map m = new HashMap();
WeChatTemplateData first = new WeChatTemplateData();
first.setColor("#173177");
first.setValue(title);
m.put("first", first);
WeChatTemplateData keyword1 = new WeChatTemplateData();
keyword1.setColor("#173177");
keyword1.setValue("信息科");
m.put("keyword1", keyword1);
WeChatTemplateData keyword2 = new WeChatTemplateData();
keyword2.setColor("#173177");
keyword2.setValue(DateUtil.now_ch()); // 发送时间,可自己去定义
m.put("keyword2", keyword2);
WeChatTemplateData remark = new WeChatTemplateData();
remark.setColor("blue");
remark.setValue(content);
m.put("remark", remark);
t.setData(m);
ResponseEntity r = restTemplate.postForEntity(tempUrl, t, WeChatTemplateResponse.class); // 退送消息
res.setCode(r.getBody().getErrcode());
res.setMsg(r.getBody().getErrmsg());
return res;
}