微信公众号发送消息通知
- 微信申请测试公众号
申请测试号 - 微信公众平台接口调试工具
接口调试工具 - 如何获取用户的openid
获取用户的openid
4.通过微信公众号后台聊天获取用户的openid
- 测试平台获取appID,appsecret后,用自己微信关注测试公众号,微信号就是你的openid
消息模板
{{first.DATA}}
项目名称:{{keyword1.DATA}}
项目金额:{{keyword2.DATA}}
开标时间:{{keyword3.DATA}}
{{remark.DATA}}
- 消息实体类
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;/*** @Author tan* @Date 2021/10/8 15:08*/
@Data
@Builder
@Getter
@Setter
public class WXMessageVo {/*** 接受人的openid*/private String toUser;/*** 消息模板id*/private String templateId;/*** 消息标题*/private String title;/*** 消息备注*/private String remark;/*** 第一个参数*/private String keyword1;/*** 第二个参数*/private String keyword2;/*** 第三个参数*/private String keyword3;/*** 备注字体颜色*/private String remarkColor;/*** 标题字体颜色*/private String titleColor;
}
- 发送消息工具类
/** 获取微信accessToken 工具类* @Author tan* @Date 2021/10/8 11:52*/
@Component
@Slf4j
public class WXMessageUtil {@AutowiredRedisCache redisCache;public final String REDIS_TOKEN = "WX_ACCESS_TOKEN";public final String APP_ID = "APPID";public final String APP_SECRET = "APP_SECRET";/*** 获取access_token* @return* @throws Exception*/public String getAccessToken(){// 从redis中获取微信token,没有再发请求String cacheObject = redisCache.getCacheObject(REDIS_TOKEN);if (StringUtils.isNotEmpty(cacheObject)) {return cacheObject;}String accessTokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";String accessToken="";Map<String, Object> params = new HashMap<>();params.put("appid",APP_ID);params.put("secret",APP_SECRET);String result = HttpUtil.get(accessTokenUrl, params);Map<String, String> map = (Map<String, String>) JSON.parse(result);if (map !=null){accessToken=map.get("access_token");}redisCache.setCacheObject(REDIS_TOKEN,accessToken,6000, TimeUnit.SECONDS);return accessToken;}/*** 发送消息 touser不能为空 TemplateId不能为空*/@Asyncpublic void sendMessagePush(WXMessageVo vo){String messageUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";String accessToken = getAccessToken();String sendUrl = messageUrl + accessToken;JSONObject json=new JSONObject();JSONObject text=new JSONObject();JSONObject first=new JSONObject();JSONObject remark=new JSONObject();json.put("touser",vo.getToUser());json.put("template_id",vo.getTemplateId());first.put("value",vo.getTitle());remark.put("value",vo.getRemark());if (vo.getKeyword1()!=null){JSONObject keyword1=new JSONObject();keyword1.put("value",vo.getKeyword1());text.put("keyword1",keyword1);}if (vo.getKeyword2()!=null){JSONObject keyword2=new JSONObject();keyword2.put("value",vo.getKeyword2());text.put("keyword2",keyword2);}if (vo.getKeyword3()!=null){JSONObject keyword3=new JSONObject();keyword3.put("value",vo.getKeyword3());text.put("keyword3",keyword3);}if (vo.getTitleColor() !=null){first.put("color",vo.getTitleColor());}if (vo.getRemarkColor() !=null){remark.put("color",vo.getRemarkColor());}text.put("first", first);text.put("remark",remark);json.put("data", text);String body = json.toString();String result = HttpUtil.post(sendUrl, body);Map<String, String> map = (Map<String, String>) JSON.parse(result);Object errCode = map.get("errcode");int code = Integer.parseInt(String.valueOf(errCode));String voStr = JSONObject.toJSONString(vo);if (code == 0) {Object msgId = map.get("msgid");log.info("微信公众号消息推送成功,消息id:{},消息信息{}",msgId,voStr);}else {log.error("微信公众号消息推送失败,详情:{},消息信息{}",result,voStr);}}}
- 调用实例
WXMessageVo wxMessageVo = WXMessageVo.builder().keyword1("招标").keyword2("39998元").keyword3("2021年10月8日").remark("欢迎再次投标!").remarkColor("#173177").templateId("templateid").title("招标").titleColor("#173177").toUser("openid").build();wxMessageUtil.sendMessagePush(wxMessageVo);
- 备注
因为微信获取accessToken每天有限制2000次,所以放到缓存中。
微信公众号发送消息通知相关推荐
- python训练营微信广告发送机_python实现给微信公众号发送消息的方法
本文实例讲述了python实现给微信公众号发送消息的方法.分享给大家供大家参考,具体如下: 现在通过发微信公众号信息来做消息通知和告警已经很普遍了.最常见的就是运维通过zabbix调用shell脚本给 ...
- 微信公众号怎么推送消息_微信公众号发送消息
A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...
- 实现微信公众号发送消息给指定用户
一.前言 在实际项目开发中,需要实现消息中心向关注微信公众号的指定用户发送消息通知,在翻阅了网上很多资料及微信官方开发文档后,最终顺利完成功能开发,但是其中走过的路艰辛且曲折,因此特将开发过程中踩过的 ...
- Java微信公众号发送消息-保姆级教程附源码
目录 1. 概念说明: 2. 开发准备: 3. 测试demo(更改配置信息即可使用) 3.1. 服务器配置 3.1.1.配置填写说明 3.1.2.校验服务器有效性: 3.1.3.URL后端接口代码和校 ...
- 小程序发送订阅消息,微信公众号发送消息模板
首先讲两个注意事项 1.小程序和微信公众号的用户openid是不同的. 2.小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发). 关于小程序和公众号AppID和AppS ...
- 微信公众号 java发送消息_微信公众号发送消息模板(java)
这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 1 public staticJSONObject sendModelMessage(ServletContext contex ...
- 微信公众号发送消息 Java
首先申请一个公众号订阅号(个人测试账号)企业可申请服务号 在开发者工具里面申请一个测试账号 url 提供自己服务器地址+通信接口路由 或者在本人博客资源下载个natapp 内网穿透有工具 代理个ht ...
- python微信接口发送消息_Python 微信公众号发送消息
#pip3 install requests importrequestsimportjsondefget_access_token():"""获取微信全局接口的凭证(默 ...
- 利用Java实现微信公众号发送信息提醒通知
项目场景: 项目场景:利用Java实现微信公众号发送信息提醒通知! Java实现方法: 1.首先创建实现公众号消息发送的方法: public ReturnDO<String> sendTe ...
最新文章
- php表单显示mysql数据库_php用表单形式显示数据库信息
- CentOS 6.X安装LAMP最高版本环境
- 媒体应用大数据,先解决三大难题
- asterisk extconfig.conf文件解析
- python数据运算
- MySQL常用函数,你真得看看!
- 转:卷积神经网络_(1)卷积层和池化层学习
- 一张图解释什么是遗传算法_什么是智慧水务决策支持系统?从一张图说起
- MATLAB 2017a 中文破解版安装教程
- 柠檬班软件测试002软件测试的定义
- 新基建促进智能化基础设施管控平台的搭建
- 浅论程序员的工作经历与工作经验
- 什么是商业智能(BI)?
- 读写算杂志读写算杂志社读写算编辑部2022年第16期目录
- Python爬虫实战:《战狼2》豆瓣影评分析
- 新安装的MySQL,在installer界面start Server无法连接成功
- 三维建模初学者学习方法及资料
- 庐陵乡土“订婚”文化简记
- 《电子元器件的可靠性》——2.5节威布尔分布及其概率纸的结构和用法
- word中本页有空白,一回车自动换下一页,解决办法如下