1. 程式人生 > >微信模板訊息傳送例項

微信模板訊息傳送例項

微信公眾號-服務號或者測試號等可以申請高階介面,本例子是以測試號為基礎來寫。
這裡寫圖片描述
測試號中,模版內容可以自定義,別的號是微信官方定義好的,不可以修改,訂閱號申請不到該介面。
首先定義兩個實體類(完成的實體類)

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迴圈來解決的。。。