Java开发公众号系列教程(四):公众号消息推送|事件消息|模板消息应用

版权声明:本文为博主原创文章,如需转载,敬请注明转载链接 https://blog.csdn.net/guobinhui/article/details/83448053

今天分享一下公众号推送模板消息的开发案例。应用场景:用户在公众号上进行了一些操作后,公众号自动向用户推送相关的模板消息,常见的比如用户在公众号付款后会收到商家的付款消息提醒。接下来通过笔者在测试账户上的开发案例,效果如下:

                     

开发步骤:

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

猜你喜欢

转载自blog.csdn.net/guobinhui/article/details/83448053