JAVA微信公众号消息推送(java 微信公众号推送消息)

  本篇文章为你整理了JAVA微信公众号消息推送(java 微信公众号推送消息)的详细内容,包含有java微信公众号消息推送功能 java 微信公众号推送消息 java 微信公众号 java 微信推送 JAVA微信公众号消息推送,希望能帮助你了解 JAVA微信公众号消息推送。

  1.申请微信公众号测试号及微信模板配置

  2.申请一个微信公众号测试号。测试号申请:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

  3.扫码登陆注册,注册成功后就会生成微信公号的appID和appsecret

  4.需要接收消息的人微信扫码关注 测试号二维码,微信会返回我们的openid,这个openid在推送时接收消息的用户id。

  5.新增消息模板(模板ID是调用推送消息接口的重要参数),模板中参数内容必须以".DATA"结尾,否则视为保留字,模板保留符号"{{ }}"; 例如{{date.DATA}

  6.配置之后就完成了微信公众号的配置

  2、实现逻辑

  1.获取微信基础accessToken

  调用微信的接口,access_token肯定是需要的。access_token可以参考一下官方:https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/backend-api.html。accessToken有效期只有两小时(下面简称token),因此当调用一下方法一次后,就可以将其放入redis中,设置过期时间(低于两小时);

  

public void getAccessToken(){
 String appId = "wxbac840efxxxxxxxx";
 String appIdSecret = "dbf4aadaae8dab4e699xxxxxxxxxxxxx";
 String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential appid="+ appId +" secret=" + appIdSecret;
 String res = HttpUtil.get(requestUrl);
 JSONObject jsonObject = JSONObject.fromObject(res);
 String accessToken = jsonObject.getString("access_token");
 log.info("accessToken:{}", accessToken);
}

 

  2.获取关注公众号用户

  

 public void getUserList(){
 RestTemplate restTemplate = new RestTemplate();
 String accessToken = "63_3G96dUuGl-r0rGQsD7Nh3IgoEi60z-hmfNqSHjbFTatwdDhlHRgKVwuzMzxzTenlEWoARYE3hgRgQF5yyCNbr9TWFYX7s_ABin_IxR6cROYnjwTkJ-VydFxHd_UQKBgAFAEYP";
 String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+ accessToken;
 ResponseEntity String response = restTemplate.postForEntity(requestUrl, null, String.class);
 log.info("结果是: {}",response.getBody());
 com.alibaba.fastjson.JSONObject result = com.alibaba.fastjson.JSONObject.parseObject(response.getBody());
 com.alibaba.fastjson.JSONArray openIdJsonArray = result.getJSONObject("data").getJSONArray("openid");
 Iterator iterator = openIdJsonArray.iterator();
 if (iterator.hasNext()){
 log.debug("用户openid:"+iterator.next());
 }
 }

 

  3.消息推送的消息体

  

public class WeChatTemplateMsg {
 /**
 * 消息
 */
 private String value;
 /**
 * 消息颜色
 */
 private String color;
 public WeChatTemplateMsg(String value) {
 this.value = value;
 this.color = "#173177";
 }
 public WeChatTemplateMsg(String value, String color) {
 this.value = value;
 this.color = color;
 }
}

 

  4.消息推送

  通过以上获取的 openId, accessToken 和 前期准备的模板id即可,再调用官方url即可,公众号模板推送接口:POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

  

public void sendMessage(){
 // 模板参数
 Map String, WeChatTemplateMsg sendMag = new HashMap String, WeChatTemplateMsg 
 // openId代表一个唯一微信用户,即微信消息的接收人
 String openId = "ogwdJ6w7Om9sKtFc9mxxxxxxxxxx";
 // 公众号的模板id(也有相应的接口可以查询到)
 String templateId = "yBVd_hZR1q5-hko3eP9BsuFfpYnFxxxxxxxxxxxxxx";
 // 微信的基础accessToken
 String accessToken = "63_3G96dUuGl-r0rGQsD7Nh3IgoEi60z-hmfNqSHjbFTatwdDhlHRgKVwuzMzxzTenlEWoARYE3hgRgQF5yyCNbr9TWFYX7s_ABin_IxR6cROYnjwTkJ-VydFxHd_UQKBgAFAEYP";
 String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
 sendMag.put("city", new WeChatTemplateMsg("广州"));
 RestTemplate restTemplate = new RestTemplate();
 //拼接base参数
 Map String, Object sendBody = new HashMap ();
 sendBody.put("touser", openId); // openId
 sendBody.put("url", "https://www.baidu.com"); //跳转网页url
 sendBody.put("data", sendMag); // 模板参数
 sendBody.put("template_id", templateId); // 模板Id
 ResponseEntity String response = restTemplate.postForEntity(requestUrl, sendBody, String.class);
 log.info("结果是: {}",response.getBody());
 com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(response.getBody());
 String messageCode = jsonObject.getString("errcode");
 String msgId = jsonObject.getString("msgid");
 System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
}
5.请求参数

 

  "touser":"ogwdJ6w7Om9sKtFc9xxxxxxxx",

  "template_id":"yBVd_hZR1q5-hko3eP9BsuFfxxxxxxxxxx",

  "url":"www.baidu.com",

  "data":{

  "city":{

  "value":"广州"

  }

  }

  


6.效果

 

  

  

 

 

  

  以上就是JAVA微信公众号消息推送(java 微信公众号推送消息)的详细内容,想要了解更多 JAVA微信公众号消息推送的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: