国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

微信公眾平臺 發送模板消息(Java接口開發)

2024-05-06 16:50:01
字體:
來源:轉載
供稿:網友

前言:最近一直再弄微信掃碼推送圖文消息和模板消息發送,感覺學習到了不少東西。今天先總結一下微信公眾平臺模板消息的發送。因為這個自己弄了很久,開始很多地方不明白,所以今天好好總結一下。

微信公眾平臺技術文檔:模板消息接口

一、概述

模板消息僅用于公眾號向用戶發送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。不支持廣告等營銷類消息以及其它所有可能對用戶造成騷擾的消息。

關于使用規則,請注意:

1、所有服務號都可以在功能->添加功能插件處看到申請模板消息功能的入口,但只有認證后的服務號才可以申請模板消息的使用權限并獲得該權限; 
2、需要選擇公眾賬號服務所處的2個行業,每月可更改1次所選行業; 
3、在所選擇行業的模板庫中選用已有的模板進行調用; 
4、每個賬號可以同時使用25個模板。 
5、當前每個賬號的模板消息的日調用上限為10萬次,單個模板沒有特殊限制。【2014年11月18日將接口調用頻率從默認的日1萬次提升為日10萬次,可在MP登錄后的開發者中心查看】。當賬號粉絲數超過10W/100W/1000W時,模板消息的日調用上限會相應提升,以公眾號MP后臺開發者中心頁面中標明的數字為準。

關于接口文檔,請注意:

1、模板消息調用時主要需要模板ID和模板中各參數的賦值內容; 
2、模板中參數內容必須以”.DATA”結尾,否則視為保留字; 
3、模板保留符號”{{ }}”。

看微信公眾平臺接口文檔最開始我的內心是崩潰的,因為目錄列表一開始就是設置所屬行業,獲取所屬行業信息等。后來整理思路,我們主要負責的功能的實現,就不去考慮那么多其他的內容,直接弄模板消息的發送。但是發送模板之前有一個很重要的步驟,就是模板ID(template_id)。微信公眾平臺發送模板消息有嚴格的要求,參考模板消息運營規范

二、模板消息的設計

這里是依靠微信公眾平臺測試公眾號的模板消息接口來設計消息模板,通過行業類型來獲取模板的同學還是參考微信公眾平臺的官方文檔來學習。

1 新增模板消息

微信公眾平臺,發送模板消息,Java

微信的測試公眾號為我們提供了測試的消息模板,最多可添加10個(感覺夠用,畢竟只是測試),新增測試模板。 

微信公眾平臺,發送模板消息,Java

(1)添加模板標題和模板內容 

微信公眾平臺,發送模板消息,Java

模板標題比較好理解,模板內容需要設計參數,參數需以{{開頭,以.DATA}}結尾。 

例如:{{first.DATA}} 

first就是我們接口傳的參數。

{{first.DATA}} 商品:{{keynote1.DATA}} 價格:{{keynote2.DATA}} 日期:{{keynote3.DATA}} {{remark.DATA}}

新增之后就可以看到模板記錄,就有我們需要的模板ID了。有了模板ID我們就可以按照接下來的微信公眾平臺發送模板消息接口來實現我們的功能。 

微信公眾平臺,發送模板消息,Java

三、發送模板消息

1 接口調用請求說明

http請求方式: POST

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

2 POST數據說明

POST數據示例如下:

 {      "touser":"OPENID",      "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",      "url":"http://weixin.qq.com/download",       "miniprogram":{       "appid":"xiaochengxuappid12345",       "pagepath":"index?foo=bar"      },           "data":{          "first": {            "value":"恭喜你購買成功!",            "color":"#173177"          },          "keynote1":{            "value":"巧克力",            "color":"#173177"          },          "keynote2": {            "value":"39.8元",            "color":"#173177"          },          "keynote3": {            "value":"2014年9月22日",            "color":"#173177"          },          "remark":{            "value":"歡迎再次購買!",            "color":"#173177"          }      }    }

3 參數說明

 

參數 是否必填 說明、
touser 接收者openid
template_id 模板ID
url 模板跳轉鏈接
miniprogram 跳小程序所需數據,不需跳小程序可不用傳該數據
appid 所需跳轉到的小程序appid(該小程序appid必須與發模板消息的公眾號是綁定關聯關系)
pagepath 所需跳轉到小程序的具體頁面路徑,支持帶參數,(示例index?foo=bar)
data 模板數據

 

注:url和miniprogram都是非必填字段,若都不傳則模板無跳轉;若都傳,會優先跳轉至小程序。開發者可根據實際需要選擇其中一種跳轉方式即可。當用戶的微信客戶端版本不支持跳小程序時,將會跳轉至url。

4 java接口開發

(1)封裝請求參數Demo

