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

  • 微波炉使用说明怎么做(微波炉使用说明)(panasonic微波炉使用说明)

    微波炉使用说明怎么做(微波炉使用说明)(panasonic微波炉使用说明)

  • 真我gtneo3支持无线充电吗(真我gtneo3支持无线)

    真我gtneo3支持无线充电吗(真我gtneo3支持无线)

  • 苹果12pro max支持多少w快充(苹果12pro max支持灵动岛吗)

    苹果12pro max支持多少w快充(苹果12pro max支持灵动岛吗)

  • 华为荣耀9xpro有什么颜色(华为荣耀九xpro)

    华为荣耀9xpro有什么颜色(华为荣耀九xpro)

  • 普通打印机能打印不干胶纸吗(普通打印机能打印菲林纸吗)

    普通打印机能打印不干胶纸吗(普通打印机能打印菲林纸吗)

  • 微信收不到消息怎么回事(不开微信收不到消息)

    微信收不到消息怎么回事(不开微信收不到消息)

  • 快手极速版大王卡免流量吗(快手极速版大王卡免流怎么激活)

    快手极速版大王卡免流量吗(快手极速版大王卡免流怎么激活)

  • 小米滑板车充电器绿灯(小米滑板车充电口在哪里)

    小米滑板车充电器绿灯(小米滑板车充电口在哪里)

  • 京东可不可以加好友(京东可不可以加急送)

    京东可不可以加好友(京东可不可以加急送)

  • 苹果手机有无线投屏吗(苹果手机有无线遥控功能吗)

    苹果手机有无线投屏吗(苹果手机有无线遥控功能吗)

  • 华为p40pro有超级微距吗(华为p40pro有超级快充turbo充电吗)

    华为p40pro有超级微距吗(华为p40pro有超级快充turbo充电吗)

  • 微信app位置权限怎么开(开启微信app位置权限)

    微信app位置权限怎么开(开启微信app位置权限)

  • 退出微信群还能恢复吗(退出微信群还能看到以前的信息吗)

    退出微信群还能恢复吗(退出微信群还能看到以前的信息吗)

  • 华为cra一cl00是什么型号(华为crrcl00多少钱)

    华为cra一cl00是什么型号(华为crrcl00多少钱)

  • 什么是微视(什么是微视频脚本)

    什么是微视(什么是微视频脚本)

  • 爱奇艺哪里设置播放转向(爱奇艺哪里设置取消自动续费)

    爱奇艺哪里设置播放转向(爱奇艺哪里设置取消自动续费)

  • 探探什么时候出来的(探探什么时候出的黑钻)

    探探什么时候出来的(探探什么时候出的黑钻)

  • iphone11多少寸屏幕(iphone11多大的屏幕尺寸)

    iphone11多少寸屏幕(iphone11多大的屏幕尺寸)

  • 小米商城的发票能改吗(小米商城的发票怎么改抬头)

    小米商城的发票能改吗(小米商城的发票怎么改抬头)

  • 米家app怎么添加投影(米家app怎么添加小爱音箱)

    米家app怎么添加投影(米家app怎么添加小爱音箱)

  • 虾米音乐怎么下载歌曲(虾米音乐怎么下载不了)

    虾米音乐怎么下载歌曲(虾米音乐怎么下载不了)

  • vivox27左边的按键是干什么的(vivox27左侧面的按键)

    vivox27左边的按键是干什么的(vivox27左侧面的按键)

  • qq加好友申请几天失效(申请加qq好友 时间限制多久)

    qq加好友申请几天失效(申请加qq好友 时间限制多久)

  • 苹果xr录屏在哪(苹果xr录屏在哪里设置)

    苹果xr录屏在哪(苹果xr录屏在哪里设置)

  • win10开机启动项设置教程(win10开机启动项怎么删除)

    win10开机启动项设置教程(win10开机启动项怎么删除)

  • 电脑系统如何安装系统win7?(电脑系统如何安装字体)

    电脑系统如何安装系统win7?(电脑系统如何安装字体)

  • php变量的引用赋值使用(php调用变量)

    php变量的引用赋值使用(php调用变量)

  • 个人所得税如何退税操作流程
  • 综合所得减除费用标准是什么意思
  • 进项税抵扣
  • 工会经费计入现金流量表哪项
  • 装订需要多长时间
  • 下岗职工可以享受低保吗
  • 房产折旧计算方法 举例
  • 计提的工会经费怎么做账
  • 出口转内销增值税报表怎么填
  • 调整上年度所得税计提分录
  • 进项税已认证未入账如何处理
  • 企业自建房转让如何交土地增值税
  • 公司进货可以计提折旧吗
  • 发票作废情况说明书
  • 如何区分劳务派遣和劳动合同
  • 增值税发票抵扣进项税什么意思
  • 外币折算差额计入什么科目
  • 大额转账人行审核通过
  • 变更经营范围要什么资料
  • 收到退回增值税和附加税怎么处理
  • 小米电视连不上路由器怎么回事
  • 汇兑产出的收益计入
  • vb win10
  • 超市的成功秘诀
  • win7s
  • 销售免费样品账务处理
  • 如何制作win7系统u盘安装盘
  • 高新技术企业研发费用归集
  • 认缴出资什么时候补齐
  • 企业应纳所得税计算公式
  • 如何管理和维护企业微信客户
  • php用法
  • php删除数组中指定元素
  • 进项发票过期了怎么办
  • thinkphp update方法
  • php怎么写网页
  • 承兑贴现会计分录怎么做
  • linux调试工具有哪些
  • 实现php搜索框代码
  • 帝国cms适合建什么站
  • 购入固定资产的会计处理
  • 帝国cms如何调用网络
  • phpcms v9用户手册
  • 织梦联动筛选教程
  • 进项税额漏报处理办法
  • 购买货物收到发票怎么做账小规模
  • 小微企业是怎样自己认定的呢
  • 按信用风险特征组合
  • 政府部门城投公司融资安全吗
  • 长期挂账应付款的处理方法
  • 以现金形式发工资的公司
  • 公司销售二手车怎么开票
  • 从法人借款现金分录
  • 咨询服务公司的经营范围
  • 农业合作社销售农产品怎样纳税
  • 预缴的附加税月末结转吗
  • 会计常用表格都有哪些技能
  • mysql删除有外键关联的数据
  • vidaa 破解
  • windows8如何安装
  • ubuntu 11
  • u盘安装ubuntu找不到硬盘
  • shell32.exe - shell32是什么进程 有什么用
  • linux磁盘分区表
  • win7关闭uac是什么意思
  • 在对linux系统中dir
  • 卸载安装软件
  • dos命令行怎么打开
  • 7z.exe 命令行
  • vue只适合做单页项目吗
  • java scripts
  • javascript getattribute
  • jquery里的each()是什么函数?你是如何使用他的?
  • android学什么
  • 广东省税务局官网 国家税务总局
  • 深圳国税局发票查询
  • 苹果税务发票
  • 朝阳区第六税务所
  • 湖南长沙税务局上班时间
  • 保税区社会车辆能进吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设