位置: IT常识 - 正文

JAVA微信公众号订阅消息推送(java微信公众号开发源码)

编辑:rootadmin
1、前期准备 1.申请微信公众号测试号及微信模板配置 2.申请一个微信公众号测试号。测试号申请:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 3.扫码登陆注册,注册成功后就会生成微信公号的appID和appsecret ... 1、前期准备

推荐整理分享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。

JAVA微信公众号订阅消息推送(java微信公众号开发源码)

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.效果
本文链接地址:https://www.jiuchutong.com/zhishi/304655.html 转载请保留说明!

上一篇:网站在线客服聊天系统源码(网站客服系统在线)

下一篇:Golang 动态脚本调研(golang 调用动态库)

  • 网易云音乐sq什么意思(网易云sq和hq是什么意思)

    网易云音乐sq什么意思(网易云sq和hq是什么意思)

  • 荔枝vip和爱奇艺vip通用吗(荔枝vip和爱奇艺会员区别)

    荔枝vip和爱奇艺vip通用吗(荔枝vip和爱奇艺会员区别)

  • 荣耀手机怎么看应用使用时长(荣耀手机怎么看出厂日期查询)

    荣耀手机怎么看应用使用时长(荣耀手机怎么看出厂日期查询)

  • 滴滴怎么几个小时一个订单没有(滴滴怎么设置多个终点)

    滴滴怎么几个小时一个订单没有(滴滴怎么设置多个终点)

  • 机顶盒上的光信号为什么会亮红灯(机顶盒上的光信号亮红灯怎么解决)

    机顶盒上的光信号为什么会亮红灯(机顶盒上的光信号亮红灯怎么解决)

  • 新买的苹果耳机怎么激活(新买的苹果耳机要充电吗)

    新买的苹果耳机怎么激活(新买的苹果耳机要充电吗)

  • windows7查看windows版本号(windows7查看ip地址)

    windows7查看windows版本号(windows7查看ip地址)

  • 手机mhl功能在哪里打开(怎么看手机mhl功能)

    手机mhl功能在哪里打开(怎么看手机mhl功能)

  • 徕卡三摄和四摄的区别(徕卡三摄的手机有哪些)

    徕卡三摄和四摄的区别(徕卡三摄的手机有哪些)

  • 允许多个用户以交互使用计算机的操作系统是(允许多个用户以交换方式使用计算机的操作系统是)

    允许多个用户以交互使用计算机的操作系统是(允许多个用户以交换方式使用计算机的操作系统是)

  • 还原所有设置是什么意思(还原所有设置是不是就是恢复出厂设置)

    还原所有设置是什么意思(还原所有设置是不是就是恢复出厂设置)

  • 微信文件大于100m不能传送怎么办(微信文件大于100m)

    微信文件大于100m不能传送怎么办(微信文件大于100m)

  • 抖音在线状态怎么设置(抖音在线状态怎么关闭)

    抖音在线状态怎么设置(抖音在线状态怎么关闭)

  • 苹果外包装序列号在哪(苹果外包装序列号未激活)

    苹果外包装序列号在哪(苹果外包装序列号未激活)

  • 淘宝五张主图的分别作用(淘宝主图5张图分别怎么做)

    淘宝五张主图的分别作用(淘宝主图5张图分别怎么做)

  • 怎么看朋友圈屏蔽了谁(怎么看朋友圈屏蔽的人是谁)

    怎么看朋友圈屏蔽了谁(怎么看朋友圈屏蔽的人是谁)

  • iwatch5需要贴膜吗(apple watch series 5有必要贴膜吗?)

    iwatch5需要贴膜吗(apple watch series 5有必要贴膜吗?)

  • 2019年vivox30是曲面屏吗(vivo x30pro是不是曲屏)

    2019年vivox30是曲面屏吗(vivo x30pro是不是曲屏)

  • ipada1474是第几代(ipada1474是第几代,哪年的)

    ipada1474是第几代(ipada1474是第几代,哪年的)

  • d盘格式化了能恢复吗(格式化d盘后能恢复数据吗)

    d盘格式化了能恢复吗(格式化d盘后能恢复数据吗)

  • 华强北airpods怎么切歌(华强北airpods怎么充电)

    华强北airpods怎么切歌(华强北airpods怎么充电)

  • whatsapp怎么改备注(whatsapp怎么改群备注)

    whatsapp怎么改备注(whatsapp怎么改群备注)

  • 在同程艺龙购票如何退(同程艺龙购票有手续费吗)

    在同程艺龙购票如何退(同程艺龙购票有手续费吗)

  • iphonex如何实现双卡(iphonex如何实现双卡双待)

    iphonex如何实现双卡(iphonex如何实现双卡双待)

  • 铁路12306账号密码忘记了怎么办(铁路12306账号密码)

    铁路12306账号密码忘记了怎么办(铁路12306账号密码)

  • 微信共享实时位置可以修改吗(微信共享实时位置)

    微信共享实时位置可以修改吗(微信共享实时位置)

  • 关机来电提醒怎么设置(关机来电提醒怎么开通)

    关机来电提醒怎么设置(关机来电提醒怎么开通)

  • 如何在Windows11上配置静态IP地址(如何在windows11上打开蓝牙)

    如何在Windows11上配置静态IP地址(如何在windows11上打开蓝牙)

  • Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)(vue项目如何配置启动的端口)

    Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)(vue项目如何配置启动的端口)

  • 什么时候公司需要赔偿员工
  • 水处理产业链
  • 如何确定固定资产的计税基础
  • 交易性金融资产有哪些
  • 哪些发票能做公章
  • 预缴增值税如何计提
  • 公司员工受伤怎么报工伤
  • 冲减以前年度主营业务成本对今年有影响吗
  • 交易性金融资产的账务处理
  • 固定资产贷款偿还期计算公式
  • 作为一个财务 月末要做什么
  • 工资薪金总额包括年终奖吗
  • 修理费没有发票怎么做账
  • 预缴税多交了,税务局退吗
  • 开专票和普票的税点
  • 个人提前退休取得的一次性补贴收入免征
  • 预付账款的借方是应付账款的哪方
  • 收回固定资产残值
  • 城市维护建设税属于什么税种
  • 新会计准则规定资产如何入账
  • 出售固定资产计入
  • 上月留抵的增值税在哪查询
  • win10 kb5005611
  • 收到服务费发票怎么做账
  • win7指定程序用指定网卡
  • windows搭建dvwa
  • 结算劳务外包的工作内容
  • laslajas大教堂
  • php判断密码长度
  • 因汇率变动而导致的损失属于
  • redis zset源码
  • 计算机视觉的未来发展方向有哪些
  • 划水划水划水表情包
  • windows where命令
  • 新会计准则增加了哪些科目
  • 小规模纳税人增值税税率
  • 赔偿款收据样本
  • 苹果响应机制
  • 合伙企业退伙如何缴纳个人所得税
  • 类型string
  • mongodb开启远程连接
  • 会计付租金会计分录
  • 生产部的管理人员算什么费用
  • 高新技术企业核心人才保险
  • 差旅费超出部分
  • 事业单位整体转让
  • 收到的发票未抵税怎么办
  • 公司 股东 变更
  • 业务招待费扣除标准是多少
  • 印花税的其他凭证指的是什么
  • 本年利润为
  • 增值税免抵退税和免退税的区别有什么?
  • 外包人员的餐费怎么入账
  • 五金配件生意好做吗
  • 预付货款属不属于消费信用
  • 负债表预付账款怎么填
  • 零配件供应是什么意思
  • 会计一般采用什么科目
  • mysql查询结果是什么类型
  • kdeskcore.exe是什么
  • windows 隐藏软件
  • windows 10激活不了
  • STMGR.EXE - STMGR是什么进程
  • 物联网1.0 2.0 3.0
  • centos 安装方法
  • linux shell find
  • win10超级按钮
  • win81和win10
  • j-v测试
  • shell脚本监控进程
  • python引用方法
  • js对象的constructor
  • python连接mq
  • 北京电子税务
  • 小规模纳税人开1%普票怎么报税
  • 日本的消费税是累进税吗
  • 煤炭资源税税率减半对上市公司影响
  • 民办学校需要交工会经费吗
  • 我的世界服务器怎么创建
  • 陕西省附加税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设