微信公众号开发(Java) ---- 模板消息接口的使用
来源:互联网 发布:卖家怎么加入爱淘宝 编辑:程序博客网 时间:2024/06/04 23:26
我们先看下官方文档给出的模板消息介绍:
下面直接写我的流程了:
第一步:公众号平台上设置好模板消息形式如下(我拿的是测试号演示):
第二步:提前写好访问模板消息的接口如下
/** * 发送模板消息 * * @param accessToken 接口访问凭证 * @param jsonMsg json格式的模板消息 * @return true | false */public static boolean sendModelMessage(String accessToken, String jsonMsg) {log.info("消息内容:{}", jsonMsg);boolean result = false;// 拼接请求地址String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken);// 发送客服消息JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", jsonMsg);if (null != jsonObject) {int errorCode = jsonObject.getInt("errcode");String errorMsg = jsonObject.getString("errmsg");if (0 == errorCode) {result = true;log.info("模板消息发送成功 errcode:{} errmsg:{}", errorCode, errorMsg);} else {log.error("模板消息发送失败 errcode:{} errmsg:{}", errorCode, errorMsg);}}return result;}
模板消息实体类:
public class MoveCarAlarmTemplate {private String touser; //用户的openIdprivate String template_id; //模板消息idprivate String url;private String topcolor; //标题颜色private ModelMessage_Data 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 String getTopcolor() {return topcolor;}public void setTopcolor(String topcolor) {this.topcolor = topcolor;}public ModelMessage_Data getData() {return data;}public void setData(ModelMessage_Data data) {this.data = data;}}
ModelMessage_Data类
public class ModelMessage_Data {private Data_Title title;private Data_MoveDate moveDate;private Data_ToUserOpenNumber toUserOpenNumber;private Data_FromUserOpenNumber fromUserOpenNumber;private Data_Remark remark;public Data_Remark getRemark() {return remark;}public void setRemark(Data_Remark remark) {this.remark = remark;}public Data_Title getTitle() {return title;}public void setTitle(Data_Title title) {this.title = title;}public Data_MoveDate getMoveDate() {return moveDate;}public void setMoveDate(Data_MoveDate moveDate) {this.moveDate = moveDate;}public Data_ToUserOpenNumber getToUserOpenNumber() {return toUserOpenNumber;}public void setToUserOpenNumber(Data_ToUserOpenNumber toUserOpenNumber) {this.toUserOpenNumber = toUserOpenNumber;}public Data_FromUserOpenNumber getFromUserOpenNumber() {return fromUserOpenNumber;}public void setFromUserOpenNumber(Data_FromUserOpenNumber fromUserOpenNumber) {this.fromUserOpenNumber = fromUserOpenNumber;}}
Data_Title title,
Data_MoveDate
以上几个实体类就不贴了,每个类里面都只有两个String变量,分别为 value 和 colorData_ToUserOpenNumberData_FromUserOpenNumberData_Remark
第四步:业务处理
/** * 该方法用于在呼叫对方成功后,服务号会分别向双方发送挪车提醒消息 * @param request * @param model * @return * @throws IOException */@RequestMapping("/send")public String sendMoveMessage(HttpServletRequest request,Model model) throws IOException{Properties prop = new Properties();FileInputStream fis = (FileInputStream) request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/appconfig.properties");prop.load(fis);// 第三方用户唯一凭证String appId = prop.getProperty("appId");// 第三方用户唯一凭证密钥String appSecret = prop.getProperty("appSecret");// 获取接口访问凭证String accessToken = CommonUtil.getToken(appId, appSecret).getAccessToken();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//被呼叫方的专用号码及openidString toOpenNum = request.getParameter("toUserOpenNumber");String toOpenId = request.getParameter("toUserOpenId");//呼叫方的专用号码及openidString fromOpenNum = request.getParameter("fromUserOpenNumber");if(!StringUtils.isNotBlank(fromOpenNum)){fromOpenNum = String.valueOf((int)((Math.random()*9+1)*100000));}String fromOpenId = request.getParameter("fromUserOpenId");//被呼叫方微信上收到挪车提醒MoveCarAlarmTemplate temp = new MoveCarAlarmTemplate();ModelMessage_Data data = new ModelMessage_Data();Data_Title title = new Data_Title();Data_MoveDate moveDate = new Data_MoveDate();Data_FromUserOpenNumber fromUserOpenNumber = new Data_FromUserOpenNumber();Data_ToUserOpenNumber toUserOpenNumber = new Data_ToUserOpenNumber();Data_Remark remark = new Data_Remark();remark.setValue("xxxxxx");remark.setColor("#2e307b");title.setValue("尊敬的车主,您好");title.setColor("#2e307b");moveDate.setValue(sdf.format(new Date()));moveDate.setColor("#2e307b");fromUserOpenNumber.setValue("您的挪车请已经发送给车主"+toOpenNum);fromUserOpenNumber.setColor("#2e307b");toUserOpenNumber.setValue("用户"+fromOpenNum+"请您挪车");toUserOpenNumber.setColor("#2e307b");data.setFromUserOpenNumber(fromUserOpenNumber);data.setMoveDate(moveDate);data.setTitle(title);data.setToUserOpenNumber(toUserOpenNumber);data.setRemark(remark);temp.setTouser(toOpenId);temp.setData(data);temp.setTopcolor("#2e307b");temp.setUrl("");temp.setTemplate_id(挪车提醒的模板ID);String jsonMsg = JSONObject.fromObject(temp).toString();AdvancedUtil.sendModelMessage(accessToken, jsonMsg);//如果呼叫方也关注了该服务号,则呼叫方也将收到已发送挪车提醒的消息if(StringUtils.isNotBlank(fromOpenId)){temp.setTouser(fromOpenId);temp.setTemplate_id(请求回执的模板ID);String jsonMsg2 = JSONObject.fromObject(temp).toString();AdvancedUtil.sendModelMessage(accessToken, jsonMsg2);}return "warnSuccess";}
最后成果展示:
主叫方收到(前提是主叫方也关注了该服务号):
被叫方收到:
完成~~~
阅读全文
0 0
- 微信公众号开发(Java) ---- 模板消息接口的使用
- 微信公众号开发---消息模板的使用
- 微信公众号开发-----微信模板消息接口-----发送模板消息
- 微信公众号开发《发送消息模板到公众号(java版)》
- 微信公众号开发--模板消息
- 微信公众号模板消息使用
- java微信开发模板消息接口使用
- 微信公众号开发(十)模板消息
- 微信公众号开发(四)推送消息模板
- 微信公众号开发(九)群发消息接口
- 使用微信公众号模板消息发送(基于.NET开发)
- 微信公众号开发模板消息推送(一) 获取access_token java
- 微信公众号开发模板消息推送(二) 获取openid java
- 微信公众号开发模板消息推送(三) java
- 微信公众号发送模板消息接口
- java微信模板消息接口的使用
- 微信公众平台开发之模板消息(Java)
- 微信公众平台开发之模板消息(Java)
- Deli Deli(简单的STL + 字符串)
- springboot 启动错误 出现Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.Level
- 【Python】提取网页正文内容的相关模块与技术
- 格式化输出只有固定小数点后位数
- make隐含规则
- 微信公众号开发(Java) ---- 模板消息接口的使用
- BZOJ 1202: [HNOI2005]狡猾的商人 并查集
- oracle用户默认表空间
- 小程序获取用户信息
- Git使用和原理浅析
- Maximum sum
- 1023. 组个最小数 (20)
- mac终端命令大全介绍
- MyEclipse Debug快捷键的使用