欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微信公众号模板消息推送

程序员文章站 2024-03-15 14:33:11
...

微信公众号模板消息推送

第一步,在微信公众平台添加模板

微信公众号模板消息推送

第二步,根据所需JSON创建封装实体类

微信模板消息发送API

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277

所需要的JSON格式,这个要根据自己选中的模板来定具体参数

 {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",  
           "miniprogram":{
             "appid":"xiaochengxuappid12345",
             "pagepath":"index?foo=bar"
           },          
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "keyword1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keyword2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keyword3": {
                       "value":"2014年9月22日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }

我自己选中的模板样式:

微信公众号模板消息推送

所以创建了一下实体:

public class TemplateMessage {

    //用户openid
    private String touser;

    //模板消息ID
    private String template_id;

    //详情跳转页面
    private String url;

    //模板数据封装实体
    private Data data;

    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 getUrl() {
        return url;
    }

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

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }
}
public class Data {

    private  Content first;
    private  Content keyword1;
    private  Content keyword2;
    private  Content keyword3;
    private  Content keyword4;
    private  Content remark;

    public Content getKeyword4() {
        return keyword4;
    }

    public void setKeyword4(Content keyword4) {
        this.keyword4 = keyword4;
    }

    public Content getFirst() {
        return first;
    }

    public void setFirst(Content first) {
        this.first = first;
    }

    public Content getKeyword1() {
        return keyword1;
    }

    public void setKeyword1(Content keyword1) {
        this.keyword1 = keyword1;
    }

    public Content getKeyword2() {
        return keyword2;
    }

    public void setKeyword2(Content keyword2) {
        this.keyword2 = keyword2;
    }

    public Content getKeyword3() {
        return keyword3;
    }

    public void setKeyword3(Content keyword3) {
        this.keyword3 = keyword3;
    }

    public Content getRemark() {
        return remark;
    }

    public void setRemark(Content remark) {
        this.remark = remark;
    }
}
public class Content {

    //消息内容
    private String value;

    //消息字体颜色
    private String color;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getColor() {
        return color;
    }

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

第三步,配置文件application.properties中配置请求路径,模板ID,跳转路径等

#模板ID
Template=ra6vbHS2MY060Zt5VrkGEAySMens4Tpca4I8zE7FNTo

#跳转页面路径
HaveALook=www.baidu.com

第四步,开发消息发送业务接口(这是局部代码,其中ResponseVo是自定义返回对象,可以不关注,换成string或你们的自定义返回对象就好):

/**
 * 发送模板消息
 * @param content
 * @return
 */
 ResponseVO TemplateMessage(String content);


/**
 * 模板消息请求路径
 */
private static String  TemplateMessage_Url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";

 /**
     * 模板消息推送
     * @param content   要发送的JSON
     * @return
     */
    public ResponseVO TemplateMessage(String content){
        //获得令牌
        String accessToken = tokenFeignService.getToken();

        //创建返回实体对象
        ResponseVO vo = new ResponseVO();
        //获得新的token
        String url=TemplateMessage_Url.replace("ACCESS_TOKEN", accessToken);

        //调用接口进行发送
        JSONObject jsonObject = httpRequest(url, "POST", content);
        Integer errcode = jsonObject.getInteger("errcode");
        String errorCodeText = ErrorCodeText.errorMsg(errcode);

        if (errcode == 0){
            vo.setSuccess(true);
        }else{
            vo.setSuccess(false);
        }
        vo.setCode(errcode);
        vo.setText(errorCodeText);
        return vo;

    }

第五步,前端控制器

//引入跳转路径
@Value("${HaveALook}")
private String HaveALook;

//引入模板ID
@Value("${Template}")
private String Template;
@GetMapping("/test")
 public String test(){
    //创建消息发送实体对象
    TemplateMessage templateMessage=new TemplateMessage();
    templateMessage.setUrl(HaveALook);
    templateMessage.setTouser("oKWFV1K4-88PuhQiw80syHB");
    templateMessage.setTemplate_id(Template);
    //设置模板标题
    Content first=new Content();
    first.setValue("预警");
    first.setColor("#FF0000");
    //设置模板内容
    Content keyword1=new Content();
    keyword1.setValue("测试");
    keyword1.setColor("#FF0000");
    //设置模板位置
    Content keyword2=new Content();
    keyword2.setValue("菇房");
    keyword2.setColor("#FF0000");
    //设置设备
    Content keyword3=new Content();
    keyword3.setValue("传感器设备");
    keyword3.setColor("#FF0000");
    //设置时间
    Content keyword4=new Content();
    SimpleDateFormat format=new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
    String format1 = format.format(new Date());
    keyword4.setValue(format1);
    keyword4.setColor("#FF0000");
    //设置跳转内容
    Content remark=new Content();
    remark.setValue("点此处查看详情");
    remark.setColor("#FF0000");
    //创建模板信息数据对象
    Data data=new Data();
    data.setFirst(first);
    data.setKeyword1(keyword1);
    data.setKeyword2(keyword2);
    data.setKeyword3(keyword3);
    data.setKeyword4(keyword4);
    data.setRemark(remark);
    templateMessage.setData(data);

    //将封装的数据转成JSON
    String jsonString = JSON.toJSONString(templateMessage);
    weixinMessageService.TemplateMessage(jsonString);
    return jsonString;
 }