获取templateId
微信开放平台-订阅消息-选定一个模板
前端用户授权(绑定点击事件)
wx.requestSubscribeMessage({
tmplIds:[
// 这里填写需要发送的订阅消息ID。
],
success:function(res){
// 通过判断 res 的返回结果,来查看用户是否授权
if(res[TEMPLATE_ID]=="accept"){
}
// 再发起网络传递授权结果,根据授权结果判断是否发送模板消息。
wx.request({});
}
})
后端
订阅消息api vo类
/*
Author:shang
wx订阅消息api参数
* */
public class WxMssVo {
private String touser;//用户openid
private String template_id;//订阅消息模版id
private String page = "pages/index/index";//默认跳到小程序首页
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 getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public Map<String, TemplateData> getData() {
return data;
}
public void setData(Map<String, TemplateData> data) {
this.data = data;
}
}
推送消息的内容
@Data
@AllArgsConstructor
public class TemplateData {
private String value;
}
核心推送方法
public void push(String openid) {
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy年-MM月-dd日 HH:mm:ss");
RestTemplate restTemplate = new RestTemplate();
//这里简单起见我们每次都获取最新的access_token(时间开发中,应该在access_token快过期时再重新获取)
String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + getAccessToken();
//拼接推送的模版
WxMssVo wxMssVo = new WxMssVo();
//用户的openid(要发送给那个用户,通常这里应该动态传进来的)
wxMssVo.setTouser(openid);
//订阅消息模板id template_id
wxMssVo.setTemplate_id("your templateId");
//点击进入小程序首页 page
wxMssVo.setPage("pages/index/index");
Map<String, TemplateData> m = new HashMap<>(3);
//工单类型 汉字 五个字以内
m.put("phrase3", new TemplateData("工单类型"));
//工单内容 20个字以内
m.put("thing8", new TemplateData("工单内容"));
//创建时间
m.put("time7", new TemplateData(simpleDateFormat.format(new Date())));
wxMssVo.setData(m);
ResponseEntity<String> responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
log.info(responseEntity.getBody());
}
public String getAccessToken() {
RestTemplate restTemplate = new RestTemplate();
Map<String, String> params = new HashMap<>();
params.put("APPID", "your AppId");
params.put("APPSECRET", "your AppSecret");
ResponseEntity<String> responseEntity = restTemplate.getForEntity(
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}", String.class, params);
String body = responseEntity.getBody();
JSONObject object = JSON.parseObject(body);
String Access_Token = object.getString("access_token");
String expires_in = object.getString("expires_in");
System.out.println("有效时长expires_in:" + expires_in);
return Access_Token;
}
调用 push(openId)