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实现微信订阅消息(服务通知)相关推荐

  1. 后端——》Java程序推送微信订阅消息

    使用场景1:在微信小程序中进行了某种操作后,推送消息告知用户的操作结果 使用场景2:微信端办公流程提交给下一个人审批后,得到审批通过或是驳回修改的命令 使用场景具体如下图,可用在签到.提醒.通知.警告 ...

  2. Java实现体_微信订阅消息体Java实现

    话不多说,直接上代码: SubscribeMsgData.java订阅消息体对象,字符串长度超长可自动截取 package xin.xihc.rebate.bean; import lombok.Al ...

  3. 微信订阅消息(后端)教程

    微信订阅消息(后端) md文件连接添加链接描述 一.订阅消息流程 注意:目前微信这边只支持一次性订阅,就是同意几次发送几次,永久性订阅目前只支持一些政府,医疗等行业.所以我们做不到一次订阅就可以一直发 ...

  4. 微信小程序云开发教程-手把手:获取微信订阅消息的模板ID

    本小节,我们将手把手带领大家一起实现第一个接口,获取微信订阅消息的模板ID 通过开发这个接口,我们将学会云函数的基本结构和函数返回值的格式定义. 开发接口前,我们必须先写接口文档.小程序后端的接口文档 ...

  5. 微信小程序——服务通知,发送订阅消息

    一.什么是消息推送 二.整体效果 三.实现步骤 1 小程序开通订阅消息 2 postApi测试效果 三.uniapp配置 这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下 因为 ...

  6. uni-app 小程序 微信订阅消息通知

    1.在小程序公众平台选择消息模板 2.uni-app前端调用代码 a.小程序登录代码 loginUser() {var me = this;if (!me.name) {uni.showToast({ ...

  7. java发送微信小程序模版通知

    2020年1月7日10:41:51 由于微信关闭了模版消息发送,所有改为订阅消息发送,此篇技术已经过时,请浏览最新的服务通知,新博客地址 https://blog.csdn.net/qq_347065 ...

  8. 微信订阅推送通知实现

    1. 微信文档 微信官方文档 选择开发对应类型的文档打开,如下 2. 获取接口 微信所有的接口都需要先获取token(如何获取这里不做赘述),拿到token后首先调用户获取个人模板列表接口拿到模板id ...

  9. 微信订阅消息推送(记录)

    1.打开微信公众平台,选用订阅消息模板(可在公共库选用,也可自己申请:审核时间3-7天): 2.打开微信官方文档,了解订阅消息的方法subscribeMessage.send | 微信开放文档 3.建 ...

  10. java 给微信发消息_(新版)通过java程序,给微信发送消息

    之前写过一篇使用飞鸽快信给自己的微信发送消息的示例.https://blog.csdn.net/xcxzzx01/article/details/80461086 两年多过去了,飞鸽快信已改名捷易快信 ...

最新文章

  1. Struts2的工作原理
  2. doctrine 报错处理办法: Unknown database type enum requested
  3. 婚姻里的潜规则:你的男人也嫌你穷【转】
  4. 区块链核心技术:拜占庭共识算法之PBFT全面理解
  5. 类文件结构-访问标识和继承信息
  6. linux服务器安装caffe(无root权限)
  7. 鸿蒙OS代码正式开源!!!
  8. [JS]视频总结-第一部分_了解JavaScript
  9. 专题五:MATLAB数据分析与多项式计算
  10. BP神经网络算法基本原理,bp神经网络的应用案例
  11. 如何拯救k8s镜像分发的阿喀琉斯之踵
  12. php自动播放mp3,html5实现背景音乐的自动播放
  13. csp ccf公共钥匙盒
  14. 判断两个整数是否互质
  15. P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
  16. 职业高中计算机英语教案,职业高中英语第三册教案.doc
  17. ssm基于Android的自来水收费系统APP-计算机毕业设计
  18. 解除浏览中百度对大文件下载限制
  19. 长难句——考研英语刘晓燕#3
  20. 数据质量分析和特征分析

热门文章

  1. matlab投资组合权重,【原创】投资组合风险-收益关系的Matlab实现
  2. 体积光渲染——SRP实现
  3. mysql语句——图书馆查询语句
  4. 软件项目管理随谈(2)——项目合同问题
  5. 你们要的日文AI实时字幕来了,谷歌浏览器VS小白浏览器AI大比拼
  6. 计算机科学型,函数计算器1005B学生专用 多功能计算机科学函数型
  7. layui省市区联动选择的实现
  8. 18位身份证校验代码
  9. Ubuntu安装Onedrive
  10. 谷歌搜索、谷歌学术、Github的镜像网站