1. 微信申请测试公众号
    申请测试号
  2. 微信公众平台接口调试工具
    接口调试工具
  3. 如何获取用户的openid
    获取用户的openid
    4.通过微信公众号后台聊天获取用户的openid
  4. 测试平台获取appID,appsecret后,用自己微信关注测试公众号,微信号就是你的openid

消息模板
{{first.DATA}}
项目名称:{{keyword1.DATA}}
项目金额:{{keyword2.DATA}}
开标时间:{{keyword3.DATA}}
{{remark.DATA}}
  1. 消息实体类
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;
}
  1. 发送消息工具类
/** 获取微信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);}}}
  1. 调用实例
                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);
  1. 备注

因为微信获取accessToken每天有限制2000次,所以放到缓存中。

微信公众号发送消息通知相关推荐

  1. python训练营微信广告发送机_python实现给微信公众号发送消息的方法

    本文实例讲述了python实现给微信公众号发送消息的方法.分享给大家供大家参考,具体如下: 现在通过发微信公众号信息来做消息通知和告警已经很普遍了.最常见的就是运维通过zabbix调用shell脚本给 ...

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

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

  3. 实现微信公众号发送消息给指定用户

    一.前言 在实际项目开发中,需要实现消息中心向关注微信公众号的指定用户发送消息通知,在翻阅了网上很多资料及微信官方开发文档后,最终顺利完成功能开发,但是其中走过的路艰辛且曲折,因此特将开发过程中踩过的 ...

  4. Java微信公众号发送消息-保姆级教程附源码

    目录 1. 概念说明: 2. 开发准备: 3. 测试demo(更改配置信息即可使用) 3.1. 服务器配置 3.1.1.配置填写说明 3.1.2.校验服务器有效性: 3.1.3.URL后端接口代码和校 ...

  5. 小程序发送订阅消息,微信公众号发送消息模板

    首先讲两个注意事项 1.小程序和微信公众号的用户openid是不同的. 2.小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发). 关于小程序和公众号AppID和AppS ...

  6. 微信公众号 java发送消息_微信公众号发送消息模板(java)

    这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 1 public staticJSONObject sendModelMessage(ServletContext contex ...

  7. 微信公众号发送消息 Java

    首先申请一个公众号订阅号(个人测试账号)企业可申请服务号 在开发者工具里面申请一个测试账号 url 提供自己服务器地址+通信接口路由  或者在本人博客资源下载个natapp 内网穿透有工具 代理个ht ...

  8. python微信接口发送消息_Python 微信公众号发送消息

    #pip3 install requests importrequestsimportjsondefget_access_token():"""获取微信全局接口的凭证(默 ...

  9. 利用Java实现微信公众号发送信息提醒通知

    项目场景: 项目场景:利用Java实现微信公众号发送信息提醒通知! Java实现方法: 1.首先创建实现公众号消息发送的方法: public ReturnDO<String> sendTe ...

最新文章

  1. php表单显示mysql数据库_php用表单形式显示数据库信息
  2. CentOS 6.X安装LAMP最高版本环境
  3. 媒体应用大数据,先解决三大难题
  4. asterisk extconfig.conf文件解析
  5. python数据运算
  6. MySQL常用函数,你真得看看!
  7. 转:卷积神经网络_(1)卷积层和池化层学习
  8. 一张图解释什么是遗传算法_什么是智慧水务决策支持系统?从一张图说起
  9. MATLAB 2017a 中文破解版安装教程
  10. 柠檬班软件测试002软件测试的定义
  11. 新基建促进智能化基础设施管控平台的搭建
  12. 浅论程序员的工作经历与工作经验
  13. 什么是商业智能(BI)?
  14. 读写算杂志读写算杂志社读写算编辑部2022年第16期目录
  15. Python爬虫实战:《战狼2》豆瓣影评分析
  16. 新安装的MySQL,在installer界面start Server无法连接成功
  17. 三维建模初学者学习方法及资料
  18. 庐陵乡土“订婚”文化简记
  19. 《电子元器件的可靠性》——2.5节威布尔分布及其概率纸的结构和用法
  20. word中本页有空白,一回车自动换下一页,解决办法如下

热门文章

  1. 求数组中的最大差值或最小差值
  2. 黄光裕主宰不了国美的未来
  3. 通过节流阀 前端防止重复提交事件
  4. 京东杨业飞:京东云原生大规模实践之路
  5. 【毕业季】Three.js动态相册
  6. VVC学习之五:VTM帧内预测工具详解
  7. XBox 360 Kinect 体感游戏时代,宅男再也虐不了电脑了
  8. vs2010 玩转金山界面库 (2) 应用基础
  9. HTML基础学习笔记(1)
  10. js中创建对象的5种方法