推动公众号通知或提醒!
关于推送前所需要获取的数据请移步:https://blog.csdn.net/weixin_44467567/article/details/112304488
第一步: 登录公众号后台创建模板消息
创建完成后点击详情
第二步 :代码实现
接口传参格式
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"miniprogram":{
"appid":"xiaochengxuappid12345",
"pagepath":"index?foo=bar"
},
"data":{
"first": {
"value":"恭喜你购买成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2": {
"value":"39.8元",
"color":"#173177"
},
"keyword3": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
代码如下:
传输实体类
import lombok.Data;
import java.io.Serializable;
/**
* @Description: 消息模板Data类
* @Param:
* @return:
* @Author: XQD
* @Date:2021/1/5 11:02
*/
@Data
public class DataEntityDto implements Serializable {
//内容
private String value;
//字体颜色
private String color;
public DataEntityDto(String value ,String color){
this.value = value;
this.color = color;
}
}
在此之前已经通过用户关注公众号的时候获取到了用户的openId
/**
* @Description: 发送模板消息
* @Param: [openId]
* @return: boolean
* @Author: XQD
* @Date:2021/1/5 10:02
*/
// param参数格式 {"keyword1":"张三","keyword2","项目名称"}
@Override
public boolean sendTemplateMsg(String openId, JSONObject param) {
// 发送模板消息的URL
String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + getAccessToken();
// 整体参数map
Map<String, Object> paramMap = new HashMap<String, Object>();
// 跳转小程序参数map 如不需跳转小程序,该map不用创建
Map<String, Object> miniprogramMap = new HashMap<String, Object>();
// 消息主题显示相关map
Map<String, Object> dataMap = new HashMap<String, Object>();
paramMap.put("touser", openId);
// 收藏客户访问
paramMap.put("template_id", "这里写公众后台申请的模板I的");
miniprogramMap.put("appid", "需要跳转的小程序appId,必须为关联的小程序");
miniprogramMap.put("pagepath","需要跳转的页面");
paramMap.put("miniprogram",miniprogramMap);
//根据自己的模板定义内容和颜色
// 前面的first,keyword1,keyword2,keyword3,remark 要模板消息中的参数一致
// 后面的(String) param.get("keyword1")中的keyword1是我自己传参时自定义写的,为了和前面保持一致
dataMap.put("first",new DataEntityDto("收藏客户访问小程序通知!","#173177"));
dataMap.put("keyword1",new DataEntityDto((String) param.get("keyword1"),"#173177"));
dataMap.put("keyword2",new DataEntityDto((String) param.get("keyword2") ,"#173177"));
dataMap.put("keyword3",new DataEntityDto("访问项目小程序首页内容" ,"#173177"));
dataMap.put("remark",new DataEntityDto("及时与收藏客户保持良好联系","#173177"));
paramMap.put("data", dataMap);
String post = HttpClientUtil.post(sendMsgUrl, JSON.toJSONString(paramMap));
Map<String,Object> map = null;
try {
map = objectMapper.readValue(post, Map.class);
} catch (IOException e) {
log.error("公众号模板消息异常通知-转化异常",e);
}
String errcode = String.valueOf(map.get("errcode"));
String errmsg = String.valueOf(map.get("errmsg"));
if (!errcode.equals("0")){
log.error("消息发送失败:code="+errcode+"msg="+errmsg);
return false;
}
return true;
}