歡迎留言、轉發
微信極速開發系列文章:點擊這里
最近有點小感冒,文章的更新進度延誤了一些,希望此系列文章對你
研究微信公眾開發
有幫助。前幾篇文章介紹了微信支付。 公眾號支付、微信掃碼支付、刷卡支付、微信買單
此文來聊聊微信中的業務通知----微信模板消息
如何查看是否有權限
在交流群中,總是有人問
個人訂閱號
、認證的訂閱號
、服務號
、認證的服務號
某個接口是否有權限使用。
其實這個問題很簡單,在【微信公眾平臺】現在已經可以直接查看自己
的公眾號都能使用那些接口。
登錄【微信公眾平臺】進入首頁>開發>接口權限
添加模板消息插件
注意必須是認證的服務號
登錄【微信公眾平臺】進入首頁>添加插件功能>找到模板消息按照指引流程操作即可。
模板消息接口使用規則
官方文檔 發送消息-模板消息接口 以及 模板消息運營規范
關于使用規則,請注意:
1、所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證后的服務號才可以申請模板消息的使用權限并獲得該權限;
2、需要選擇公眾賬號服務所處的2個行業,每月可更改1次所選行業;
3、在所選擇行業的模板庫中選用已有的模板進行調用;
4、每個賬號可以同時使用25個模板。
5、當前每個賬號的模板消息的日調用上限為10萬次,單個模板沒有特殊限制?!?014年11月18日將接口調用頻率從默認的日1萬次提升為日10萬次,可在MP登錄后的開發者中心查看】。當賬號粉絲數超過10W/100W/1000W時,模板消息的日調用上限會相應提升,以公眾號MP后臺開發者中心頁面中標明的數字為準。
添加模板消息
按照上文添加模板消息插件
之后【微信公眾平臺】首頁左側欄就會出現模板消息
菜單,收取點擊進去需要同意協議并設置公眾賬號服務所處的2個行業。
以上設置好了就可以通過關鍵詞查模板庫中已有的模板,如果沒有找到可以自己申請。
找到合適的模板消息點擊詳情,進去查看模板詳情,如果需要添加即可。添加完成會在我的模板中生成模板消息的 模板ID
,模板ID
在后面會用到。
測試號添加模板消息
模板消息接口的使用
客觀前面都是一些準備工作,端杯茶耐心往下看。先來點實際的看看開源項目中封裝的接口是如何使用的。
com.javen.weixin.controller.WeixinMsgController.java
模板消息的封裝
官方參考文檔 具體實現 com.jfinal.weixin.sdk.api.TemplateMsgApi.java
public class TemplateMsgApi {
private static String sendApiUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
/**
* 發送模板消息
* @param jsonStr json字符串
* @return {ApiResult}
*/
public static ApiResult send(String jsonStr) {
String jsonResult = HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessToken().getAccessToken(), jsonStr);
return new ApiResult(jsonResult);
}
}
json數據的封裝
com.jfinal.weixin.sdk.api.TemplateData.java
public class TemplateData {
private String touser;
private String template_id;
private String url;
private String topcolor;
private TemplateItem data;
public static TemplateData New() {
return new TemplateData();
}
private TemplateData() {
this.data = new TemplateItem();
}
public String getTouser() {
return touser;
}
public TemplateData setTouser(String touser) {
this.touser = touser;
return this;
}
public String getTemplate_id() {
return template_id;
}
public TemplateData setTemplate_id(String template_id) {
this.template_id = template_id;
return this;
}
public String getUrl() {
return url;
}
public TemplateData setUrl(String url) {
this.url = url;
return this;
}
public String getTopcolor() {
return topcolor;
}
public TemplateData setTopcolor(String topcolor) {
this.topcolor = topcolor;
return this;
}
public TemplateItem getData() {
return data;
}
public TemplateData add(String key, String value, String color){
data.put(key, new Item(value, color));
return this;
}
/**
* 直接轉化成jsonString
* @return {String}
*/
public String build() {
return JsonUtils.toJson(this);
}
public class TemplateItem extends HashMap<String, Item> {
private static final long serialVersionUID = -3728490424738325020L;
public TemplateItem() {}
public TemplateItem(String key, Item item) {
this.put(key, item);
}
}
public class Item {
private Object value;
private String color;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Item(Object value, String color) {
this.value = value;
this.color = color;
}
}
}