微信公众号模板消息发送接口代码详解
微信公众号模板消息发送接口代码详解
这段代码是一个用于发送微信模板消息的接口。接口接收一个包含 'openid' 的 Map 对象作为参数,根据这个 'openid' 获取 'access_token',然后使用 RestTemplate 发送 POST 请求,将模板消息推送给指定的用户。
代码解析
/**
* 微信测试账号 发送模板消息
*/
@PostMapping("/push")
public Object push(@RequestBody Map<String, Object> params){
System.out.println(params);
String openid = (String) params.get("openid");
RestTemplate restTemplate = new RestTemplate();
//为了简单测试 这里每次都获取最新的access_token(在实际开发中,应该在 access_token 快过期时再重新获取)
//1.获取access_token
String url0 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&"
+ "appid=" + AppId +
"&secret=" + AppSecret;
String jsonData = restTemplate.getForObject(url0, String.class);
JSONObject jsonObject = JSONObject.parseObject(jsonData);
String access_token = jsonObject.getString("access_token");
log.info("获取到access_token:" + access_token);
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;
//推送的模版 (目前为了简单测试 很多参数都写死,固定了,但也可以根据需要动态传入参数)
WxTemplate wxTe = new WxTemplate();
wxTe.setTouser(openid);//用户的openid(接收人,这里应该传进来的)
wxTe.setTemplate_id("u99_kaT0ZhAtxT4NaAgVhzZF_4xEIbEidbQMKOxz7Ro");//订阅消息模板id
//日期格式定义 转换
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String dateString = dateformat.format(new Date());
Map<String,TemplateData> m = new HashMap<>();
m.put("time", new TemplateData(dateString,"#79CCE9"));
m.put("name", new TemplateData("教练","#FF0000"));
wxTe.setData(m);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, wxTe, String.class);
return JSON.parseObject(responseEntity.getBody());
}
代码主要功能:
- 接收参数: 接口接收一个包含 'openid' 的 Map 对象作为参数,用于识别接收模板消息的用户。
- 获取 'access_token': 通过调用微信接口获取 'access_token',这是使用微信 API 的必要凭证。
- 构建模板消息: 定义 'WxTemplate' 对象,设置模板 ID 和接收人的 'openid',并填充模板数据。
- 发送请求: 使用 RestTemplate 发送 POST 请求,将模板消息推送到指定的用户。
- 返回结果: 返回一个 JSON 对象,包含发送状态等信息。
代码要点:
- 使用 'RestTemplate' 发送 HTTP 请求,方便进行微信 API 调用。
- 使用 'JSONObject' 解析 JSON 数据,方便获取 'access_token' 等信息。
- 使用 'WxTemplate' 对象构建模板消息,方便设置模板 ID、接收人、数据等信息。
- 代码中使用了一些占位符,如 'AppId'、'AppSecret',需要根据实际情况进行替换。
使用说明:
- 将代码部署到服务器上,并配置相应的 'AppId'、'AppSecret' 等信息。
- 在前端代码中调用该接口,传入用户的 'openid' 和模板数据。
- 接口会根据传入的参数,向用户发送相应的模板消息。
代码优化:
- 可以使用缓存机制,缓存 'access_token',避免每次都获取,提高接口效率。
- 可以将模板 ID、模板数据等信息进行封装,提高代码可读性和可维护性。
- 可以添加异常处理机制,确保接口的稳定性。
其他说明:
- 这段代码只演示了发送模板消息的基本流程,具体的实现可能需要根据实际情况进行调整。
- 使用微信 API 需要遵守微信的接口规范,并进行必要的安全验证。
希望本文对您了解微信公众号模板消息发送接口有所帮助!
原文地址: https://www.cveoy.top/t/topic/oOAG 著作权归作者所有。请勿转载和采集!