需要access_token,appid,secret,订阅者的openid,template_id(模板ID)
package com.xxxy.tower.service.impl; import com.xxxy.tower.dto.AccessTokenInfo; import com.xxxy.tower.service.WxSubscribeService; import com.xxxy.tower.util.HttpClientUtil; import com.xxxy.tower.util.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; @Slf4j public class WxSubscribeService { public boolean sendMsg() { String accessToken = getAccessToken(); String openId = user.getOpenId(); String templateId = "qxz3pJIwAZaw8zGOiYRp_mw90UHUMfEJDMw8mkpfVGA"; Map<String, Object> params = new HashMap<>(); Map<String, Object> data = new HashMap<>(); params.put("touser", openId); params.put("template_id", templateId); //设备编号 data.put("character_string1", getDataMap("设备编号")); //报警类别 data.put("thing3", getDataMap("报警类别")); //报警地点 data.put("thing7", getDataMap("报警地点")); //报警内容 data.put("thing19", getDataMap("报警内容")); // log.info(); params.put("data", data); String json = JsonUtils.objectToJson(params); log.info(json); String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken; String response = HttpClientUtil.doPostJson(url, json); log.info(response); return true; } public static String getAccessToken(){ String grant_type="client_credential"; //封装请求数据 Map<String, String> params = new HashMap<>(); params.put("grant_type", grant_type); params.put("appid", "xxxxxxxxxxxx"); params.put("secret", "xxxxxxxxxxxxxxxxxxxxx"); //发送GET请求 String url = "https://api.weixin.qq.com/cgi-bin/token"; String response = HttpClientUtil.doGet(url, params); //拿到accessToken try { AccessTokenInfo accessTokenInfo = JsonUtils.jsonToPojo(response, AccessTokenInfo.class); return accessTokenInfo.getAccess_token(); }catch (Exception e) { return null; } } public static Map<String, String> getDataMap(String msg){ Map<String, String> map = new HashMap<>(); map.put("value", msg); return map; } }