admin管理员组

文章数量:1794759

微信小程序发送订阅消,服务端java代码

微信小程序发送订阅消,服务端java代码

由于微信关闭了模版消发送,所有改为订阅消发送

首先先上官方文档

subscribeMessage.send | 微信开放文档

发送订阅消需要在小程序端先进行订阅,这里只是服务端代码

需要的实体类

SubscribeMessage.java TemplateData.java import java.util.Map; /** * 订阅消 * @author liangkesai * @email 1312584@qq * @date 2020/1/7 10:57 */ public class SubscribeMessage { //接口调用凭证 private String access_token; //接收者(用户)的 openid private String touser; //所需下发的订阅模板id private String template_id; //点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 private String page; //模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } } private Map<String, TemplateData> data; public String getAccess_token() { return access_token; } public void setAccess_token(String access_token) { this.access_token = access_token; } public String getTouser() { return touser; } public void setTouser(String touser) { this.touser = touser; } public String getTemplate_id() { return template_id; } public void setTemplate_id(String template_id) { this.template_id = template_id; } public String getPage() { return page; } public void setPage(String page) { this.page = page; } public Map<String, TemplateData> getData() { return data; } public void setData(Map<String, TemplateData> data) { this.data = data; } }

/** * @author liangkesai * @email 1312584@qq * @date 2020/1/7 10:58 */ public class TemplateData { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public TemplateData(String value) { this.value = value; } }

具体发送方法,获取AccessToken和sendPost就不在这里写了,我的其它文章中有

/** * 发送订阅消sendTemplateMessage * 小程序订阅消,发送服务通知 * * @param touser 接收者(用户)的 openid * @param templateId 所需下发的模板消的id * @param page 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 */ public static void subscribeMessage(String touser, String templateId, String page, Map<String, TemplateData> map) { // String accessToken = GetTokenUtil.getAccessToken(); // log.info("##accessToken: " + accessToken); String accessToken = "29_ZtkUnQ9Ebt7pwqRsqqO1zuAhYWT48Bx5cSkfI7OTYXFc9ZB8d7K7gTYVFpXLaBwkCzHERFzV0lTay895TtepA9GescOmSMHTyOmpjemiXPqNXGuz6KBdMy0oJGUk8GvvY3S86R1sw9Gljjx6QTGaAFAFIV"; SubscribeMessage subscribeMessage = new SubscribeMessage(); //拼接数据 subscribeMessage.setAccess_token(accessToken); subscribeMessage.setTouser(touser); subscribeMessage.setTemplate_id(templateId); subscribeMessage.setPage(page); subscribeMessage.setData(map); String json = JSONObject.toJSONString(subscribeMessage); log.info("##订阅发送JSON数据请求: " + json); // private static final String SUBSCRIBEMESSAGE = "api.weixin.qq/cgi-bin/message/subscribe/send?access_token="; // Wechat.SUBSCRIBEMESSAGE 是一个常量,放到上面了 String ret = UrlUtils.sendPost(Wechat.SUBSCRIBEMESSAGE + accessToken, json); //如果不想找sendPost,可以借用Unirest 来发送 2选1 引的jar放在最下方了 // JsonNode ret = null; // try { // ret = Unirest.post(Wechat.SUBSCRIBEMESSAGE + accessToken).body(json).asJson().getBody(); // } catch (UnirestException e) { // e.printStackTrace(); // } log.info("##订阅发送JSON数据返回: " + ret); System.out.println(ret); }

使用Unirest发送需要引的jar

<!-- mvnrepository/artifact/com.mashape.unirest/unirest-java --> <dependency> <groupId>com.mashape.unirest</groupId> <artifactId>unirest-java</artifactId> <version>1.4.9</version> </dependency>

测试

public static void main(String[] args) { Map<String, TemplateData> map = new HashMap<>(); map.put("thing4", new TemplateData("这是一个打卡名称2")); map.put("time2", new TemplateData("18:00")); map.put("thing6", new TemplateData("101次")); map.put("thing3", new TemplateData("大兴区北京印刷学院")); subscribeMessage("*****", Wechat.CLOCK_NOTICE_TEMPLATEID, "pages/*******", map); }

有问题欢迎指正。

本文标签: 服务端代码程序微信小java