300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众号推送模板消息 推送个人消息 给指定的人发送模板消息

微信公众号推送模板消息 推送个人消息 给指定的人发送模板消息

时间:2023-05-18 16:43:17

相关推荐

微信公众号推送模板消息 推送个人消息 给指定的人发送模板消息

公众号推送个人消息

开发公众号时,需要写推送消息,从网上找了一大堆,都不是很全,,通过这次把代码全都总结起来,方便他人寻找问题的时候,不会跟作者一样,找各种文档,耽误工作时间。最主要的就是微信公众号的推送模板消息的设置,在后头进行把需要的模板推送给关注的微信,需要把微信openId与用户关联起来,这样就方便进行发送指定的人

微信公众号开发文档

https://developers./doc/offiaccount/Getting_Started/Overview.html

设置微信公众号模板消息

/product?id=41

maven工程pom.xml需要的包

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-http</artifactId><version>4.6.5</version></dependency><!-- /artifact/cn.hutool/hutool-log --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-log</artifactId><version>4.1.17</version></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.51</version></dependency><!-- httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6</version></dependency>

controller里的方法

// 获得access_token的接口String getTokenUrl = "https://api./cgi-bin/token?grant_type=client_credential&appid=" + AppConstants.APPID+ "&secret=" + AppConstants.APPSECRET ;String returnvalue = GET(getTokenUrl);JSONObject jsonObjects = JSONObject.fromObject(returnvalue);String access_token = jsonObjects.get("access_token").toString();//获取用户信息String getUserUrl = "https://api./cgi-bin/user/get?access_token=" + access_token;String returnvalues = GET(getUserUrl);JSONObject jsonObject3 = JSONObject.fromObject(returnvalues);String openid = "";if(lhVipDetail!=null) {openid =lhVipDetail.getOpenId();}else {return 501;}if(!StringUtils.isNotBlank(openid)) {return 501;}// object[0];// 发送的内容WechatTemplate wechatTemplate = new WechatTemplate();// 跳转小程序配置// Miniprogram miniprogram = new Miniprogram();// 设置模板idwechatTemplate.setTemplate_id("DA4443rT1UORhell5vqiskNXLbx3oIzm0TmmdQ4kviU");wechatTemplate.setTouser(openid);// 模板消息点击跳转路径, 如果不配置跳转小程序,可以设置跳转该路径// wechatTemplate.setUrl("");Map<String, TemplateData> m = new HashMap<String, TemplateData>();TemplateData first = new TemplateData();first.setColor("#173177");first.setValue("订单成功支付通知");//标题m.put("first", first);TemplateData keyword1 = new TemplateData();keyword1.setColor("#173177");Timestamp changeTime = Tool.currentDate();keyword1.setValue(Tool.changeTimeStampToString(changeTime));//时间m.put("keyword1", keyword1);TemplateData keyword2 = new TemplateData();keyword2.setColor("#173177");keyword2.setValue(shop);//商品标题m.put("keyword2", keyword2);TemplateData keyword3 = new TemplateData();keyword3.setColor("#173177");if (type == 1) {keyword3.setValue(lhStoreOrder.getPracticalPrice().toString());} else if (type == 2) {keyword3.setValue(lhStoreServerOrder.getServerPrice().toString()); //价格}m.put("keyword3", keyword3);TemplateData keyword4 = new TemplateData();keyword4.setColor("#173177");if (type == 1) {keyword4.setValue(lhStoreOrder.getOrderNum()); //订单号} else if (type == 2) {keyword4.setValue(lhStoreServerOrder.getServerNum());}m.put("keyword4", keyword4);TemplateData keyword5 = new TemplateData();keyword5.setColor("#173177");if (type == 1) {keyword5.setValue(lhVipDetail.getVipName() + "先生/女生");} else if (type == 2) {keyword5.setValue(lhVipDetail.getVipName() + "先生/女生"); //姓名}m.put("keyword5", keyword5);TemplateData remark = new TemplateData();remark.setColor("#173177");remark.setValue("感谢您的光临!"); //结尾m.put("remark", remark);wechatTemplate.setData(m);Integer result = 0;if(lhVipDetail!=null) {//发送微信通知String sendUrl = "https://api./cgi-bin/message/template/send?access_token=" + access_token;String jsonString = JSON.toJSONString(wechatTemplate);String json2 = HttpUtil.post(sendUrl, jsonString);JSONObject jsonObject2 = JSONObject.fromObject(json2);System.out.println(jsonString);System.out.println(json2);System.out.println(jsonObject2);if (null != jsonObject2) {if (0 != jsonObject2.getInt("errcode")) {result = jsonObject2.getInt("errcode");StaticLog.error("错误 errcode:{} errmsg:{}", jsonObject2.getInt("errcode"),jsonObject2.get("errmsg").toString());System.err.println("错误 errcode:{} errmsg:{}" + jsonObject2.getInt("errcode")+ jsonObject2.get("errmsg").toString());}else {result = jsonObject2.getInt("errcode");}}StaticLog.info("模板消息发送结果:" + result);}return result;

