微信公众号消息推送-模板消息发送
先注册一个微信公众号;或者申请接口测试号来进行开发;
接口测试号申请链接:
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
微信公众号消息推送-模板消息发送相关推荐
- 【微信早安定时推送消息】微信公众号定时推送早安消息 带天气、纪念日、生日、定时推送等(完整代码)
我挥舞着键盘和本子,发誓要把世界写个明明白白. 简介 利用所学知识给他/她一个惊喜,是作为计算机专业的你最大的乐趣. 无计算机基础,5分钟即设置好 (定时推送 及 最新版 将在下期带来) 获取完整代码 ...
- 微信公众号怎么推送消息_微信公众号发送消息
A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...
- PHP实现微信公众号主动推送消息
这篇文章主要介绍了php实现微信公众号主动推送消息的方法,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制,需要的朋友可以参考下. 通过学习借鉴朋友的实现方法进行整理,实现了PHP ...
- php 主动推送消息,php实现微信公众号主动推送消息
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...
- 公众平台模板消息所在行业_如何使用微信公众号第三方平台群发模板消息助手?...
对于微信公众号群发模板消息助手的实现,公众号后台提供了接口编程实现,微号帮平台提供了模板消息群发功能实现,均可以让微信公众号群发模板消息,模板消息即按固定格式的文本模块消息,没有图文形式,纯固定格式的 ...
- python爬虫如何实现每天爬取微信公众号的推送文章
python爬虫如何实现每天爬取微信公众号的推送文章 上上篇文章爬虫如何爬取微信公众号文章 上篇文章python爬虫如何爬取微信公众号文章(二) 上面的文章分别介绍了如何批量获取公众号的历史文章url ...
- 用户画像在科技期刊微信公众号精准推送中的应用
闵甜1,2), 孙涛3),赖富饶1,2), 侯湘4) 1)华南理工大学<现代食品科技>编辑部,广东省广州市天河区五山路381号 510640 2)华南理工大学食品科学与工程学院,广东省广州 ...
- 微信公众号每日推送(小白网页版配置)
微信公众号每日定时推送,天气推送(小白网页版配置) 0.提示 1. 前言 2. API接口申请 2.1 微信 2.2 百度 2.3 地区编码 3. 模板内容编写 4. 功能演示 4.1 创建定时早安推 ...
- 手把手教你最近很火的 微信公众号测试号推送消息
最近有很多小伙伴在尝试做消息推送,今天详细教程它来啦!!! 过程不太复杂,跟着一步一步做就可以实现. 没时间的话,先收藏,等有时间了慢慢学! 第一步:注册微信公众号测试号 1.利用下面的链接注册一个微 ...
- 微信公众号信息推送实现业务解耦
序 最近第三方服务需要增加微信模板信息推送能力,要与业务系统解耦.微服务架构的springCloud下第三方服务增加能力. 一.技术选型 看了下微信公众号的信息推送开发文档,发现不难,就是一个个接口对 ...
最新文章
- webuploader上传文件,后台Java接收
- 设置elf文件链接库的路径
- python爬虫保存图片到指定文件夹_李亚涛:python抓取某房源户型图并自动保存到文件夹...
- 福建师范大学计算机考研好考吗,福建师范大学考研难吗?一般要什么水平才可以进入?...
- CSS 渐进增强与优雅降级
- [ESP8266]--开启服务器模式和客户端模式
- [双调]落梅风(寿阳曲).焰火似龙
- 五种常用的MySQL图形化管理工具
- 搭建一个小型教学办公网络
- fckeditor 源代码下载
- wifi协议-802
- SSD硬盘的寿命测试
- linux文件管理ppt,Linux操作系统_文件管理2.ppt
- 怎么把手机录音转换成mp3?
- 噪声、白噪声、高斯噪声、高斯白噪声以及加性和乘性噪声
- Photoshop设计中用羽化消除边缘锯齿
- 微信小程序之网易云音乐小案例
- 核显 linux 软件,同样的核显,看在线视频ubuntu更卡 - Linux系统与应用 - LinuxApp - 水木社区...
- 【八】【vlc-android】vlc-vout视频流输出端源码分析
- Going out on a limb:Joint Extraction of Entity Mentions and Relations without Dependency Trees【论文笔记】
热门文章
- [POJ 2329] Nearest number-2
- PHP命令空间namespace及use的用法实践总结
- Spring MVC静态资源处理
- Redis在APP中的应用
- 零件库管理信息系统设计--part03:管理员登录部分设计
- “榕树下·那年”移动app ( hybrid ) 开发总结
- Java学习之 多态 Polymorphism
- List 的add()与addAll()的区别
- 软件相关模块与ansible剧本
- C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /