微信服务号推送服务模板消息
原创大约 2 分钟
微信服务号推送服务模板消息
记录通过微信服务号推送服务模版消息的实现
业务需求
项目中存在金额待支付,需要实时提醒微信用户;小程序的服务推送是一次性的,且需要用户点击授权才能推送,授权一次可发送一条,不符合业务需求;在查看官方文档后发现服务号的模板推送是可以实现的,具体可查看 接口实现
以及 模板消息运营规范
。
认证的服务号
要使用模板功能,该服务号必须是认证的,且接收的对象必须关注此服务号,否则无法推送
服务号中添加模板
在添加模板之前,需要开通模板消息接口服务,可使用的接口以及限制可在最地下的接口权限查看。
获取access_token
发送模板,需要用到 access_token
,access_token 的获取需要用到 服务号的 appid 及开发者密码 secret,根据文档调用 GET 接口即可获取到;
也可以前往 服务号接口调试,填写对应信息获取测试token
在使用是可能会报错 ip 无效,将该ip添加到白名单中即可
调用后台代码,发送模板消息
@Test
public void httpTest2() {
RestTemplate restTemplate = new RestTemplate();
String ACCESS_TOKEN = "ACCESS_TOKEN ";
String uri = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + ACCESS_TOKEN;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<String> entity = new HttpEntity<>(headers);
String strbody = restTemplate.postForObject(uri, getJsonParas(), String.class);
log.info(strbody);
}
private JSONObject getJsonParas() {
JSONObject jsonObject = new JSONObject();
// openid
jsonObject.put("touser", "ocC-bdsdsdsdsdsdsu1_dOA");
// 模板id
jsonObject.put("template_id", "xxxxxxxxalq4khHFdLjRszwUemRxxxx");
// url
jsonObject.put("url", "http://weixin.qq.com/download");
JSONObject miniprogram = new JSONObject();
miniprogram.put("appid","wx797xxxxxx8e5502");
miniprogram.put("pagepath","pages/homeTab/homeTab");
jsonObject.put("miniprogram",miniprogram);
JSONObject data = new JSONObject();
JSONObject first = new JSONObject();
first.put("value", "您有一笔待支付费用,请尽快支付!");
JSONObject keyword1 = new JSONObject();
keyword1.put("value", "AAA43434");
keyword1.put("color", "#173177");
JSONObject keyword2 = new JSONObject();
keyword2.put("value", "66666 元");
keyword2.put("color", "#173177");
JSONObject keyword3 = new JSONObject();
keyword3.put("value", "产品月付");
keyword3.put("color", "#173177");
JSONObject keyword4 = new JSONObject();
keyword4.put("value", "请尽快支付!");
JSONObject remark = new JSONObject();
remark.put("value", "感谢您的使用!!!");
data.put("first", first);
data.put("keyword1", keyword1);
data.put("keyword2", keyword2);
data.put("keyword3", keyword3);
data.put("keyword4", keyword4);
data.put("remark", remark);
jsonObject.put("data", data);
return jsonObject;
}
此时,我们就可以在微信上收到一条服务通知