1.获取access_token:
private static String appId = "微信公众号的appId";
private static String appSecret = "微信公众号的appSecret";
/**
* 获取access_token
*
* @return
*/
public static String getToken() {
String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
String resp = HttpUtil.get(requestUrl);
JSONObject result = JSONUtil.parseObj(resp);
String token = result.getStr("access_token");
return token;
}
2.获取关注了该公众号的用户信息列表:
/**
* 获取关注了该公众号的用户信息列表
*
* @param accessToken
* @return
*/
public static List<String> getUserList(String accessToken) {
String requestUrl = weChat_get_user_url + accessToken;
String resp = HttpUtil.get(requestUrl);
JSONObject result = JSONUtil.parseObj(resp);
JSONArray openIdJsonArray = result.getJSONObject("data").getJSONArray("openid");
List<String> openIds = JSONUtil.toList(openIdJsonArray, String.class);
return openIds;
}
3.发送公众号模板信息:
// 公众号的模板id(也有相应的接口可以查询到)
private static String templateId = "XXXXXX";
/**
* 发送模板信息
*/
public static void sendMessage() {
// 微信的基础accessToken
String accessToken = getToken();
//openId代表一个唯一微信用户,即微信消息的接收人
List<String> openIds = getUserList(accessToken);
String url = weChat_get_access_token + accessToken;
//获取天数
String date = DateUtil.format(new Date(), "yyyy-MM-dd");
Week week = DateUtil.dayOfWeekEnum(new Date());
// 模板参数(根据微信公众号定义的模板规则定义)
Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
sendMag.put("morning", new WeChatTemplateMsg("早安,保持好一天的好心情哈"));
sendMag.put("date", new WeChatTemplateMsg(date));
sendMag.put("week", new WeChatTemplateMsg(week.toChinese()));
sendMag.put("city", new WeChatTemplateMsg("333"));
sendMag.put("weather", new WeChatTemplateMsg("444"));
sendMag.put("lowest", new WeChatTemplateMsg("r555"));
sendMag.put("highest", new WeChatTemplateMsg("r555"));
sendMag.put("pop", new WeChatTemplateMsg("r555"));
sendMag.put("tips", new WeChatTemplateMsg("r555"));
sendMag.put("loveDay", new WeChatTemplateMsg("r555"));
sendMag.put("myBirthday", new WeChatTemplateMsg("r555"));
sendMag.put("babyBirthday", new WeChatTemplateMsg("r555"));
sendMag.put("pipi", new WeChatTemplateMsg(getRainbowContent()));
RestTemplate restTemplate = new RestTemplate();
for (int i = 0; i < openIds.size(); i++) {
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("touser", openIds.get(i)); // openId
//sendBody.put("url", "www.baidu.com"); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId); // 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);
}
}