【微信公众号开发】【12】模板消息

前言:

1,模板消息接口的使用规则可在官方文档中查看(官方文档地址见第一章)

2,自己申请的模板一般很难过审核,有发送模板消息的需求时,最好先在模板库中找到适合的模板

3,模板消息是主动发送给用户的通知类消息

4,模板ID最好写在配置文件中,命名易于区分,写备注,不然日后容易混乱

正文:

1,新建模板

{{first.DATA}} 
文章标题:{{keyword1.DATA}} 
作者名称:{{keyword2.DATA}} 
分类:{{keyword3.DATA}} 
{{remark.DATA}}

2,发送模板消息

private String TEMPLATE_MSG_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s";

private void remind(Register info) 
{
    String accessToken = ""; //获取token,在第二章有介绍
    String url = String.format(TEMPLATE_MSG_URL, accessToken);
    String templateId = Config.XXX; //模板ID,存在配置文件中
    
    String json = TemplateData.New()
            .setTouser(info.getOpenId())
            .setTemplate_id(templateId)                        
            .setUrl("XXX")
            .setColor("")
            .add("first", "尊敬的" + regInfo.getName() + "XXXXX", "")
            .add("keyword1", regInfo.getTitle(), "")
            .add("keyword2", regInfo.getName(), "")
            .add("keyword3", regInfo.getType(), "")
            .add("remark", "XXX", "")
            .build();
    
    JSONObject jsonObject = HttpRequest.httpRequest(url, "POST", json);
    
    if (null != jsonObject) {
        if (0 != jsonObject.getInt("errcode")) {
            logger.info(String.format("patientAskRemindAsst error:%s %s", jsonObject.getInt("errcode"), jsonObject.getString("errmsg")));
        }
    }
}

TemplateData

package com.bf.weixin.params;

import java.util.HashMap;

import net.sf.json.JSONObject;

public class TemplateData {
    
    private String touser;    //接收者openid

    private String template_id;    //模板ID
    
    private String url;    //模板跳转链接
    
    private String color;    //模板内容字体颜色,不填默认为黑色
    
    private TemplateItem data;    //模板数据
    
    public static TemplateData New() {
        return new TemplateData();
    }

    private TemplateData() {
        this.data = new TemplateItem();
    }

    public String getTouser() {
        return touser;
    }

    public TemplateData setTouser(String touser) {
        this.touser = touser;
        return this;
    }

    public String getTemplate_id() {
        return template_id;
    }

    public TemplateData setTemplate_id(String template_id) {
        this.template_id = template_id;
        return this;
    }

    public String getUrl() {
        return url;
    }

    public TemplateData setUrl(String url) {
        this.url = url;
        return this;
    }

    public String getColor() {
        return color;
    }

    public TemplateData setColor(String color) {
        this.color = color;
        return this;
    }

    public TemplateItem getData() {
        return data;
    }

    public TemplateData add(String key, String value, String color){
        data.put(key, new Item(value, color));
        return this;
    }
    
    /**
     * 直接转化成jsonString
     * @return {String}
     */
    public String build() {
        return JSONObject.fromObject(this).toString();
    }

    public class TemplateItem extends HashMap<String, Item> {

        private static final long serialVersionUID = -3728490424738325020L;
        
        public TemplateItem() {}

        public TemplateItem(String key, Item item) {
            this.put(key, item);
        }
    }

    public class Item {
        private Object value;
        private String color;

        public Object getValue() {
            return value;
        }
        public void setValue(Object value) {
            this.value = value;
        }
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }

        public Item(Object value, String color) {
            this.value = value;
            this.color = color;
        }
    }

}
原文地址:https://www.cnblogs.com/huashengweilong/p/10399894.html