java 微信 推送_JAVA 微信消息模板推送
公众号配置模板示例
推送接口
/**
*
* @title: sendTemplate
* @author: daixiaowei
* @date: 2019年11月09日 下午 12:59:27
* @description: 支付微信模板推送
* @param: fillData
* @return:
*/
public String sendTemplate(String openid,String templateId,String[] fillData,String orderId,String vendorId) {
String orderIds = "";
if (StringUtils.isNotEmpty(orderId)) {
orderIds = orderId;
}
String tepUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="
+ getAccessToken();
String frontUrl = conf.get("weixinpay.msgDetailUrl")+"/"
+vendorId +"/"+orderIds+"/"+openid;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(tepUrl);
// 装配post请求参数
JSONObject json = new JSONObject();
json.put("touser", openid);//消息接收者的openid
json.put("template_id", templateId);//消息模板id
json.put("url", frontUrl);//模板里详情页链接
json.put("emphasis_keyword", "keyword1.DATA");
JSONObject dataJson = new JSONObject();
//数据插入
for (int i = 0; i < fillData.length; i++) {
JSONObject sonDateJson = new JSONObject();
sonDateJson.put("value", fillData[i]);
dataJson.put("keyword" + (i + 1), sonDateJson);
}
json.put("data", dataJson);
String resultStr = "发送失败";
try {
StringEntity myEntity = new StringEntity(json.toJSONString(), "UTF-8");
// 设置post求情参数
httpPost.setEntity(myEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 发送成功
String resutlEntity = EntityUtils.toString(httpResponse.getEntity());
ResultTemplateDate resultTemplateDate = JSONObject.parseObject(resutlEntity, ResultTemplateDate.class);
if (resultTemplateDate.getErrcode().equals("40001")) {
resultStr = "token失效";
}
if (resultTemplateDate.getErrcode().equals("40037")) {
resultStr = "template_id不正确";
}
if (resultTemplateDate.getErrcode().equals("41030")) {
resultStr = "page不正确";
}
if (resultTemplateDate.getErrcode().equals("45009")) {
resultStr = "接口调用超过限额(目前默认每个帐号日调用限额为10万)";
}
resultStr = "ok";
return resultStr;
} else {
// 发送失败
return resultStr;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (httpClient != null) {
// 释放资源
httpClient.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return resultStr;
}
获取token方法
/**
*
* @title: getAccessToken
* @author: daixiaowei
* @date: 2019年11月09日 上午 11:00:33
* @description: 获取token
* @param:
* @return:
*/
public String getAccessToken() {
String tmpUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + conf.get("weixinpay.appid")
+ "&secret=" + conf.get("weixinpay.secret") + "";
CloseableHttpClient httpCilent = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(tmpUrl);
try {
HttpResponse httpResponse = httpCilent.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
String entity = EntityUtils.toString(httpResponse.getEntity());
AccessToken accessToken = JSONObject.parseObject(entity, AccessToken.class);
return accessToken.getAccess_token();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 释放资源
httpCilent.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
模板返回值类
package com.jkr.common.util;
/**
* 模板返回消息
* @author daixiaowei
*/
public class ResultTemplateDate {
private String errcode;
private String errmsg;
public String getErrcode() {
return errcode;
}
public void setErrcode(String errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
}
java 微信 推送_JAVA 微信消息模板推送相关推荐
- 微信公众号(测试号)消息模板推送
微信公众号(测试号)消息模板推送 源码地址 https://github.com/panjianlong13/Weixin-PushMessage 微信测试号配置 登录到微信公众平台接口测试账号申请U ...
- python写微信小程序源码示例_python实现微信小程序用户登录、模板推送
python实现微信小程序用户登录.模板推送 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python实现微信小程序用户登录.模板推送.txt ] (友情提示 ...
- 微信小程序之消息模板推送
微信小程序消息推送需要用户触发动作才能发送消息,比如用户提交订单.支付成功.一次只能发一条.也就是说只有用户点了小程序,操作了form表单提交然后生成一个formid ,才可以通过这条formid可以 ...
- java企业微信发送语言_java微信企业号开发之发送消息(文本、图片、语音)
上篇文章介绍了开启回调模式,开始回调模式后我们就要实现聊天功能了.平时使用微信聊天可以发送文本消息.语音.图片.视频等,这里只实现了其中的一些功能和大家分享. 一.与微信企业号建立连接1.企业应用调用 ...
- java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用
为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...
- 消息推送服务器推pc,PC浏览器消息实时推送的解决方案 ——EPush推送平台
原标题:PC浏览器消息实时推送的解决方案 --EPush推送平台 陈华 研发工程师,2014入职去哪儿网.参与研发的EPush推送平台,增强了订单推送的时效性,提高了酒店自助订单处理率.最近负责CEQ ...
- tp5 微信小程序 实现公众号模板推送(同一主体)
小程序与公众号同一主体 微信小程序用户已关注公众号 /*** 模板消息 发送* @param $touser* @param $arr*/public function send_temp($open ...
- java微信开发图文_JAVA微信开发总结的图文代码分享
最近研究了一下微信,感觉不是很难,借鉴了marker(www.yl-blog.com)的开源代码,修改了几处小BUG(在作者的开源网站上留了言,详见其开源网站),很快就实现关键的逻辑: 1.开发者验证 ...
- LARAVEL 消息模板推送
1.首先用compose安装 composer require overtrue/wechat /*** 发送模板消息* @param $event*/public function MessageP ...
最新文章
- find命令详解(原创)
- 过程或函数的副作用是_Python函数和函数式编程(两万字长文警告!一文彻底搞定函数,建议收藏!)...
- Windows 7里的计算器,中文版,给Vista和2008用吧
- java 快速生成有残午餐_写出优质Java代码的4个技巧
- 神东煤矿:煤矿管控难?且看帆软如何助力其智慧化生产管控
- html绘制城堡,HTML5动画 - 山谷城堡
- activemq高可用
- Nagel-Schreckenberg(交通流)模型——python实现
- c语言10的10万次方,在c语言编程中 10的n次方应该怎么表达
- MQ系列SpringBoot快速整合RabbitMQ
- Lightroom 2020年2月版新增功能
- 墨言教育插画干货分享||日本插画为什么独树一帜,那么受欢迎
- 第一章 集总参数电路中电压、电流的约束关系
- php画梯形,利用css来画出各种样式不同的梯形,html中梯形外框怎么做
- 山东大学项目实训小组一——基于深度学习的AI视频剪辑器“易剪”
- 洛谷 P2657 [SCOI2009] windy 数 (题解+代码)
- Java面试复习与笔记
- 比尔盖茨离婚事件:给想进互联网大厂的人的唯一启示
- 机器学习05|一万五字:SVM支持向量机02 【jupyter代码详解篇】
- fluent日志文件提交服务器计算,利用云服务器计算fluent