java实现微信订阅消息(服务通知)
1. 首先定义自己小程序中APPID以及SECRET
public static final String APPID = "自己的appid";
public static final String SECRET = "自己的secret";
2. 获得session_key
public static String getAccessToken() throws Exception {String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ APPID + "&secret=" + SECRET;System.out.println("URL for getting accessToken accessTokenUrl=" + accessTokenUrl);URL url = new URL(accessTokenUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setDoOutput(true);connection.setDoInput(true);connection.connect();//获取返回的字符InputStream inputStream = connection.getInputStream();int size = inputStream.available();byte[] bs = new byte[size];inputStream.read(bs);String message = new String(bs, "UTF-8");//获取access_tokenJSONObject jsonObject = JSONObject.parseObject(message);String accessToken = jsonObject.getString("access_token");String expires_in = jsonObject.getString("expires_in");System.out.println("accessToken=" + accessToken);System.out.println("expires_in=" + expires_in);return accessToken;}
3.编写流解析数据
public static String httpRequest(String requestUrl,String requestMethod,String output){try{URL url = new URL(requestUrl);HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();connection.setRequestMethod(requestMethod);connection.setDoOutput(true);connection.setDoInput(true);connection.setUseCaches(false);if(null != output){OutputStream outputStream = connection.getOutputStream();outputStream.write(output.getBytes("utf-8"));outputStream.close();}// 从输入流读取返回内容InputStream inputStream = connection.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;StringBuffer buffer = new StringBuffer();while ((str = bufferedReader.readLine()) != null){buffer.append(str);}bufferedReader.close();inputStreamReader.close();inputStream.close();inputStream = null;connection.disconnect();return buffer.toString();}catch(Exception e){e.printStackTrace();}return "";}
4. 通过session_key将订阅消息通过stream解析并获得通知数据
private ApiResult getMesageData(){String result = null;//通过上述方法获取accessTokenString accessToken = WechatUtil.getAccessToken();String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;TemplateVo template = new TemplateVo();//接口调用凭证template.setTemplate_id("消息模板id");//用户openid,可以是小程序的openid,也可以是mp_template_msg.appid对应的公众号的openidtemplate.setTouser(openId);HashMap<String,HashMap> map = new HashMap<>();HashMap<String,String> innerHashMap = new HashMap<>();HashMap<String,String> innerHashMap1 = new HashMap<>();innerHashMap.put("value",模板1内容);innerHashMap1.put("value",模板2内容);map.put("模板1签名",innerHashMap);map.put("模板2签名",innerHashMap1);template.setData(map);ObjectMapper mapper = new ObjectMapper();// java对象转换为json字符换String Json = mapper.writeValueAsString(template);log.info("数据为:"+Json);//将数据通过流的方式进行解析返回result = WechatUtil.httpRequest(requestUrl, "POST", Json);return new ApiResult(200,"发送成功",result);}
注意消息订阅测试只能在正式环境进行测试
常遇的一些错误说明
java实现微信订阅消息(服务通知)相关推荐
- 后端——》Java程序推送微信订阅消息
使用场景1:在微信小程序中进行了某种操作后,推送消息告知用户的操作结果 使用场景2:微信端办公流程提交给下一个人审批后,得到审批通过或是驳回修改的命令 使用场景具体如下图,可用在签到.提醒.通知.警告 ...
- Java实现体_微信订阅消息体Java实现
话不多说,直接上代码: SubscribeMsgData.java订阅消息体对象,字符串长度超长可自动截取 package xin.xihc.rebate.bean; import lombok.Al ...
- 微信订阅消息(后端)教程
微信订阅消息(后端) md文件连接添加链接描述 一.订阅消息流程 注意:目前微信这边只支持一次性订阅,就是同意几次发送几次,永久性订阅目前只支持一些政府,医疗等行业.所以我们做不到一次订阅就可以一直发 ...
- 微信小程序云开发教程-手把手:获取微信订阅消息的模板ID
本小节,我们将手把手带领大家一起实现第一个接口,获取微信订阅消息的模板ID 通过开发这个接口,我们将学会云函数的基本结构和函数返回值的格式定义. 开发接口前,我们必须先写接口文档.小程序后端的接口文档 ...
- 微信小程序——服务通知,发送订阅消息
一.什么是消息推送 二.整体效果 三.实现步骤 1 小程序开通订阅消息 2 postApi测试效果 三.uniapp配置 这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下 因为 ...
- uni-app 小程序 微信订阅消息通知
1.在小程序公众平台选择消息模板 2.uni-app前端调用代码 a.小程序登录代码 loginUser() {var me = this;if (!me.name) {uni.showToast({ ...
- java发送微信小程序模版通知
2020年1月7日10:41:51 由于微信关闭了模版消息发送,所有改为订阅消息发送,此篇技术已经过时,请浏览最新的服务通知,新博客地址 https://blog.csdn.net/qq_347065 ...
- 微信订阅推送通知实现
1. 微信文档 微信官方文档 选择开发对应类型的文档打开,如下 2. 获取接口 微信所有的接口都需要先获取token(如何获取这里不做赘述),拿到token后首先调用户获取个人模板列表接口拿到模板id ...
- 微信订阅消息推送(记录)
1.打开微信公众平台,选用订阅消息模板(可在公共库选用,也可自己申请:审核时间3-7天): 2.打开微信官方文档,了解订阅消息的方法subscribeMessage.send | 微信开放文档 3.建 ...
- java 给微信发消息_(新版)通过java程序,给微信发送消息
之前写过一篇使用飞鸽快信给自己的微信发送消息的示例.https://blog.csdn.net/xcxzzx01/article/details/80461086 两年多过去了,飞鸽快信已改名捷易快信 ...
最新文章
- Struts2的工作原理
- doctrine 报错处理办法: Unknown database type enum requested
- 婚姻里的潜规则:你的男人也嫌你穷【转】
- 区块链核心技术:拜占庭共识算法之PBFT全面理解
- 类文件结构-访问标识和继承信息
- linux服务器安装caffe(无root权限)
- 鸿蒙OS代码正式开源!!!
- [JS]视频总结-第一部分_了解JavaScript
- 专题五:MATLAB数据分析与多项式计算
- BP神经网络算法基本原理,bp神经网络的应用案例
- 如何拯救k8s镜像分发的阿喀琉斯之踵
- php自动播放mp3,html5实现背景音乐的自动播放
- csp ccf公共钥匙盒
- 判断两个整数是否互质
- P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
- 职业高中计算机英语教案,职业高中英语第三册教案.doc
- ssm基于Android的自来水收费系统APP-计算机毕业设计
- 解除浏览中百度对大文件下载限制
- 长难句——考研英语刘晓燕#3
- 数据质量分析和特征分析