⼩程序发送订阅消息,服务端java代码由于关闭了模版消息发送,所有改为订阅消息发送
⾸先先上官⽅⽂档
发送订阅消息需要在⼩程序端先进⾏订阅,这⾥只是服务端代码
需要的实体类
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) {
}
public String getTemplate_id() {
return template_id;
}
public void setTemplate_id(String 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 = AccessToken();
//        log.info("##accessToken:  " + accessToken);
String accessToken = "29_ZtkUnQ9Ebt7pwqRsqqO1zuAhYWT48Bx5cSkfI7OTYXFc9ZB8d7K7gTYV
FpXLaBwkCzHERFzV0lTay895TtepA9GescOmSMHTyO        SubscribeMessage subscribeMessage = new SubscribeMessage();
//拼接数据
subscribeMessage.setAccess_token(accessToken);
subscribeMessage.setTouser(touser);
subscribeMessage.setTemplate_id(templateId);
subscribeMessage.setPage(page);
subscribeMessage.setData(map);
String json = JSONString(subscribeMessage);
log.info("##订阅发送JSON数据请求:  " + json);
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);    }
有问题欢迎指正。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。