微信公众号发送消息 Java
首先申请一个公众号订阅号(个人测试账号)企业可申请服务号
在开发者工具里面申请一个测试账号
url 提供自己服务器地址+通信接口路由 或者在本人博客资源下载个natapp 内网穿透有工具 代理个http地址 我用的内网穿透
token 随便填一个主要用来跟微信服务器测试通信正常
//这个token要跟你填的一致
private static final String TOKEN = "1341321a2s1d23a1s454"
//下面方法就是上面url 里面的IP加路由
@GetMapping("check/token") public String validate(String signature,String timestamp,String nonce,String echostr){// 1. 将token、timestamp、nonce三个参数进行字典序排序String[] arr = {timestamp, nonce, TOKEN};Arrays.sort(arr);// 2. 将三个参数字符串拼接成一个字符串进行sha1加密StringBuilder sb = new StringBuilder();for (String temp : arr) {sb.append(temp);}// 这里利用了hutool的加密工具类String sha1 = SecureUtil.sha1(sb.toString());// 3. 加密后的字符串与signature对比,如果相同则该请求来源于微信,原样返回echostrif (sha1.equals(signature)){return echostr;}// 接入失败return null; }
连接成功后配置订阅用户及模板
扫描二维码会得到用户的openId 一会发送消息用到 模板分为固定内容跟模板内容 1为固定内容 23为动态参数内容
接下来代码接入
pom引入
<!--微信模版消息推送三方sdk--> <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.3.0</version> </dependency>
//这个sdk比较方便方法 接口路由都封装更好的 用起来更方便
下面代码环节
1实体
授权实体 就是测试号的账号 跟key
@Data public class WxAuthorization {private String appId;private String appSecret;}
2参数实体 就是发送需要的参数
@Data public class WxMsgData {// 接收人openIdprivate String receiver;// 消息模板codeprivate String templateCode;// 跳转urlprivate String url;// 模板参数private Map<String, Object> param;}
调用
private void sendMsg(WxAuthorization wxAuthorization, WxMsgData wxMsgData) {WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();wxStorage.setAppId(wxAuthorization.getAppId());wxStorage.setSecret(wxAuthorization.getAppSecret());WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxStorage);WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(wxMsgData.getReceiver()).templateId(wxMsgData.getTemplateCode()).url(wxMsgData.getUrl()).build();if (wxMsgData.getParam()!=null) {for (Map.Entry<String, Object> entry : wxMsgData.getParam().entrySet()) {templateMessage.addData(new WxMpTemplateData(entry.getKey(), (String) entry.getValue(), "#173177"));}}try {String s = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);} catch (WxErrorException e) {e.printStackTrace();} }
测试调用
@PostMapping("sendMessage") public String handleMessage(){WxAuthorization wxAuthorization = new WxAuthorization();wxAuthorization.setAppId("wxce11edb1b0c5e158");wxAuthorization.setAppSecret("62195d67ae1fa8b0b15aaaab47ce507c");WxMsgData wxMsgData = new WxMsgData();wxMsgData.setReceiver("oOM-e52ersdi7a4wZTOQHUQOwGuw");wxMsgData.setTemplateCode("AYZc280-hh7QeO5eM8Usl7SlD5wzQ_I8tQq1e9HlmhQ");wxMsgData.setUrl("https://www.baidu.com/");Map<String,Object> map = new HashMap<>();map.put("username","张三");map.put("projectName","世纪广场");map.put("deviceSN","10086");wxMsgData.setParam(map);sendMsg(wxAuthorization,wxMsgData);return "success"; }
这个url ip 加端口必须是代理过的 或者服务器的 本地的不行
效果示例
微信公众号发送消息 Java相关推荐
- 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 ...
- 微信公众号发送消息通知
微信申请测试公众号 申请测试号 微信公众平台接口调试工具 接口调试工具 如何获取用户的openid 获取用户的openid 4.通过微信公众号后台聊天获取用户的openid 测试平台获取appID,a ...
- 微信公众号 java发送消息_微信公众号发送消息模板(java)
这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 1 public staticJSONObject sendModelMessage(ServletContext contex ...
- python微信接口发送消息_Python 微信公众号发送消息
#pip3 install requests importrequestsimportjsondefget_access_token():"""获取微信全局接口的凭证(默 ...
- Java后端发送微信公众号模版消息自创建公用类
微信公众号模版消息 肯定很多人都被微信的开放平台折磨,我也一样无一例外,也是根据公司的业务踩的坑,后来花时间研究了几个小时算是搞明白了. 下边不多说直接上详细说明和demo 首先打开微信开发平台 微信 ...
最新文章
- 使用logrotate管理nginx日志文件
- Altium designer快捷键汇总
- Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】
- addroid 自定义布局
- java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合
- iis属于中间件吗_今天设计一套高可用高并发、海量存储可伸缩的消息中间件生产架构...
- [处理数据的心得][1]--相关矩阵的可视化
- docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
- win7 可以装matlab 吗,win7系统怎么安装matlab软件(图文教程)
- C++计算圆柱体的表面积
- Whai_springmvc笔记
- 【JIRA 学习】JIRA 配置缺陷的reopen 次数
- 用python画一个动态樱花
- 【K8S系列】深入解析 k8s:入门指南(一)
- html文字段落缩进,CSS text-indent段落首行文字缩进分享
- rxswift_RxSwift
- Handling 2 trigger(s) that missed their scheduled fire-time,JobPersistenceException: Couldn't store
- Unity3D学习笔记——RigidBody(刚体)
- 算法导论读书笔记(19)
- Java程序员面试笔记pdf,JqGrid完整例子