Java開發公眾號系列教程(四):公眾號訊息推送|事件訊息|模板訊息應用
阿新 • • 發佈:2018-11-20
今天分享一下公眾號推送模板訊息的開發案例。應用場景:使用者在公眾號上進行了一些操作後,公眾號自動向使用者推送相關的模板訊息,常見的比如使用者在公眾號付款後會收到商家的付款訊息提醒。接下來通過筆者在測試賬戶上的開發案例,效果如下:
開發步驟:
1、在微信公眾測試賬戶上新增測試模板,新增模板後會得到模板ID,模板內容如下:
2、學習微信文件,檢視模板訊息介面
介面:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
請求方式:POST請求
必須引數格式:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"data":[{ }]
}
3、後臺程式碼實現
//使用者繳費成功後推送模板訊息(提醒使用者該車牌已繳費) public TemplateMsgResponse pushHasPayMsg(String carNumber,RechargeRecord record, String openid) throws IOException { String accessToken = getToken(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String startTime = sdf.format(record.getPayTime());//支付時間即就是有效期開始時間 String date = startTime.substring(0,4); String endTime = date + "-12-31 23:59"; //有效期截止時間 JSONObject first=new JSONObject();//訊息的首行,標題 first.put("value","恭喜您已繳費成功"); first.put("color","#007f80"); JSONObject keyword1=new JSONObject(); JSONObject keyword2=new JSONObject(); JSONObject keyword3=new JSONObject(); JSONObject keyword4=new JSONObject(); keyword1.put("value",carNumber); keyword2.put("value","園區內專用停車位"); keyword3.put("value","0.01元"); keyword4.put("value",startTime); JSONObject remark=new JSONObject(); remark.put("value", "溫馨提醒:您已成功支付車輛"+carNumber+"在本年度的通行費用,您將在本園區可以暢通無阻"); remark.put("color", "#007f80"); JSONObject text=new JSONObject(); text.put("keyword1", keyword1); text.put("keyword2", keyword2); text.put("keyword3", keyword3); text.put("keyword4", keyword4); text.put("first", first); text.put("remark",remark); JSONObject json=new JSONObject(); json.put("touser",openid); //訊息接收人 json.put("template_id",Constants.PAY_OK_TEMPLATE_ID);//模板id json.put("topcolor","#ff1a75"); json.put("data",text); TemplateMsgResponse res = new TemplateMsgResponse(); String url2 = Constants.GET_TEMPLATEID_API.replace("ACCESS_TOKEN",accessToken); JSONObject obj = WeiXinUtil.httpRequest(url2,"POST",json.toString()); if(!StringUtils.isEmpty(obj)){ res.setErrCode(String.valueOf(obj.get("errcode"))); res.setErrMsg((String)obj.get("errmsg")); res.setMsgId(obj.get("msgid")+""); } return res; }
結合微信公眾號開發文件,訊息實體類欄位如下:
public class TemplateMsgResponse implements Serializable { private String msgId; private String errCode; private String errMsg; public String getMsgId() { return msgId; } public void setMsgId(String msgId) { this.msgId = msgId; } public String getErrCode() { return errCode; } public void setErrCode(String errCode) { this.errCode = errCode; } public String getErrMsg() { return errMsg; } public void setErrMsg(String errMsg) { this.errMsg = errMsg; } }