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

微信模板消息发送实例

程序员文章站 2024-03-15 14:18:41
...

微信公众号-服务号或者测试号等可以申请高级接口,本例子是以测试号为基础来写。
微信模板消息发送实例
测试号中,模版内容可以自定义,别的号是微信官方定义好的,不可以修改,订阅号申请不到该接口。
首先定义两个实体类(完成的实体类)

package com.gg.wx.pojo;

import java.util.ArrayList;
import java.util.List;

import com.gg.wx.util.CommonUtil;
import com.gg.wx.util.ConstantsActionGo;

/**
 * 模板消息实体类
 * */
public class Template {
    // 消息接收方  
    private String toUser;  
    // 模板id  
    private String templateId;  
    // 模板消息详情链接  
    private String url;  
    // 消息顶部的颜色  
    private String topColor;  
    // 参数列表  
    private List<TemplateParam> templateParamList;
    //url 为微信公众号token和模板ID
    public  Template(String ToUser,List<TemplateParam> paras,String type,String name){
        this.toUser = ToUser;
        this.templateId = ConstantsActionGo.TEMPLATE_ID;//消息模板ID
        this.templateParamList = paras;
    }

    public String getToUser() {
        return toUser;
    }
    public String getTemplateId() {
        return templateId;
    }
    public String getUrl() {
        return url;
    }
    public String getTopColor() {
        return topColor;
    }
    public void setTopColor(String topColor) {
        this.topColor = topColor;
    }
    public List<TemplateParam> getTemplateParamList() {
        return templateParamList;
    } 
}
package com.gg.wx.pojo;

public class TemplateParam {
    // 参数名称  
    private String name;  
    // 参数值  
    private String value;  
    // 颜色  
    private String color;  

    public String getName() {  
        return name;  
    }  

    public void setName(String name) {  
        this.name = name;  
    }  

    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;  
    } 

    public TemplateParam(String name,String value,String color){  
        this.name=name;  
        this.value=value;  
        this.color=color;  
    } 
}

下面就是调用微信模板消息的方法,可以先去微信公众号开发官方网站看一下模板消息开发

package com.gg.wx.util;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONObject;

import com.gg.wx.pojo.Template;
import com.gg.wx.pojo.TemplateParam;
public class TempletUtil {

 public static boolean sendTemplateMsg(Template template){  
        boolean flag=false;  
        //url 为模板消息请求接口 和 微信token拼接
        String url = ConstantsActionGo.TEMPLATE_API + CommonUtil.getToken(ConstantsActionGo.WECHAT_ACTIONGO_APPID,
                ConstantsActionGo.WECHAT_ACTIONGO_APPSECRET).getAccessToken();
        JSONObject jsonResult=CommonUtil.httpsRequest(url, "POST", toJSON(template));  
        if(jsonResult!=null){  
            int errorCode=jsonResult.getInt("errcode");  
            String errorMessage=jsonResult.getString("errmsg");  
            if(errorCode==0){  
                flag=true;  
                System.out.println("模板消息发送成功");
            }else{  
                System.out.println("模板消息发送失败:"+errorCode+","+errorMessage);  
                flag=false;  
            }  
        }  
        return flag;  
} 

   public static void Template(String ToUser,String type,String name) {
       List<TemplateParam> paras=new ArrayList<TemplateParam>();  
        paras.add(new TemplateParam("first","您好,你有新的"+type,"#FF3333"));  
        paras.add(new TemplateParam("keyword1",name,"#0044BB"));  
        paras.add(new TemplateParam("keyword2",type,"#0044BB"));
        paras.add(new TemplateParam("remark","请尽快处理!","#0044BB"));

        Template tem = new Template(ToUser,paras,type,name);  
        boolean result=sendTemplateMsg(tem);  
        System.out.println("調用成功");
   } 

   public static String toJSON(Template template) {  
       StringBuffer buffer = new StringBuffer();  
       buffer.append("{");  
       buffer.append(String.format("\"touser\":\"%s\"", template.getToUser())).append(",");  
       buffer.append(String.format("\"template_id\":\"%s\"", template.getTemplateId())).append(",");  
       //消息连接
       //buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");  
       buffer.append(String.format("\"topcolor\":\"%s\"", template.getTopColor())).append(",");  
       buffer.append("\"data\":{");  
       TemplateParam param = null;  
       for (int i = 0; i < template.getTemplateParamList().size(); i++) {  
            param = template.getTemplateParamList().get(i);  
           // 判断是否追加逗号  
           if (i < template.getTemplateParamList().size() - 1){  
               buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"},", param.getName(), param.getValue(), param.getColor()));  
           }else{  
               buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"}", param.getName(), param.getValue(), param.getColor()));  
           }  
       }  
       buffer.append("}");  
       buffer.append("}");
       return buffer.toString();  
   }

   public static void main(String args[]){
       //第一个参数为用户关注微信后的唯一标识OpenId,第二个和第三个参数根据自己需要传递
       Template("onvI8w_23T****************","调休申请","武腾坤");
   }
}

“`

运行结果

微信模板消息发送实例

方法中用到的CommonUtil 类为微信开发工具类,详细代码请查看柳峰老师的博客。 群发我是用for循环来解决的。。。

相关标签: 微信 模板消息