2020年1月7日10:41:51

由于微信关闭了模版消息发送,所有改为订阅消息发送,此篇技术已经过时,请浏览最新的服务通知,新博客地址

https://blog.csdn.net/qq_34706514/article/details/103870208

首先先上官方文档

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/template-message/sendTemplateMessage.html

关键部分代码

/*** 发送模板消息sendTemplateMessage* 小程序模板消息,发送服务通知* @param touser 接收者(用户)的 openid* @param template_id 所需下发的模板消息的id* @param page 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。* @param formid 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id* @return*/public static JSONObject sendTemplateMessage(String touser,String template_id,String page,String formid,Map<String,TemplateData> map){String accessToken = GetTokenUtil.getAccessToken();
//        String accessToken = "14_J1q4pOmeNcQNTZijKctjByU4SNHJ9ge7eWqUPh98bpjRCzg4Inx50WMZpL06epBJ3wzVaTI9iYXDC_-glxbFYr5PQ9JVDncc67Q7NbvLn4NSW-zasZx_hFCgI8LmBGybI3a-FVjLPzyKMxlpAGFdAIAUAZ";sendTemplateMessage sendTemplateMessage = new sendTemplateMessage();//拼接数据sendTemplateMessage.setTouser(touser);sendTemplateMessage.setTemplate_id(template_id);sendTemplateMessage.setPage(page);sendTemplateMessage.setForm_id(formid);sendTemplateMessage.setData(map);sendTemplateMessage.setEmphasis_keyword("");String json =  JSONObject.toJSONString(sendTemplateMessage);log.info("##模版发送JSON数据:  "+json);String ret = UrlUtils.sendPost(Wechat.SEND_TEMPLATE_MESSAGE+accessToken, json);return JSON.parseObject(ret);}
/**发送模板消息*/String SEND_TEMPLATE_MESSAGE = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=";

用到的封装的实体

TemplateData.java
sendTemplateMessage.java
/*** 发送模板消息* @Author: liangkesai* @CreateDate: 2018/9/30 16:21*/
public class sendTemplateMessage {private String touser; //接收者(用户)的 openidprivate String template_id; //所需下发的模板消息的idprivate String page; //点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。private String form_id; //表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_idprivate Map<String,TemplateData> data; //模板内容,不填则下发空模板private String emphasis_keyword; //模板需要放大的关键词,不填则默认无放大get set 省略
}
public class TemplateData {private String value;public String getValue() {return value;}public void setValue(String value) {this.value = value;}public TemplateData(String value) {this.value = value;}public TemplateData() {}
}

发送post请求代码

 /*** 发送post请求 json格式* @param url* @param param* @return*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("Accept", "application/json");conn.setRequestProperty("Content-Type", "application/json");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(in!=null){in.close();}}catch(IOException ex){ex.printStackTrace();}}return result;}

测试用main方法

public static void main(String[] args) {Map<String,TemplateData> map = new HashMap<>();map.put("keyword1",new TemplateData("339208499"));map.put("keyword2",new TemplateData("2018年9月30日16:33:44"));map.put("keyword3",new TemplateData("***总部"));map.put("keyword4",new TemplateData("*****学院"));JSONObject js = sendTemplateMessage("o89rs0M0EIzrkiN9Va88mFbQyUdQ", "vAsdSQIUPI47H5K5xQVFrc36hK2zgyxioRC_rUxMF9M", "", "1539830935602",map);System.out.println(js);}

有不懂的地方可以留言

java发送微信小程序模版通知相关推荐

  1. java发送微信小程序模板消息_微信小程序-发送模板消息

    1 添加一个小程序的消息模板,获取到模板id,存储到数据库中,方便以后修改调用 这里有个坑,就是 form_id, 这个是用户触发表单事件的表单id,需要存储到数据库中,给这个表单提交以后的数据,添加 ...

  2. Java实现微信小程序发送服务通知

    Java代码实现发送微信小程序服务通知 笔者在上个月接到一个需求,大概是需要计算一条数据的最大办理时间从而发送任务超期的微信小程序服务通知,俺也是第一次接触到需要调用微信的API去进行发送消息,该博客 ...

  3. java推送微信消息换行_5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码)...

    我们在做小程序开发时,消息推送是不可避免的.今天就来教大家如何实现小程序消息推送的后台和前台开发.源码会在文章末尾贴出来. 其实我之前有写过一篇:<springboot实现微信消息推送,java ...

  4. 最全的java对接微信小程序客服功能实现(包含自动回复文本消息、图片消息,进入人工客服)

    java对接微信小程序客服功能实现(包含自动回复文本消息.图片消息,进入人工客服) 第一步:请求校验(确认请求来自微信服务器) 代码如下: @ApiOperation(value = " 微 ...

  5. java与微信小程序通讯_java与微信小程序实现websocket长连接

    本文实例为大家分享了java与微信小程序实现websocket长连接的具体代码,供大家参考,具体内容如下 背景: 需要在小程序实现地图固定坐标下实时查看消息 java环境 :tomcat7 jdk1. ...

  6. java后端微信小程序登录与注册

    java后端微信小程序登录与注册&微信登录授权 分析: 微信小程序用户表 的字段来源于微信服务器 , 必须想办法去获取到对应的用户信息 找到微信开放平台: 微信开放平台 以下是微信开放平台给出 ...

  7. Java实现微信小程序校验图片是否含有违法违规内容

    文章目录 1.Java实现微信小程序校验图片是否含有违法违规内容(security.imgSecCheck) 2.接口文档简述 3.Java实现对接接口 4.压缩图片(Thumbnails) 5.整合 ...

  8. Java生成微信小程序二维码

    Java生成微信小程序二维码 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.Byt ...

  9. java获取微信小程序二维码

    java获取微信小程序二维码 近期正好遇到了,随手记录下 首先获取微信小程序二维码需要小程序的appid 以及secret 然后根据appid和secret去获取小程序的token 即 access_ ...

最新文章

  1. java级联添加_JavaWeb学习记录(十三)——商城购物之添加订单的数据库级联操作...
  2. hdu4915 判断括号匹配
  3. 推断股票强弱最有效的一个方法
  4. TCP/IP(五):TCP 协议详解
  5. poj 1182 食物链(高级的带权并查集)
  6. c语言 define宏名称if(参数),宏编程基础内容
  7. JAVA 正则表达式4种常用的功能
  8. 手机浏览器网址_你真的会用浏览器搜索吗?几个高阶搜索技巧助您高效找到有用信息
  9. 教你下载BarTender 2016
  10. 2014行业软件最新列表整理展示
  11. Mac SnailSVN不显示状态图标
  12. Unity 改变下载资源商店中资源默认路径的方法
  13. 禁用Google英文翻译功能
  14. 微信支付分(四)--取消支付分订单
  15. 正则表达式习题解答-Python核心编程3 第一章
  16. @Component什么时候使用?
  17. oracle jta,JTA和两阶段提交,处理全局事务
  18. 全网17个在线平面设计网站评测(基础体验)
  19. 微影Q8pro投影仪和哈趣H1投影仪相比谁好用 一表看清
  20. python字符串常用操作方法(一)

热门文章

  1. Spring Cloud Alibaba系列四:集成 seata 实现分布式事务
  2. webrtc 学习博客
  3. ST-LINK/V2烧录AT32芯片方法
  4. 如何使用3ds Max制作一把斧子
  5. 多卡聚合智能融合通信设备疫情检查站视频传输方案
  6. Android禁用截屏
  7. 华为配置动态路由ISIS协议
  8. 给程序员做几年老婆后的心得
  9. 微服务——服务依赖与治理-服务调用异常、超时,id生成
  10. Julia安装与运行