位置: 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 调用动态库)

  • realmex50pro有几种颜色(realmex50pro开箱评测)

    realmex50pro有几种颜色(realmex50pro开箱评测)

  • 荣耀10x支持人脸识别功能吗(荣耀10x支持人脸支付吗)

    荣耀10x支持人脸识别功能吗(荣耀10x支持人脸支付吗)

  • 账号解析失败或账号状态异常(账号解析失败或账号异常是什么意思)

    账号解析失败或账号状态异常(账号解析失败或账号异常是什么意思)

  • 6swifi老说密码错误(6spluswifi老说密码错误)

    6swifi老说密码错误(6spluswifi老说密码错误)

  • 华为mate9强制恢复出厂怎么设置(华为mate9强制恢复出厂)

    华为mate9强制恢复出厂怎么设置(华为mate9强制恢复出厂)

  • 设置预留信息什么意思(预留信息应该填什么内容)

    设置预留信息什么意思(预留信息应该填什么内容)

  • 淘宝多少评价升四心(淘宝多少评价升5心)

    淘宝多少评价升四心(淘宝多少评价升5心)

  • 苹果小白点在哪关闭(苹果小白点在哪里弄)

    苹果小白点在哪关闭(苹果小白点在哪里弄)

  • 联想电脑无线网络显示叉(联想电脑无线网卡在哪个位置)

    联想电脑无线网络显示叉(联想电脑无线网卡在哪个位置)

  • 华硕主板dram红灯闪烁(华硕主板dram亮红灯显示器无反应)

    华硕主板dram红灯闪烁(华硕主板dram亮红灯显示器无反应)

  • 华为990和980区别(华为990与980的区别)

    华为990和980区别(华为990与980的区别)

  • p30lite和p30区别(p30lite和p30pro区别)

    p30lite和p30区别(p30lite和p30pro区别)

  • appleid退出登录是灰色的(appleid退出登录时显示服务器出错)

    appleid退出登录是灰色的(appleid退出登录时显示服务器出错)

  • 笔记本没有固态硬盘有什么影响(笔记本没有固态硬盘怎么玩永劫无间)

    笔记本没有固态硬盘有什么影响(笔记本没有固态硬盘怎么玩永劫无间)

  • 苹果手机要不要更新系统

    苹果手机要不要更新系统

  • 为什么我的隔空投送用不了(为什么我的隔空投送是所有人十分钟)

    为什么我的隔空投送用不了(为什么我的隔空投送是所有人十分钟)

  • 华为mate30怎么关闭程序(华为mate30怎么关机重启)

    华为mate30怎么关闭程序(华为mate30怎么关机重启)

  • 抖音青少年模式怎么开启(抖音青少年模式怎么弄掉)

    抖音青少年模式怎么开启(抖音青少年模式怎么弄掉)

  • 有效购买日期是啥意思(有效购买日期是在保修期内吗)

    有效购买日期是啥意思(有效购买日期是在保修期内吗)

  • 手机微博怎么发三角号音乐(手机微博怎么发头条文章)

    手机微博怎么发三角号音乐(手机微博怎么发头条文章)

  • 苹果8p建议升12吗(苹果8p建议升级ios16吗)

    苹果8p建议升12吗(苹果8p建议升级ios16吗)

  • 步步高家教机有什么功能(步步高家教机有定位功能吗)

    步步高家教机有什么功能(步步高家教机有定位功能吗)

  • 微信聊天记录怎么发给别人(微信聊天记录怎么永久删除)

    微信聊天记录怎么发给别人(微信聊天记录怎么永久删除)

  • 一对大西洋海雀在接吻,设得兰群岛,苏格兰 (© Vince Burton/Minden Pictures)(大西洋,一望无际的海面)

    一对大西洋海雀在接吻,设得兰群岛,苏格兰 (© Vince Burton/Minden Pictures)(大西洋,一望无际的海面)

  • 【node进阶】深入浅出websocket即时通讯(二)-实现简易的群聊&私聊(node实战)

    【node进阶】深入浅出websocket即时通讯(二)-实现简易的群聊&私聊(node实战)

  • 车联网环境下自动驾驶的协同感知技术综述(基于车联网)

    车联网环境下自动驾驶的协同感知技术综述(基于车联网)

  • fwhois命令  查找并显示用户信息(find命令详解查找文件)

    fwhois命令 查找并显示用户信息(find命令详解查找文件)

  • 研发费用加计扣除75%还是100%
  • 出口退税分类管理办法最新
  • 什么是税收制度构成要素的中心环节
  • 单位历史遗留问题
  • 仓库盘亏怎么处理
  • 个人独资企业需要监事吗
  • 兼职会计负责的工作内容
  • 税款已交更正申报
  • 什么企业可以开增值税专用发票
  • 税控盘备案在电子税务局操作流程
  • 退税发票误勾选确认
  • 银行回单日期晚于做账日期
  • 一张发票开不足一台设备的金额怎么办
  • 转让无形资产增值税
  • 民办职业技能培训学校办学许可证
  • 房地产企业配套设施的核算内容
  • 购销印花税会计分录
  • 月初缴纳的保险是当月的吗
  • 其他综合收益是利润表项目吗
  • 网上认证增值税专用发票步骤图解
  • 什么情况下的发烧才会全身酸痛呢
  • 付现所得税体现在哪方面
  • 税务机关代码不能为空怎么解决
  • 查看所有共享文档
  • 残疾小伙小强
  • 监控 固定资产
  • 怎么才能快速?
  • 提示内存或磁盘空间不足
  • 企业转让房产需要开具发票吗
  • 企业购买银行理财
  • 在php中使用什么获取文件的修改时间
  • 如何设置电脑从硬盘启动
  • sethook.exe - sethook进程是什么文件 有何作用
  • 股票以公允价值计量
  • 最贵的一个苹果多少钱
  • 一列火车穿过一条隧道,已知火车长450米,隧道长750米
  • 富贵竹怎么养才能更旺盛水培生根
  • Laravel 5.4因特殊字段太长导致migrations报错的解决
  • php imagettftext
  • 用替票报销违法吗
  • php中&&什么意思
  • 简单的画
  • 建筑劳务税率是13还是6
  • 什么叫做归属
  • sqlserver2008误操作数据
  • 织梦cms要钱吗
  • dede织梦怎么转成zblog
  • 会计信息采集每年都要重新写吗
  • 增值税的征收对象是谁
  • 财务报表审计的定义
  • 独资合伙公司
  • 公司租赁个人车辆租金多少合适
  • 暂估销售收入账目
  • 营业外支出科目核算的内容
  • 为什么设置辅警
  • 新成立公司申报个税流程
  • 平均增长率计算公式怎么算
  • 对公提现是什么意思啊
  • 公司刚成立如何做账
  • solaris syslog
  • centos必学的60个命令
  • mac无法开机怎么办
  • Linux驱动程序开发视频教程
  • win10预览版桌面图标和任务栏不翼而飞怎么办?
  • unity3d需要购买吗
  • Javascript获取元素的父元素
  • css全局声明
  • JavaScript中的NaN代表什么
  • unityapi解析
  • django实时刷新日志前端
  • 性能优化是什么
  • android sdkmanager
  • android反编译软件
  • javascript获取数据
  • 湖南增值税普通发票查询系统官网
  • 河北省税务局云平台运维
  • 个体经营所得申报密码怎样设置
  • 电子税务局新户报道怎么弄
  • 国家税务总局吕梁市税务局官网
  • 福建省纪检委网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设