需要的实体类

/*** 包含Miniprogram, TemplateData* @Description * 参数的类, 调用微信发送模板消息的参数类* @author scf* @Date -09-16 15:24:03* @version 1.0.0*/public class WechatTemplate {private String touser;private Miniprogram miniprogram;private String template_id;private String url;private Map<String, TemplateData> 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 Map<String, TemplateData> getData() {return data;}public Miniprogram getMiniprogram() {return miniprogram;}public void setMiniprogram(Miniprogram miniprogram) {this.miniprogram = miniprogram;}public void setData(Map<String, TemplateData> data) {this.data = data;}}

/*** @ClassName TemplateData* @Description 模板消息的内容, 封装模板消息具体内容的类* @author scf* @Date -09-16 15:00:30* @version 1.0.0*/public class TemplateData {private String value;private String color;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;}}

/*** 模板消息跳转连接, 封装参数的类* @author scf* @Date -09-16 15:10:30* @version 1.0.0*/public class Miniprogram {private String appid;private String pagepath;public String getAppid() {return appid;}public void setAppid(String appid) {this.appid = appid;}public String getPagepath() {return pagepath;}public void setPagepath(String pagepath) {this.pagepath = pagepath;}}

http请求封装的类

/*** http请求封装的类*/public class HttpClientUtils {/*** httpclient执行get请求** @param url* @param params* @return*/public static String doGet(String url, Map<String, String> params) {// 创建httpclientCloseableHttpClient httpClient = HttpClients.createDefault();String result = "";CloseableHttpResponse httpResponse = null;try {// 构建uriURIBuilder builder = new URIBuilder(url);// 构建参数if (params != null) {for (Map.Entry<String, String> param : params.entrySet()) {builder.addParameter(param.getKey(), param.getValue());}}URI uri = builder.build();// 构建get请求HttpGet httpGet = new HttpGet(uri);// 执行httpResponse = httpClient.execute(httpGet);result = EntityUtils.toString(httpResponse.getEntity(), Charset.defaultCharset());} catch (Exception e) {e.printStackTrace();} finally {close(httpClient, httpResponse);}return result;}/*** 执行get请求没有参数** @param url* @return*/public static String doGet(String url) {return doGet(url, null);}/*** 执行post请求** @param url* @param params* @return*/public static String doPost(String url, Map<String, String> params) {// 创建httpclientCloseableHttpClient httpClient = HttpClients.createDefault();String result = "";CloseableHttpResponse httpResponse = null;try {// 构建请求HttpPost httpPost = new HttpPost(url);// 构建参数if (params != null) {List<NameValuePair> paramList = new ArrayList<NameValuePair>();for (Map.Entry<String, String> param : params.entrySet()) {paramList.add(new BasicNameValuePair(param.getKey(), param.getValue()));}// 模拟form表单entityUrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(paramList, Charset.defaultCharset());httpPost.setEntity(formEntity);}// 执行httpResponse = httpClient.execute(httpPost);result = EntityUtils.toString(httpResponse.getEntity(), Charset.defaultCharset());} catch (Exception e) {e.printStackTrace();} finally {close(httpClient, httpResponse);}return result;}/*** 执行post请求没有参数** @param url* @return*/public static String doPost(String url) {return doPost(url, null);}/*** 执行post请求,参数为json字符串** @param url* @param jsonParam* @return*/public static String doPostJsonParam(String url, String jsonParam) {// 创建httpclientCloseableHttpClient httpClient = HttpClients.createDefault();String result = "";CloseableHttpResponse httpResponse = null;try {// 构建请求HttpPost httpPost = new HttpPost(url);if (!StringUtils.isEmpty(jsonParam)) {// 创建请求实体StringEntity stringEntity = new StringEntity(jsonParam, ContentType.APPLICATION_JSON);httpPost.setEntity(stringEntity);}// 执行httpResponse = httpClient.execute(httpPost);result = EntityUtils.toString(httpResponse.getEntity(), Charset.defaultCharset());} catch (Exception e) {e.printStackTrace();} finally {close(httpClient, httpResponse);}return result;}/*** 关闭httpClient和httpResponse** @param httpClient* @param httpResponse*/private static void close(CloseableHttpClient httpClient, CloseableHttpResponse httpResponse) {if (httpResponse != null) {try {httpResponse.close();} catch (IOException e) {e.printStackTrace();}}if (httpClient != null) {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}}}

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