首页IT科技java微信公众号开发推送内容怎么做(JAVA微信公众号订阅消息推送)

java微信公众号开发推送内容怎么做(JAVA微信公众号订阅消息推送)

时间2025-05-02 12:49:48分类IT科技浏览3331
导读:1、前期准备...

1           、前期准备

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.请求参数 6.效果
声明:本站所有文章              ,如无特殊说明或标注                 ,均为本站原创发布                。任何个人或组织  ,在未征得本站同意时           ,禁止复制     、盗用        、采集                  、发布本站内容到任何网站        、书籍等各类媒体平台         。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
大文件转小文件(文件大小转换js) win10误删注册表 无法开机怎么修复(Win10专业版误删注册表开不了机怎么办?)