1. 程式人生 > >Java開發公眾號系列教程(四):公眾號訊息推送|事件訊息|模板訊息應用

Java開發公眾號系列教程(四):公眾號訊息推送|事件訊息|模板訊息應用

今天分享一下公眾號推送模板訊息的開發案例。應用場景:使用者在公眾號上進行了一些操作後,公眾號自動向使用者推送相關的模板訊息,常見的比如使用者在公眾號付款後會收到商家的付款訊息提醒。接下來通過筆者在測試賬戶上的開發案例,效果如下:

                     

開發步驟:

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;
    }
}