先注册一个微信公众号;或者申请接口测试号来进行开发;

接口测试号申请链接:

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

这里先介绍测试号的开发;

点击链接进入页面,会看到y一个二维码,用微信扫描后就会分配给你一个微信公众测试账号;

然后找到如下这个位置,点击“新增测试模板”按钮,填写

下面是相关代码;

       @Testpublic void sendTemplate(){postTemplateMsg("appid","appSecret", "openId");//这里替换成你自己的信息}public  String  sendTemplateMessage(String openId){TemplateMsg tm=new TemplateMsg();tm.setTouser(openId);tm.setTemplate_id("模板Id");tm.setUrl("https://wwww.baidu.com");//about data startMap<String,Object> m = new HashMap<String,Object>();  TemplateData first = new TemplateData();  first.setColor("#000000");    first.setValue("您好,您有一个流程待办需要处理:");    m.put("first", first);  TemplateData keyword1 = new TemplateData();    keyword1.setColor("#000000");    keyword1.setValue("11111111111111");    m.put("keyword1", keyword1);  TemplateData keyword2 = new TemplateData();    keyword2.setColor("#000000");    keyword2.setValue("爱你一万年");    m.put("keyword2", keyword2);  TemplateData keyword3 = new TemplateData();    keyword3.setColor("#000000");    keyword3.setValue("2018.04.27 09:51:30");    m.put("keyword3", keyword3);  TemplateData keyword4 = new TemplateData();    keyword4.setColor("#000000");    keyword4.setValue("不够");    m.put("keyword4", keyword4);  TemplateData remark = new TemplateData();    remark.setColor("#000000");    remark.setValue("再加一万年");    m.put("remark", remark);  //about data endtm.setData(m);String jsonString = JSONObject.fromObject(tm).toString();System.out.println("jsonString:"+jsonString);return jsonString;}/*** 发送模板消息* appId 公众账号的唯一标识* appSecret 公众账号的密钥* openId 用户标识*/public  void postTemplateMsg(String appId, String appSecret, String openId){Token token = CommonUtil.getToken(appId, appSecret);String access_token = token.getAccessToken();String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token;System.out.println("requestUrl:"+requestUrl);String jsonString = sendTemplateMessage(openId);JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", jsonString);System.out.println("jsonObject="+jsonObject);    if (null != jsonObject) {  int errorCode = jsonObject.getInt("errcode");         if (0 == errorCode) {  System.out.println("模板消息发送成功!");  } else {  String errorMsg = jsonObject.getString("errmsg");  System.out.println("模板消息发送失败,错误码是:"+errorCode+",错误信息是:"+errorMsg);  }  }  }

  

/**
* 类名: CommonUtil </br>
* 描述: 通用工具类 </br>
* 发布版本:V1.0  </br>*/
public class CommonUtil {// 凭证获取(GET)public final static String token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";/*** 发送https请求* * @param requestUrl 请求地址* @param requestMethod 请求方式(GET、POST)* @param outputStr 提交的数据* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)*/public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {JSONObject jsonObject = null;try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { new MyX509TrustManager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new java.security.SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();URL url = new URL(requestUrl);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();conn.setSSLSocketFactory(ssf);conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);// 设置请求方式(GET/POST)conn.setRequestMethod(requestMethod);// 当outputStr不为null时向输出流写数据if (null != outputStr) {OutputStream outputStream = conn.getOutputStream();// 注意编码格式outputStream.write(outputStr.getBytes("UTF-8"));outputStream.close();}// 从输入流读取返回内容InputStream inputStream = conn.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;conn.disconnect();jsonObject = JSONObject.fromObject(buffer.toString());} catch (ConnectException ce) {System.out.println("连接超时:"+ ce);} catch (Exception e) {System.out.println("https请求异常:"+ e);}return jsonObject;}/*** 获取接口访问凭证* * @param appid 凭证* @param appsecret 密钥* @return*/public static Token getToken(String appid, String appsecret) {Token token = null;String requestUrl = token_url.replace("APPID", appid).replace("APPSECRET", appsecret);System.out.println("requestUrl:"+requestUrl);// 发起GET请求获取凭证JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);if (null != jsonObject) {try {token = new Token();token.setAccessToken(jsonObject.getString("access_token"));token.setExpiresIn(jsonObject.getInt("expires_in"));} catch (JSONException e) {token = null;// 获取token失败System.out.println("获取token失败 errcode:"+jsonObject.getInt("errcode")+"errmsg:"+jsonObject.getString("errmsg"));}}return token;}/*** URL编码(utf-8)* @param source* @return*/public static String urlEncodeUTF8(String source) {String result = source;try {result = java.net.URLEncoder.encode(source, "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}public static void main(String args[]) {//https://1d488f5d.ngrok.io/WeiXinProject/String source="https://565b4dad.ngrok.io/WeChatPublicNumber/oauthServlet";System.out.println(CommonUtil.urlEncodeUTF8(source));}
}

 over!

转载于:https://www.cnblogs.com/YLQBL/p/8961224.html

微信公众号消息推送-模板消息发送相关推荐

  1. 【微信早安定时推送消息】微信公众号定时推送早安消息 带天气、纪念日、生日、定时推送等(完整代码)

    我挥舞着键盘和本子,发誓要把世界写个明明白白. 简介 利用所学知识给他/她一个惊喜,是作为计算机专业的你最大的乐趣. 无计算机基础,5分钟即设置好 (定时推送 及 最新版 将在下期带来) 获取完整代码 ...

  2. 微信公众号怎么推送消息_微信公众号发送消息

    A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...

  3. PHP实现微信公众号主动推送消息

    这篇文章主要介绍了php实现微信公众号主动推送消息的方法,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制,需要的朋友可以参考下. 通过学习借鉴朋友的实现方法进行整理,实现了PHP ...

  4. php 主动推送消息,php实现微信公众号主动推送消息

    通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...

  5. 公众平台模板消息所在行业_如何使用微信公众号第三方平台群发模板消息助手?...

    对于微信公众号群发模板消息助手的实现,公众号后台提供了接口编程实现,微号帮平台提供了模板消息群发功能实现,均可以让微信公众号群发模板消息,模板消息即按固定格式的文本模块消息,没有图文形式,纯固定格式的 ...

  6. python爬虫如何实现每天爬取微信公众号的推送文章

    python爬虫如何实现每天爬取微信公众号的推送文章 上上篇文章爬虫如何爬取微信公众号文章 上篇文章python爬虫如何爬取微信公众号文章(二) 上面的文章分别介绍了如何批量获取公众号的历史文章url ...

  7. 用户画像在科技期刊微信公众号精准推送中的应用

    闵甜1,2), 孙涛3),赖富饶1,2), 侯湘4) 1)华南理工大学<现代食品科技>编辑部,广东省广州市天河区五山路381号 510640 2)华南理工大学食品科学与工程学院,广东省广州 ...

  8. 微信公众号每日推送(小白网页版配置)

    微信公众号每日定时推送,天气推送(小白网页版配置) 0.提示 1. 前言 2. API接口申请 2.1 微信 2.2 百度 2.3 地区编码 3. 模板内容编写 4. 功能演示 4.1 创建定时早安推 ...

  9. 手把手教你最近很火的 微信公众号测试号推送消息

    最近有很多小伙伴在尝试做消息推送,今天详细教程它来啦!!! 过程不太复杂,跟着一步一步做就可以实现. 没时间的话,先收藏,等有时间了慢慢学! 第一步:注册微信公众号测试号 1.利用下面的链接注册一个微 ...

  10. 微信公众号信息推送实现业务解耦

    序 最近第三方服务需要增加微信模板信息推送能力,要与业务系统解耦.微服务架构的springCloud下第三方服务增加能力. 一.技术选型 看了下微信公众号的信息推送开发文档,发现不难,就是一个个接口对 ...

