1. 程式人生 > >微信公眾號開發-----微信模板訊息介面-----傳送模板訊息

微信公眾號開發-----微信模板訊息介面-----傳送模板訊息

傳送模板訊息

介面呼叫請求說明
http請求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
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"
                   }
           }
       }

引數說明

注:url和miniprogram都是非必填欄位,若都不傳則模板無跳轉;若都傳,會優先跳轉至小程式。開發者可根據實際需要選擇其中一種跳轉方式即可。當用戶的微信客戶端版本不支援跳小程式時,將會跳轉至url。
返回碼說明
在呼叫模板訊息介面後,會返回JSON資料包。正常時的返回JSON資料包示例:
{
           "errcode":0,
           "errmsg":"ok",
           "msgid":200228332
       }

Demo案例 1.在微信公眾號(這裡是測試號,隨便找的模板)中新增模板測試介面
2.建一個模板訊息
TemplateMessageUtil.java
//傳送模板訊息
public static String sendTemplateMessage(String touser,String template_id,String keyword1,String keyword2,String keyword3){
    AccessToken accessToken=WeixinUtil.getAccessToken(ParamesAPI.appId,ParamesAPI.secret);
    String sendUrl="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken.getToken();

    //post請求資料
    String url="http://weixin.qq.com/download";
    //data
    JSONObject dataJson=new JSONObject();
        //first
        JSONObject fstJson=new JSONObject();
        fstJson.put("value","執行人員操作提醒:");
        //keyword1
        JSONObject k1Json=new JSONObject();
        k1Json.put("value",keyword1);
        //keyword2
        JSONObject k2Json=new JSONObject();
        k2Json.put("value",keyword2);
        //keyword3
        JSONObject k3Json=new JSONObject();
        k3Json.put("value",keyword3);
        //remark
        JSONObject rmkJson=new JSONObject();
        rmkJson.put("value","物料執行資訊已送達,請儘快完成任務哦!");
    dataJson.put("first",fstJson);
    dataJson.put("keyword1",k1Json);
    dataJson.put("keyword2",k2Json);
    dataJson.put("keyword3",k3Json);
    dataJson.put("remark",rmkJson);

    JSONObject json=new JSONObject();
    json.put("touser",touser);
    json.put("template_id",template_id);
    json.put("data",dataJson);
    JSONObject jsonObject = HttpClientUtil.getInstance().httpPostRequest(sendUrl, json.toString());
    System.out.println("傳送模板訊息:" + jsonObject);
    String msg="errcode:"+jsonObject.getString("errcode")+"-----"+"errmsg:"+jsonObject.getString("errmsg");

    return msg;
}
注:同使用httpClient請求服務
3.PC中執行事件時呼叫第2部的介面,並給出需要的引數
//給執行人員傳送模板訊息
					String touser="";//接受者openid
					String template_id="FMn8Ph1R-Ie04VXs-ZeaH88z32XBMMqYzoitmzvay70";//模板id
					String keyword1=orderDetails.getBelongOrderBase().getCustomerName();//客戶姓名
					String keyword2=orderDetails.getBelongOrderBase().getCustomerAddress();//客戶地址
					String keyword3=orderDetails.getMaterialName();//品名
					if (StringUtils.isNotBlank(belongUserInfosPer)) {
						String[] userInfoArray = belongUserInfosPer.split(",");
						for (int i = 0; i < userInfoArray.length; i++) {
							String item = userInfoArray[i];
							Long itemLong = StringConverters.ToLong(item);
							if (itemLong != null) {
								UserInfo userInfo=userInfoBiz.findModel(itemLong);
								touser=userInfo.getOpenId();
								String msg=TemplateMessageUtil.sendTemplateMessage(touser,template_id,keyword1,keyword2,keyword3);
								logger.info(msg);
							}
						}
					} else {
						return "使用者資訊不存在,修改失敗";
					}