微信公众号发送模板消息
一、controller方法
@RestController
@RequestMapping("/public/num")
public class SendTemplateMsg {
@GetMapping("/sendOnlyMsg")
public String sendOnlyMsg(String openId){
Map<String, WeChatTemplateMsg> msgHashMap = new HashMap<>();
msgHashMap.put("name",new WeChatTemplateMsg("张三"));
RestTemplate accessTemplate = new RestTemplate();
//公众号appid和秘钥
String appid = "";
String s= "";
String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + s;
String response = accessTemplate.getForObject(accessTokenUrl, String.class);
JSONObject object = JSONObject.parseObject(response);
String accessToken = object.getString("access_token");
//发送消息的url
String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
//封装消息信息
HashMap<String, Object> bodyMsg = new HashMap<>();
//模板id
bodyMsg.put("template_id","");
//模板内容
bodyMsg.put("data",msgHashMap);
//openId
bodyMsg.put("touser", openId);
//设置跳转小程序页面
JSONObject miniprogram = new JSONObject();
//小程序的appid
miniprogram.put("appid", Configure.appID);
//跳转页面路径
miniprogram.put("path", "pages/home/home");
bodyMsg.put("miniprogram",miniprogram);
//url设置后是跳转H5页面
bodyMsg.put("url","");
RestTemplate msgTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = msgTemplate.postForEntity(msgUrl,bodyMsg,String.class);
if (responseEntity.getStatusCode() != HttpStatus.OK) {
System.out.println("推送消息异常: " + openId);
}
return "成功";
}
/**
* 通过微信接口获得微信公众号订阅者的openid
* @param accessToken
* @return
*/
public static List<String> getOpenIdsFromWX(String accessToken) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + accessToken;
ResponseEntity<String> response = restTemplate.postForEntity(url, null, String.class);
JSONObject object = JSONObject.parseObject(response.getBody());
List<String> openIds = JSONObject.parseArray(object.getJSONObject("data").getString("openid"), String.class);
return openIds;
}
}
二、模板信息
@Data
public class WeChatTemplateMsg {
/**
* 消息
*/
private String value;
/**
* 消息颜色
*/
private String color;
public WeChatTemplateMsg(String value) {
this.value = value;
this.color = "#173177";
}
public WeChatTemplateMsg(String value, String color) {
this.value = value;
this.color = color;
}
}
一个在学习的开发者,勿喷,欢迎交流