1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java发送微信模板消息_java微信公众平台之发送模板消息

java发送微信模板消息_java微信公众平台之发送模板消息

时间:2020-08-23 11:33:54

相关推荐

java发送微信模板消息_java微信公众平台之发送模板消息

准备条件:

1.一个测试号,有必要说下的是订阅号没有发送模板消息这一功能,那么开发的小伙伴们就可以直接先注册一个测试号

2。目前我并没有就是做的很完善,网页授权获取openId这个我没做,那么我是直接将微信公众平台的关注的人保存在我的表中的,从中去拿。后面会继续完善的

开始步骤:

1.在测试号网页上拿到书友关注公众号的人员信息,将其保存在数据库中,注意:每个人的openid是不会变的

2.事先在公众号中定义模板,那么在后台你就可以拿到模板id 将数据已模板的方式发送给客户

// 4.根据id修改数据 @RequestMapping(value = "/updateProjectById", method = RequestMethod.POST) public String updateById(Model model, ) throws Exception { //根据bid去查询出bos_customer中的数据 Bos_customer customer=projectService.findCustomerByBid(bid); System.out.println("Bos_customer:"+customer.getCid()+"-------"+customer.getCname()+"-------"+customer.getOpenId()); //接下来给这个客户发送模板消息 //先给模板中设置参数 Template tem=new Template(); tem.setTemplateId("4JDGT8xdV-PQYbtiwJaeb352WoeUDHRtb29gn62olJk"); //模板id tem.setTopColor("#00DD00"); tem.setToUser(customer.getOpenId());//得到用户的openid tem.setUrl(""); List paras=new ArrayList(); paras.add(new TemplateParam("first","我们将给您推送一些关于您项目进度的消息:","#FF3333")); paras.add(new TemplateParam("keyword1",pro.getwName(),"#0044BB"));//项目名称 paras.add(new TemplateParam("keyword2",message,"#0044BB"));//项目进度 paras.add(new TemplateParam("keyword3",pro.getsTime(),"#0044BB"));//开始时间 paras.add(new TemplateParam("keyword4",pro.getLeader(),"#0044BB"));//项目负责人 paras.add(new TemplateParam("remark","感谢你对我们BIM项目的支持!!!!","#AAAAAA")); tem.setTemplateParamList(paras); //将Accesstoken拿到 String url = "https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; String APPID = ConfigUtil.APPID; String SECRET = ConfigUtil.SECRET; url = url.replace("APPID", APPID); url = url.replace("APPSECRET", SECRET); String content = HttpUtil.httpUrlConnect(url, null, "GET"); Map map=HttpUtil.getAccessTokenByJsonStr(content); String accessToken=(String) map.get("access_token"); boolean result=SendMessage.sendTemplateMsg(accessToken,tem); if(result==true){ System.out.println("发送成功"); } } } return "redirect:showAll"; }

4. Template类package com.bos.pojo; import java.util.List; public class Template { //消息接收方 private String toUser; //模板id private String templateId; //模板消息详情链接 private String url; //消息顶部的颜色 private String topColor; //参数列表 private List templateParamList; public Template() { super(); // TODO Auto-generated constructor stub } public Template(String toUser, String templateId, String url, String topColor, List templateParamList) { super(); this.toUser = toUser; this.templateId = templateId; this.url = url; this.topColor = topColor; this.templateParamList = templateParamList; } public String getToUser() { return toUser; } public void setToUser(String toUser) { this.toUser = toUser; } public String getTemplateId() { return templateId; } public void setTemplateId(String templateId) { this.templateId = templateId; } 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 List getTemplateParamList() { return templateParamList; } public void setTemplateParamList(List templateParamList) { this.templateParamList = templateParamList; } public String toJSON() { StringBuffer buffer = new StringBuffer(); buffer.append("{"); buffer.append(String.format("\"touser\":\"%s\"", this.toUser)).append(","); buffer.append(String.format("\"template_id\":\"%s\"", this.templateId)).append(","); buffer.append(String.format("\"url\":\"%s\"", this.url)).append(","); buffer.append(String.format("\"topcolor\":\"%s\"", this.topColor)).append(","); buffer.append("\"data\":{"); TemplateParam param = null; for (int i = 0; i < this.templateParamList.size(); i++) { param = templateParamList.get(i); // 判断是否追加逗号 if (i < this.templateParamList.size() - 1){ buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"},", param.getName(), param.getValue(), param.getColor())); }else{ buffer.append(String.format("\"%s\": {\"value\":\"%s\",\"color\":\"%s\"}", param.getName(), param.getValue(), param.getColor())); } } buffer.append("}"); buffer.append("}"); return buffer.toString(); } }

package com.bos.pojo; public class TemplateParam { //模板消息由于模板选取不同,那么就要封装俩个实体类 // 参数名称 private String name; // 参数值 private String value; // 颜色 private String color; public TemplateParam() { super(); // TODO Auto-generated constructor stub } public TemplateParam(String name,String value,String color){ this.name=name; this.value=value; this.color=color; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } }

5.一些工具类

(1)HttpUtilpackage com.wei.util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import .HttpURLConnection; import .URL; import java.util.HashMap; import java.util.Map; import org.json.JSONObject; public class HttpUtil { public static String httpUrlConnect(String httpUrl, String params, String method) throws Exception { URL url = new URL(httpUrl); HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); urlConnection.setRequestProperty("accept", "*/*"); urlConnection.setRequestProperty("connection", "Keep-Alive"); urlConnection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setRequestMethod(method); urlConnection.connect(); PrintWriter out = null; BufferedReader in = null; if (null != params && !"".equals(params)) { out = new PrintWriter(new OutputStreamWriter( urlConnection.getOutputStream(), "utf-8")); out.print(params); out.flush(); } in = new BufferedReader(new InputStreamReader( urlConnection.getInputStream(), "utf-8")); String line; String result = ""; while ((line = in.readLine()) != null) { result += line; } return result; } /** * 根据字符串json数据解析access_token * @param jsonStr * @return map */ public static Map getAccessTokenByJsonStr(String jsonStr){ Map map = new HashMap(); JSONObject jsonObj = new JSONObject(jsonStr); if(jsonObj.has("access_token")){ map.put("access_token", jsonObj.get("access_token")); } if(jsonObj.has("expires_in")){ map.put("expires_in", jsonObj.get("expires_in")); } return map; } }

(2)发送模板消息的类package com.wei.util; import net.sf.json.JSONObject; import com.bos.pojo.Template; /* * * 这是发送模板消息的类 * 5.12 * * */ public class SendMessage { public static boolean sendTemplateMsg(String token,Template template){ boolean flag=false; String requestUrl="https://api./cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; requestUrl=requestUrl.replace("ACCESS_TOKEN", token); JSONObject jsonResult=CommonUtil.httpsRequest(requestUrl, "POST", template.toJSON()); if(jsonResult!=null){ int errorCode=jsonResult.getInt("errcode"); String errorMessage=jsonResult.getString("errmsg"); if(errorCode==0){ flag=true; }else{ System.out.println("模板消息发送失败:"+errorCode+","+errorMessage); flag=false; } } return flag; } }

最后给大家看一下简单的微信公众号的效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。