微信模板訊息傳送例項
阿新 • • 發佈:2019-01-07
微信公眾號-服務號或者測試號等可以申請高階介面,本例子是以測試號為基礎來寫。
測試號中,模版內容可以自定義,別的號是微信官方定義好的,不可以修改,訂閱號申請不到該介面。
首先定義兩個實體類(完成的實體類)
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迴圈來解決的。。。