小程序的订阅消息与公众号的订阅消息有些不同, 还请注意了, 别掉坑了!!!
一丶阅读开发文档,需获取的有:
1丶模板推送地址
2丶模板ID
3丶accessToken地址
4丶accessToken类型
二丶获取access_Token
private AccessTokenVo getAccessToken() {
//获取RestTemplate对象
RestTemplate restTemplate = new RestTemplate();
//获取配置信息(自己配置的动态数据)
WxConfigEntity configEntity = wxConfigService.select();
WxConfigEntity.Miniapp miniapp = configEntity.getMiniapp();
//拼接地址
String url = miniapp.getAccessTokenUrl()+"?grant_type="+miniapp.getAccessType()+"&appid="+miniapp.getAppid()+"&secret="+miniapp.getSecret();
//发起请求获取json数据(get请求)
String json = restTemplate.getForObject(url,String.class);
//数据返回
return JSONObject.parseObject(json,AccessTokenVo.class);
}
三丶发送订阅消息
/**
* 发送订阅消息
*
* @param openId 小程序openId
* @param templateId 模板ID
* @param list 模板字段对应推送内容
* @param pageUrl 点击详情返回地址
* @return
*/
private SubscribeReturn pushMsg(String openId, String templateId, List<TemplateContent> list, String pageUrl) {
//获取配置内容
WxConfigEntity.Miniapp miniapp = wxConfigService.select().getMiniapp();
//获取accessToken
String accessToken = getAccessToken().getAccess_token();
//拼接请求地址
String url = miniapp.getPushTemplateUrl()+"?access_token="+accessToken;
//创建拼接推送的模板的对象
WeChatPushMsgVo msgVo = new WeChatPushMsgVo();
//获取map
Map<String, TemplateData> map = new HashMap<>();
//数据遍历
for (TemplateContent content : list) {
//数据定义封装(key需要符合小程序模板的规范)
TemplateData templateData = new TemplateData();
templateData.setValue(content.getValue());
map.put(content.getKey(),templateData);
}
//装载数据
msgVo.setTouser(openId).setAccess_token(accessToken).setTemplate_id(templateId).setPage(pageUrl).setData(map);
//请求地址返回数据
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, msgVo, String.class);
//数据返回
return JSONObject.parseObject(responseEntity.getBody(),SubscribeReturn.class);
}
五丶选择模板对应模板字段
这样就可以推送小程序的订阅消息了