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

  • 魅族 18 Pro支持的WLAN功能有哪些(魅族18pro支持ip68防水吗)

    魅族 18 Pro支持的WLAN功能有哪些(魅族18pro支持ip68防水吗)

  • vivo NEX 3s屏幕刷新率是90hz吗(vivonex3s屏幕刷新率是多少赫兹)

    vivo NEX 3s屏幕刷新率是90hz吗(vivonex3s屏幕刷新率是多少赫兹)

  • 华为荣耀10充不上电是怎么回事(华为荣耀10充不上电开不了机怎么回事)

    华为荣耀10充不上电是怎么回事(华为荣耀10充不上电开不了机怎么回事)

  • 字体开源的意义是什么(开源字体的定义)

    字体开源的意义是什么(开源字体的定义)

  • 苹果8前置摄像头像素多少(苹果8前置摄像头黑屏)

    苹果8前置摄像头像素多少(苹果8前置摄像头黑屏)

  • ios微信消息声音怎么改(ios微信消息声音在哪里设置)

    ios微信消息声音怎么改(ios微信消息声音在哪里设置)

  • qq会员可以隐藏吗(qq会员可以隐藏点赞吗)

    qq会员可以隐藏吗(qq会员可以隐藏点赞吗)

  • 抖音什么时候发容易上热门(抖音什么时候发作品流量最多)

    抖音什么时候发容易上热门(抖音什么时候发作品流量最多)

  • 硅脂干了有什么影响(硅脂干了有什么表现)

    硅脂干了有什么影响(硅脂干了有什么表现)

  • 小米换机有什么用(小米换机有什么危害和好处)

    小米换机有什么用(小米换机有什么危害和好处)

  • cad中pl是什么命令(在cad中pl是什么意思)

    cad中pl是什么命令(在cad中pl是什么意思)

  • 23a12v电池是几号电池(23a 电池)

    23a12v电池是几号电池(23a 电池)

  • 离线发送是什么意思(离线发送是什么意思呀)

    离线发送是什么意思(离线发送是什么意思呀)

  • 机顶盒ipoe网络连接失败(机顶盒ipoe网络配置不成功)

    机顶盒ipoe网络连接失败(机顶盒ipoe网络配置不成功)

  • 爱奇艺只有声音没有图像怎么回事(爱奇艺只有声音没有画面怎么办)

    爱奇艺只有声音没有图像怎么回事(爱奇艺只有声音没有画面怎么办)

  • 为什么登快手的时候会出现没网(为什么登快手的号不能用)

    为什么登快手的时候会出现没网(为什么登快手的号不能用)

  • 荣耀v30pro指纹在哪里(荣耀v30指纹锁)

    荣耀v30pro指纹在哪里(荣耀v30指纹锁)

  • ps图案填充怎么用(ps图案填充怎么添加预设图案)

    ps图案填充怎么用(ps图案填充怎么添加预设图案)

  • 嘀嗒出行要怎么解除限制(嘀嗒出行要怎么看到车辆信息)

    嘀嗒出行要怎么解除限制(嘀嗒出行要怎么看到车辆信息)

  • 怎么调整下划线长度(怎么调整下划线的长度)

    怎么调整下划线长度(怎么调整下划线的长度)

  • word让文字和数字竖排(word文字和数字都竖着怎么操作)

    word让文字和数字竖排(word文字和数字都竖着怎么操作)

  • 拼多多怎么停止一分连抽(拼多多怎么停止全站推广)

    拼多多怎么停止一分连抽(拼多多怎么停止全站推广)

  • 小米手环4可以定位吗(小米手环4可以玩游戏吗)

    小米手环4可以定位吗(小米手环4可以玩游戏吗)

  • 快门线的作用(快门线工作原理)

    快门线的作用(快门线工作原理)

  • 什么是转登记纳税人
  • 信息技术服务增值税
  • 以前年度所得税退税会计分录
  • 小规模纳税人减征额怎么计算
  • 一般纳税人可以开免税发票吗
  • 债权投资产生的利息调整包括哪些内容
  • 一般户用途可以是往来款吗
  • 办税人员可以是其他公司人员吗
  • 应收账款核销的会计处理
  • 旅游开发公司有什么职位
  • 企业所得税税前扣除异常是什么意思
  • 增值税普通发票跨月冲红
  • 计算客户的应收账款成本
  • 给职工发放的福利费,要从应付职工薪酬科目吗
  • 电费发票勾选是啥意思
  • 企业理财收入交哪些税
  • 个体工商户库存商品入账
  • 职工教育经费能抵扣进项税
  • 哪些情况需要变更船籍港
  • 公司对公账户可以转私人账户多久到账
  • 多计提企业所得税费用会计分录
  • 接受个人投资现金怎么做账务处理?
  • 一般纳税人和小规模纳税人的区别
  • 增资溢价率
  • 公司减少注册资本时,应当自作出减少
  • ps不支持win7吗
  • Win10怎么显示文件类型
  • 房地产企业增值税怎么计算
  • 纳税申报方式的税务申报工作常规流程图
  • 最奢华的女士腕表
  • 最小的电视棒是多少寸
  • php读取文件
  • 社保缴费基数差1000一般差多少?
  • 微信支付开发包
  • 如何用python制作人工智能
  • sftp命令大全
  • 银行代发工资会扣个人所得税吗
  • 原材料用于在建工程,进项税为什么不转出
  • 金税盘每年服务费
  • 资产减值损失属于营业外支出吗
  • 交易所转交易所手续费是多少
  • 出纳把现金存入私人账户后转公账
  • 临时聘用人员管理办法
  • 申报的财务报表在哪里查询
  • 会计准则中规范性的内容
  • 土地摊销计入成本还是费用
  • 考证交社保是怎么回事
  • 科目在会计上是什么意思
  • 财政补助资金不需要政府采购
  • 固定资产变动方式对应科目
  • 向银行借的款属于什么会计要素
  • 疫情期间购买消毒弥雾机的请示
  • 不是公司的车费用能走公司吗
  • 期间损益科目如何结转
  • 小规模季报成功后怎么缴费
  • 企业一般用什么系统
  • 总账的设置和登记实训报告
  • windows web server 2008
  • mysql 1449解决
  • centos rpm包存放位置
  • windows允许多用户登录
  • win10系统怎么清理
  • linux用户管理器在哪
  • win7升级win8.1失败
  • win10系统关机后又自动启动怎么办
  • PasSrv.exe - PasSrv是什么进程 有什么用
  • win10怎么安装java?win10系统安装java的方法
  • linux的简单使用
  • [置顶]星陨计划
  • excel实现多选
  • 数据库并发操作主要解决哪三个问题,基本方法是什么
  • 使用GeoPainter一步一步布置场景
  • js拖动效果
  • jquery弹出页面窗口
  • 无锡市国税
  • 临时税务登记纳税人
  • 南京政务服务中心
  • 微山湖到底属于哪里
  • 梦幻西游新版登录方式
  • 徐州国税局班子成员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设