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

  • opporeno7处理器是什么型号(opporeno7处理器是天玑吗)

    opporeno7处理器是什么型号(opporeno7处理器是天玑吗)

  • 小米10的屏幕是多少尺寸(小米10的屏幕是lcd还是oled)

    小米10的屏幕是多少尺寸(小米10的屏幕是lcd还是oled)

  • 手机忘记解锁图案怎么办(手机忘记解锁图案了怎么办vivo)

    手机忘记解锁图案怎么办(手机忘记解锁图案了怎么办vivo)

  • qq扩列语音连麦怎么没有了(qq扩列语音连麦为什么匹配失败)

    qq扩列语音连麦怎么没有了(qq扩列语音连麦为什么匹配失败)

  • 惠普envy和星系列区别(惠普星envy13,惠普星有啥区别)

    惠普envy和星系列区别(惠普星envy13,惠普星有啥区别)

  • i5-7200u属于什么水平(i57200u属于什么档次的处理器)

    i5-7200u属于什么水平(i57200u属于什么档次的处理器)

  • 钉钉手机和电脑可以同时视频会议吗(钉钉手机和电脑一起看怎么算时长)

    钉钉手机和电脑可以同时视频会议吗(钉钉手机和电脑一起看怎么算时长)

  • vivo深色模式怎么开(vivo深色模式怎么关闭手机)

    vivo深色模式怎么开(vivo深色模式怎么关闭手机)

  • 手机摇晃有声音是不是零件松动(手机摇晃有声音正常吗)

    手机摇晃有声音是不是零件松动(手机摇晃有声音正常吗)

  • 58手机号码注销还能再开通吗(58手机号码注销怎么注销)

    58手机号码注销还能再开通吗(58手机号码注销怎么注销)

  • oppo手机测距仪在哪里(oppo手机测距仪收费吗)

    oppo手机测距仪在哪里(oppo手机测距仪收费吗)

  • 微信限额什么时候可以恢复使用(微信限额什么时候解除)

    微信限额什么时候可以恢复使用(微信限额什么时候解除)

  • oppo手机强制关机是按哪几个键(oppo手机强制关机怎么操作)

    oppo手机强制关机是按哪几个键(oppo手机强制关机怎么操作)

  • 运行内存是什么(智慧运行内存是什么)

    运行内存是什么(智慧运行内存是什么)

  • 电池老化怎么办(华为手机电池老化怎么办)

    电池老化怎么办(华为手机电池老化怎么办)

  • ipada1474是什么机型(ipad型号a1474是什么版本)

    ipada1474是什么机型(ipad型号a1474是什么版本)

  • word2003页面背景在哪(word2003页面背景在哪里)

    word2003页面背景在哪(word2003页面背景在哪里)

  • 华为nova5Pro微信有美颜吗(华为nova5pro微信收不到信息)

    华为nova5Pro微信有美颜吗(华为nova5pro微信收不到信息)

  • ios13怎么设置视频壁纸(iphone13pro视频设置)

    ios13怎么设置视频壁纸(iphone13pro视频设置)

  • 红米usb设置在哪里打开(红米手机usb怎么打开usb调试)

    红米usb设置在哪里打开(红米手机usb怎么打开usb调试)

  • 双显卡笔记本怎么切换到独立显卡(双显卡笔记本怎么切换显卡)

    双显卡笔记本怎么切换到独立显卡(双显卡笔记本怎么切换显卡)

  • 恢复出厂能解封探探吗(恢复出厂能解封微信吗)

    恢复出厂能解封探探吗(恢复出厂能解封微信吗)

  • 8p发热正常吗(iphone8p发热正常吗)

    8p发热正常吗(iphone8p发热正常吗)

  • 天猫雷达扫描在哪里(天猫雷达扫描入口)

    天猫雷达扫描在哪里(天猫雷达扫描入口)

  • 手机从哪看淘金币过期(手机淘宝怎么看淘金币)

    手机从哪看淘金币过期(手机淘宝怎么看淘金币)

  • 微信不能收红包提示绑定银行卡(没有实名制微信不能收红包)

    微信不能收红包提示绑定银行卡(没有实名制微信不能收红包)

  • 怎么把内存移到sd卡(怎么把内存移到sd卡红米)

    怎么把内存移到sd卡(怎么把内存移到sd卡红米)

  • win10右键显示设置打不开怎么办解决教程(win10右键显示设置打不开怎么办)

    win10右键显示设置打不开怎么办解决教程(win10右键显示设置打不开怎么办)

  • Win11装了双系统没有跳出选项怎么办?Win11双系统开机选择系统方法(win11装双系统虚拟机mac)

    Win11装了双系统没有跳出选项怎么办?Win11双系统开机选择系统方法(win11装双系统虚拟机mac)

  • 汇算清缴退税会计科目
  • 母公司与子公司的区别
  • 处置长投时其他权益变动
  • 单利率和复利率excel计算公式
  • 公司给员工租赁住房算成本吗
  • 在建工程有应交税费吗
  • 租赁设备出口怎么处理?
  • 库存现金盘点表是不是原始凭证
  • 母公司名称的发票可以计入子公司的开办费处理吗?
  • 车船税法律制度的规定什么是以每米为计税依据的
  • 案例分析个人总结报告
  • 物业公司取暖费收费标准
  • 建安企业异地个税怎么交
  • 增值税普票销售方无开户行账号是否可以
  • 税务局代增值税普通发票流程
  • 查企业有记录吗
  • 房地产企业按照功能可分为
  • 培训费增值税专用发票
  • 进口采购交的增值税
  • 管理费用怎么记忆
  • 2020年916减免退库什么意思
  • 增值税计入应付账款
  • 公司支付的赔偿款计入什么会计科目
  • 办公室空调维修属于办公费吗
  • 个人所得税申请免税条件
  • 网络服务费一般纳税人几个点
  • 怎样解除机房
  • php输出当月日历
  • 鸿蒙系统怎么开启OTG
  • 你需要权限来执行操作是怎么回事
  • 银行账户销户余额转入另外的公司账户分录
  • php sql 教程
  • 小规模纳税人差额征税
  • 最值钱的苹果
  • 被雪覆盖的山峰
  • 企业接受现金捐赠要交税吗
  • 受托方代扣代缴的消费税计入什么科目
  • 支付税务罚款
  • 暂估金额与发票金额会影响什么信息
  • 处置固定资产的增值税怎么处理
  • js添加方法
  • 合并会计报表的编制
  • 贷款和应收款项属于金融资产吗
  • 2019年4月1日降低城镇职工什么单位缴费比例
  • 海关缴款书当月能查到吗
  • 小规模纳税人出租不动产税率是5%还是3%
  • 建筑企业预缴所得税款税率
  • 2022年最新苹果平板电脑
  • 织梦怎么改网站主页
  • 哪些费用计入管理费用
  • 银行进账单是外来原始凭证吗
  • 发票网上申领需要多长时间
  • 劳动报酬所得收入额大于4000
  • 核定征收一般纳税人进项是否可抵扣
  • ce认证所需的模块有哪些
  • 公司给非本单位的个人转账有风险怎么平账
  • 普通发票可以抵扣吗
  • 进项发票认证后暂不抵扣
  • 月末一般要结转哪些会计科目
  • 代持的股份
  • 购买机器的会计分录
  • 一般纳税人购货取得普通发票
  • 居民企业与非居民企业的纳税差异
  • 收到不是股东的现金
  • 公司如何做账本
  • 企业建账选择什么会计准则
  • mysql怎么实现
  • windows防病毒
  • 如何延长手机电池使用寿命
  • windows隐藏administrator
  • win8.1c盘满了怎么办
  • 打开word显示
  • 安卓百分百
  • dos删除指定后缀文件
  • 用注册表更改用户名后无法登陆
  • javascript编程语言
  • jQuery实现表格行和列的动态添加与删除方法【测试可用】
  • js prototype constructor
  • 学校 税务登记
  • 会计报表错误
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设