1. 程式人生 > >java微信模板訊息介面的使用

java微信模板訊息介面的使用

通過之前的微信開發分享我們應該知道微信如果要給使用者主動傳送訊息可以使用客服訊息或多客服,但是傳送客服訊息使用者需在48小時內和微信公眾號有過互動,也就是說如果48小時內使用者沒和公眾號互動過,即使發了客服訊息使用者也可能接不到。除了上面的訊息形式外,其實微信還提供了一種模板訊息。下面是我總結的一些關於模板訊息的優缺點

一  模板訊息的優缺點

優點:顯示形式有別於其他訊息,資訊通俗易懂且要美觀一些是一種通知類訊息,可以主動給使用者傳送,使用者只需關注公眾號不需要和公眾號有互動;可根據行業的不同傳送個性化訊息

缺點:訊息內容固定,不能進行過多的定製化

二  使用條件

已經通過微信認證的公眾號並且已經申請開通過模板訊息介面,而且還需要從模板庫中選擇過模板並已新增到自己的公眾平臺

首先點這裡的按鈕:


之後找到合適模板點“新增按鈕”


三  程式呼叫模板訊息傳送介面

1  模板訊息由於模板選取不同需要傳入引數的名稱、值、引數個數也不同首先要封裝2個實體

package com.debug.weixin.pojo;

public class TemplateParam {
	// 引數名稱
	private String name;
	// 引數值
	private String value;
	// 顏色
	private String color;
	
    public TemplateParam(String name,String value,String color){
    	this.name=name;
    	this.value=value;
    	this.color=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;
	}
	
	

}

package com.debug.weixin.pojo;

import java.util.List;

public class Template {

	// 訊息接收方
	private String toUser;
	// 模板id
	private String templateId;
	// 模板訊息詳情連結
	private String url;
	// 訊息頂部的顏色
	private String topColor;
	// 引數列表
	private List<TemplateParam> templateParamList;

	public String getToUser() {
		return toUser;
	}

	public void setToUser(String toUser) {
		this.toUser = toUser;
	}

	public String getTemplateId() {
		return templateId;
	}

	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}

	public String getUrl() {
		return url;
	}

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

	public String getTopColor() {
		return topColor;
	}

	public void setTopColor(String topColor) {
		this.topColor = topColor;
	}
	
	public String toJSON() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("{");
		buffer.append(String.format("\"touser\":\"%s\"", this.toUser)).append(",");
		buffer.append(String.format("\"template_id\":\"%s\"", this.templateId)).append(",");
		buffer.append(String.format("\"url\":\"%s\"", this.url)).append(",");
		buffer.append(String.format("\"topcolor\":\"%s\"", this.topColor)).append(",");
		buffer.append("\"data\":{");
		TemplateParam param = null;
		for (int i = 0; i < this.templateParamList.size(); i++) {
		     param = templateParamList.get(i);
		    // 判斷是否追加逗號
			if (i < this.templateParamList.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 List<TemplateParam> getTemplateParamList() {
		return templateParamList;
	}

	public void setTemplateParamList(List<TemplateParam> templateParamList) {
		this.templateParamList = templateParamList;
	}

}


2  傳送模板訊息的主要方法

public static boolean sendTemplateMsg(String token,Template template){
		
		boolean flag=false;
		
		String requestUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
		requestUrl=requestUrl.replace("ACCESS_TOKEN", token);
	
		JSONObject jsonResult=CommonUtil.httpsRequest(requestUrl, "POST", template.toJSON());
		if(jsonResult!=null){
			int errorCode=jsonResult.getInt("errcode");
			String errorMessage=jsonResult.getString("errmsg");
			if(errorCode==0){
				flag=true;
			}else{
				System.out.println("模板訊息傳送失敗:"+errorCode+","+errorMessage);
				flag=false;
			}
		}
		return flag;
		
		
		
}

3 呼叫模板訊息的傳送方法
Template tem=new Template();
tem.setTemplateId("LhEDNAdkTcax7gzPetV1hnAmbSoXuo22OEJ8eix1iAw");
tem.setTopColor("#00DD00");
tem.setToUser("oWOHzsm8htRGTadf14eDdcnLsAjM");
tem.setUrl("");
		
List<TemplateParam> paras=new ArrayList<TemplateParam>();
paras.add(new TemplateParam("first","我們已收到您的貨款,開始為您打包商品,請耐心等待: )","#FF3333"));
paras.add(new TemplateParam("orderMoneySum","¥20.00","#0044BB"));
paras.add(new TemplateParam("orderProductName","火燒牛乾巴","#0044BB"));
paras.add(new TemplateParam("Remark","感謝你對我們商城的支援!!!!","#AAAAAA"));
		
tem.setTemplateParamList(paras);
		
boolean result=sendTemplateMsg(token,tem);


最後看下微信上收到的訊息長什麼樣


由於本人使用的是android手機,訊息上面帶顏色的顏色條看不出來,如果是土豪用的蘋果手機則顯示成下面這樣