需要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;
}
}