当前位置:   article > 正文

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

sendtemplatemessage

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

关键部分代码

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

用到的封装的实体

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

发送post请求代码

  1. /**
  2. * 发送post请求 json格式
  3. * @param url
  4. * @param param
  5. * @return
  6. */
  7. public static String sendPost(String url, String param) {
  8. PrintWriter out = null;
  9. BufferedReader in = null;
  10. String result = "";
  11. try {
  12. URL realUrl = new URL(url);
  13. // 打开和URL之间的连接
  14. URLConnection conn = realUrl.openConnection();
  15. // 设置通用的请求属性
  16. conn.setRequestProperty("Accept", "application/json");
  17. conn.setRequestProperty("Content-Type", "application/json");
  18. // 发送POST请求必须设置如下两行
  19. conn.setDoOutput(true);
  20. conn.setDoInput(true);
  21. // 获取URLConnection对象对应的输出流
  22. out = new PrintWriter(conn.getOutputStream());
  23. // 发送请求参数
  24. out.print(param);
  25. // flush输出流的缓冲
  26. out.flush();
  27. // 定义BufferedReader输入流来读取URL的响应
  28. in = new BufferedReader(
  29. new InputStreamReader(conn.getInputStream()));
  30. String line;
  31. while ((line = in.readLine()) != null) {
  32. result += line;
  33. }
  34. } catch (Exception e) {
  35. System.out.println("发送 POST 请求出现异常!"+e);
  36. e.printStackTrace();
  37. }
  38. //使用finally块来关闭输出流、输入流
  39. finally{
  40. try{
  41. if(out!=null){
  42. out.close();
  43. }
  44. if(in!=null){
  45. in.close();
  46. }
  47. }
  48. catch(IOException ex){
  49. ex.printStackTrace();
  50. }
  51. }
  52. return result;
  53. }

测试用main方法

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

 

有不懂的地方可以留言

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/849407
推荐阅读
相关标签
  

闽ICP备14008679号