微信小程序推送服务消息,订阅消息
还是很好理解,需要注意以下几点
1.wxMssVo.setTemplate_id(wxConfig.getSetTemplateId());//订阅消息模板id
2.templateMap.put(“time15”, new TemplateEntity(“模板数据”)); 这里的time15就模板上的编号,需要对应写上, 模板数据就是你的业务数据,一般用对象传入,看下面的TODO 说明
//TODO 这里需要用到 推送消息的模板数据,从外面来,现在没定是Map还是实体,待定。。。。。
public String pushInfo(String openId){
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity =null;
WxMssVo wxMssVo = new WxMssVo();
//模板Map
Map<String, TemplateEntity> templateMap = new HashMap<>(4);
String accessToken = "";
//判断Redis内的token是否存在
Boolean accessTokenBoolean = redisUtil.hasKey(RedisEnum.WX_Access_Token.getCode());
//存在token直接赋值,不存在则从新获取token
if (accessTokenBoolean){
accessToken = redisUtil.get(RedisEnum.WX_Access_Token.getCode());
}else{
//token失效从新获取
accessToken = getAccessToken();
log.info("accessToken过期了,从新获取");
}
//组装发送的URl
String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
wxMssVo.setTouser(openId);//用户的openid(要发送给那个用户,通常这里应该动态传进来的)
wxMssVo.setTemplate_id(wxConfig.getSetTemplateId());//订阅消息模板id
//需要跳转的页面
wxMssVo.setPage("pages/jumpPage/jumpPage?weburl="+WEBURL);
//设置模板数据
templateMap.put("time15", new TemplateEntity("模板数据"));
//模板数据1
templateMap.put("thing16", new TemplateEntity("模板数据"));
//模板数据2
templateMap.put("thing17", new TemplateEntity("模板数据"));
//模板数据3
templateMap.put("thing18", new TemplateEntity("模板数据"));
//模板数据4
templateMap.put("thing4", new TemplateEntity("模板数据"));
//拼接推送的模版
wxMssVo.setData(templateMap);
//发送Post请求
responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class);
String body = responseEntity.getBody();
//转换微信 返回数据
JSONObject jsonObject = JSONObject.parseObject(body);
//成功的时候会返回 OK
String errmsg = jsonObject.getString("errmsg");
log.info("推送小程序消息返回数据为: {} ----- 推送是否 成功: {}",jsonObject,errmsg);
return errmsg;
}
忘记补充 WxMssVo 实体了
import org.move.fast.common.entity.TemplateEntity;
import java.util.Map;
/*
* 小程序推送所需数据
* qcl 微信:2501902696
* */
public class WxMssVo {
private String touser;//用户openid
private String template_id;//订阅消息模版id
private String page = "pages/authorization/authorization";//默认跳到小程序首页
private Map<String, TemplateEntity> 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 getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public Map<String, TemplateEntity> getData() {
return data;
}
public void setData(Map<String, TemplateEntity> data) {
this.data = data;
}
}
TemplateEntity 实体
public class TemplateEntity {
private String value;//
public TemplateEntity(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}