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

  • 小微企业所得税优惠政策最新2022
  • 纳税检查调减进项税额主表怎么不显示缴纳税款
  • 增值税税负率举例说明
  • 免税是什么税
  • 加工承揽属于劳务关系吗
  • 企业购房产的进项税税额
  • 去年滞纳金没入营业外今天怎么账务处理
  • 财务费用余额方向怎么填
  • 固定资产装修费用计入房产税吗
  • 报关单境外收货人和合同不一致
  • 电子普通发票重新开
  • 长期股权投资会计处理方法,对投资方报表有何影响
  • 个人开劳务发票是否需要交纳个人所得税呢?
  • 股权转让中土地增值是否交纳个人所得税
  • 汽车维修行业工时标准
  • 没有开通对公账户
  • 其它权益工具投资处置时其他综合收益转那
  • 查看电脑开机时间记录win10
  • php生成php文件
  • 酒店采购布草如何入账
  • session php用法
  • win10如何打开regedit
  • linux怎么查看防火墙信息
  • 待抵扣进项税额贷方表示什么
  • Win11 Build22000.346 Beta/Release预览版发布 KB5007262更新汇总
  • 企业购进的商品又赠送给客户,怎么做分录呀
  • 用人单位如何缴纳医疗保险
  • 库存现金盘盈影响营业利润吗
  • 合同负债和预收负债的区别
  • 天猫提现到对公账户怎么做账
  • smarty怎么用
  • 运输费计税吗
  • vue pending
  • 如何让header居中
  • 纳税人提供技术开发服务
  • 股权转让协议受让方应注意
  • 工会经费计提按应付职工薪酬借方还是贷方?
  • 总分类账户余额表怎么做账
  • 公司一年的账目怎样算
  • 计算业务招待费扣除限额的基础包括营业外收入
  • 增值税一般纳税人登记管理办法
  • 递延所得税负债大白话解释
  • 刚购入的固定资产已使用年限怎么填
  • 研发费用加计扣除的条件
  • 将外购商品作为非货币
  • 怎么调整应收账款分录
  • 自产产品发给职工做福利的会计处理
  • 无形资产与固定资产一样都会存在实体性贬值
  • 兼职会计如何做账报税
  • 研发费用属于哪类会计科目
  • 抵扣联和发票联的区别
  • 房地产企业收到政府补助
  • win10周年更新版是什么意思
  • Windows Server 2008作为打印服务器排错
  • 微软平板电脑surface pro2参数
  • windows8触摸板设置
  • linux系统中对新磁盘分区的命令
  • 微软今天正式停产了吗
  • win8系统崩溃怎么办
  • linux参数命令
  • 使用windows防火墙禁止软件联网
  • 电脑xp桌面
  • mac合盖不休眠怎么办
  • macbookair怎么验证
  • win7旗舰版磁盘清理
  • unity shader lod
  • 程序员基本入门知识
  • shell(bash)下“time” 命令的输出详解
  • 启用opengl的文档窗口
  • nodejs基本原理
  • bat脚本删除注册表
  • python随机数代码
  • js设置滚动条滚到底部
  • java与android的区别
  • 东莞网上办税服务厅
  • 非贸付汇代扣代缴增值税可以抵扣吗
  • 扬州国家税务学院在哪个区
  • 2022款进口途锐
  • 不缴纳耕地占用税
  • 国家税务总局河南税务局官网查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设