public class TemplateData {   private String value;   private String color;   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 class WechatTemplate {   private String touser;   private String template_id;   private String url;   private Map<String, TemplateData> data;   public String getTouser() {     return touser;   }   public void setTouser(String touser) {     this.touser = touser;   }   public String getTemplate_id() {     return template_id;   }   public void setTemplate_id(String template_id) {     this.template_id = template_id;   }   public String getUrl() {     return url;   }   public void setUrl(String url) {     this.url = url;   }   public Map<String, TemplateData> getData() {     return data;   }   public void setData(Map<String, TemplateData> data) {     this.data = data;   } } 

(2)發送模板消息方法

public class TemplateMessageServiceImpl implements TemplateMessageService{  private RestTemplate restTemplate ;   private String serviceHost = "https://api.weixin.qq.com";  public TemplateMessageServiceImpl() {    restTemplate = RestTemplateFactory.makeRestTemplate();  }  @Override  public WeixinResponse sendTemplateMessage(String accessToken, WeixinTemplate weixinTemplate) {    WeixinResponse weixinResponse = null;    String url = new StringBuffer(serviceHost).append("/cgi-bin/message/template/send?access_token=")        .append(accessToken).toString();    weixinResponse = restTemplate.postForObject(url, weixinTemplate, WeixinResponse.class,new HashMap<String,String>());    return weixinResponse;  }}

說明:簡單理解模板消息發送,首先是獲取accessToken,(如何獲取請參考:微信公眾平臺 獲取access_token)。其次是模板消息的參數封裝,最后就是http的post請求。我的http請求是使用Spring的restTemplate進行請求,就不用我單獨寫一個http請求方法,如果沒有使用可以寫一個http請求的工具類。

(3)封裝響應參數Demo

package com.plateno.weixin.message.model;public class WeixinResponse {  private String msgid;  private int errcode;  private String errmsg;  public String getMsgid() {    return msgid;  }  public void setMsgid(String msgid) {    this.msgid = msgid;  }  public int getErrcode() {    return errcode;  }  public void setErrcode(int errcode) {    this.errcode = errcode;  }  public String getErrmsg() {    return errmsg;  }  public void setErrmsg(String errmsg) {    this.errmsg = errmsg;  }  @Override  public String toString() {    StringBuffer buf = new StringBuffer("WeixinResponse[msgid=");    buf.append(msgid)    .append(",errcode=").append(errcode)    .append(",errmsg=").append(errmsg)    .append("]");    return buf.toString();  }}

模板消息發送效果: 

微信公眾平臺,發送模板消息,Java

四、事件推送

在模版消息發送任務完成后,微信服務器會將是否送達成功作為通知,發送到開發者中心中填寫的服務器配置地址中。

1 送達成功時

(1)推送的XML如下

 <xml>      <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>      <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>      <CreateTime>1395658920</CreateTime>      <MsgType><![CDATA[event]]></MsgType>      <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>      <MsgID>200163836</MsgID>      <Status><![CDATA[success]]></Status>      </xml>

(2)參數說明

 

參數 說明
ToUserName 公眾號微信號
FromUserName 接收模板消息的用戶的openid
CreateTime 創建時間
MsgType 消息類型是事件
Event 事件為模板消息發送結束
MsgID 消息id
Status 發送狀態為成功

 

 2 送達由于用戶拒收(用戶設置拒絕接收公眾號消息)而失敗時

(1)推送的XML如下

  <xml>      <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>      <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>      <CreateTime>1395658984</CreateTime>      <MsgType><![CDATA[event]]></MsgType>      <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>      <MsgID>200163840</MsgID>      <Status><![CDATA[failed:user block]]></Status>      </xml>

(2)參數說明

 

參數 說明
ToUserName 公眾號微信號
FromUserName 接收模板消息的用戶的openid
CreateTime 創建時間
MsgType 消息類型是事件
Event 事件為模板消息發送結束
MsgID 消息id
Status 發送狀態為用戶拒絕接收

 

3 送達由于其他原因失敗時

(1)推送的XML如下

 <xml>      <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>      <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>      <CreateTime>1395658984</CreateTime>      <MsgType><![CDATA[event]]></MsgType>      <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>      <MsgID>200163840</MsgID>      <Status><![CDATA[failed: system failed]]></Status>      </xml>

(2)參數說明

 

參數 說明
ToUserName 公眾號微信號
FromUserName 接收模板消息的用戶的openid
CreateTime 創建時間
MsgType 消息類型是事件
Event 事件為模板消息發送結束
MsgID 消息id
Status 發送狀態為發送失敗(非用戶拒絕)

 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐昌市| 临漳县| 正镶白旗| 广州市| 喀什市| 正定县| 衢州市| 罗定市| 达日县| 信宜市| 庆城县| 泸水县| 惠州市| 漳浦县| 铜山县| 保德县| 孙吴县| 咸阳市| 大邑县| 调兵山市| 临沧市| 临猗县| 青海省| 伊金霍洛旗| 长白| 青岛市| 宣威市| 沙雅县| 共和县| 梁平县| 杂多县| 眉山市| 桃源县| 蚌埠市| 镶黄旗| 营山县| 新平| 广州市| 西充县| 福海县| 莱州市|