最新文章

  1. webuploader上传文件,后台Java接收
  2. 设置elf文件链接库的路径
  3. python爬虫保存图片到指定文件夹_李亚涛:python抓取某房源户型图并自动保存到文件夹...
  4. 福建师范大学计算机考研好考吗,福建师范大学考研难吗?一般要什么水平才可以进入?...
  5. CSS 渐进增强与优雅降级
  6. [ESP8266]--开启服务器模式和客户端模式
  7. [双调]落梅风(寿阳曲).焰火似龙
  8. 五种常用的MySQL图形化管理工具
  9. 搭建一个小型教学办公网络
  10. fckeditor 源代码下载
  11. wifi协议-802
  12. SSD硬盘的寿命测试
  13. linux文件管理ppt,Linux操作系统_文件管理2.ppt
  14. 怎么把手机录音转换成mp3?
  15. 噪声、白噪声、高斯噪声、高斯白噪声以及加性和乘性噪声
  16. Photoshop设计中用羽化消除边缘锯齿
  17. 微信小程序之网易云音乐小案例
  18. 核显 linux 软件,同样的核显,看在线视频ubuntu更卡 - Linux系统与应用 - LinuxApp - 水木社区...
  19. 【八】【vlc-android】vlc-vout视频流输出端源码分析
  20. Going out on a limb:Joint Extraction of Entity Mentions and Relations without Dependency Trees【论文笔记】

热门文章

  1. [POJ 2329] Nearest number-2
  2. PHP命令空间namespace及use的用法实践总结
  3. Spring MVC静态资源处理
  4. Redis在APP中的应用
  5. 零件库管理信息系统设计--part03:管理员登录部分设计
  6. “榕树下·那年”移动app ( hybrid ) 开发总结
  7. Java学习之 多态 Polymorphism
  8. List 的add()与addAll()的区别
  9. 软件相关模块与ansible剧本
  10. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /