SpringBoot助力!轻松实现微信模版消息推送

本篇文章的主题是 如何通过springboot来实现微信的模版消息推送

实现效果:
在这里插入图片描述

在当今的信息化时代,微信作为国人最为常用的通讯工具之一,已经不仅仅是一个简单的社交应用,更是连接人与服务、人与信息的桥梁。企业微信模板消息作为一种高效、便捷的信息传递方式,被广泛应用于各类业务场景中,如订单通知、会议提醒、活动推送等。

通过本教程的学习,您将掌握如何在Spring Boot项目中集成微信SDK,如何编写代码发送微信模板消息,并了解整个推送的过程。

简要说明:
由于发送模版消息需要微信的服务号,申请服务号的话需要营业执照,个人是没有办法申请的,但是微信为了给开发者们提供测试特意开放了公众平台测试账号号,大家可以申请测试号来进行模版推送的开发和测试

开发步骤:

  1. 访问微信公众平台测试账号页面
  2. 获取appID和appsecret
  3. 扫码二维码添加测试号
  4. 添加模版消息
  5. 集成微信SDK
  6. 调用相关API

1、微信公众平台测试号管理

1.1 访问微信公众平台测试账号页面

大家首先访问微信公众平台地址:https://mp.weixin.qq.com/
如果还没有注册账号的可以申请一个个人订阅号,这个教程大家网上自行查阅,很简单~

登录成功之后选择 开发者工具 --> 公众平台测试账号

在这里插入图片描述

测试号管理页面如下:
在这里插入图片描述

1.2 获取appID和appsecret

获取你的测试号信息
在这里插入图片描述

1.3 扫码二维码添加测试号

使用你的微信扫描这个测试公众号的二维码并关注
然后会得到你的**微信号(openId)**这个后面会用到
在这里插入图片描述

1.4 添加模版消息

点击新增测试模版
在这里插入图片描述
添加模板信息
一定要按照注意事项填写 参数需以{{开头,以.DATA}}结尾
在这里插入图片描述

我这边创建了两个模版,这个模版id后面也会用到
在这里插入图片描述

2、集成微信SDK

2.1 引入微信工具包
		<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.0.0</version></dependency>
2.2 添加配置文件

appId、appSecret和orderTemplateId就是上面微信公众平台测试号管理中我们获取到的几个参数,现在把这三个参数配置到我们的项目中。
callBackUrl暂时先不用管
在这里插入图片描述

创建配置类

@ConfigurationProperties(prefix = "wechat.public")
@Component
@Data
@RefreshScope
public class WeChatProperties {private String appId;private String appSecret;private String callBackUrl;private String orderTemplateId;
}

3、API调用

3.1 发送消息模版的实现
package com.mdx.user.manager;import com.mdx.user.config.WeChatProperties;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;/*** @author : jiagang* @date : Created in 2022/7/26 10:42*/
@Component
@Slf4j
public class WxMessagesManager {@Autowiredprivate WeChatProperties weChatProperties;public void sendOrderMsg(String openId, String orderId, String serviceName){String templateId = weChatProperties.getOrderTemplateId();// 订单时间SimpleDateFormat sdf = new SimpleDateFormat();sdf.applyPattern("yyyy-MM-dd HH:mm");Date date = new Date();String timeNow = sdf.format(date);WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();wxStorage.setAppId(weChatProperties.getAppId());wxStorage.setSecret(weChatProperties.getAppSecret());WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxStorage);// 此处的 key/value 需和模板消息对应List<WxMpTemplateData> wxMpTemplateDataList = Arrays.asList(new WxMpTemplateData("first", "您有一个新的订货单", "#FF0000"),new WxMpTemplateData("keyword1", orderId),new WxMpTemplateData("keyword2", serviceName),new WxMpTemplateData("keyword3", timeNow),new WxMpTemplateData("remark", "请登录系统查看订单详情并及时配货"));WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(openId) // openId为1.3步骤中得到的微信号.templateId(templateId).data(wxMpTemplateDataList).url("https://blog.csdn.net/qq_38374397?type=blog")  // 跳转详情地址.build();try {wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);log.info("消息模版发送成功~");} catch (Exception e) {log.error("推送失败:" + e.getMessage());}}
}
3.2 测试类调用

openId为1.3步骤中得到的微信号,其余参数可自定义
在这里插入图片描述
在这里插入图片描述

3.3 效果展示

移动端:
在这里插入图片描述
点击详情:
在这里插入图片描述

PC端:
在这里插入图片描述
最后送大家一句话白驹过隙,沧海桑田

文末送福利啦~

1、Java(SE、JVM)、算法数据结构、数据库(Mysql、redis)、Maven、Netty、RocketMq、Zookeeper、多线程、IO、SSM、Git、Linux、Docker、Web前端相关学习笔记
2、2023最新BATJ大厂面试题集
3、项目源码
4、学习小组
领取方式:关注下方公主号,回复:【笔记】、【面试】获取相关福利。

文章持续更新,可以关注下方公众号或者微信搜一搜「 迷迭香编程 」获取项目源码、干货笔记、面试题集,第一时间阅读,获取更完整的链路资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析&#xff1a;总体流程&#xff1a;1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…

Arduino的PWM应用:舵机控制

目录 概述 1 认识舵机 1.1 舵机分类 1.2 舵机结构 1.3 舵机工作原理 1.4 舵机控制原理 1.5 舵机工作参数介绍 1.5.1 基本参数 1.5.2 舵机扭矩 2 系统硬件 2.1 硬件模块介绍 2.1.1 SG90 9G 360舵机 2.1.2 SG90 9G 180舵机 2.1.3 Arduino UNO 主板 2.2 整体结构…

2024免费版EasyRecovery软件有哪些功能限制?

EasyRecovery软件的主要功能包括&#xff1a; 数据恢复&#xff1a;这是EasyRecovery软件的核心功能。它可以恢复因各种原因丢失或删除的数据&#xff0c;无论是由于磁盘格式化、文件删除还是其他因素。EasyRecovery使用高级的数据恢复算法&#xff0c;能够快速扫描整个磁盘&a…

spring boot自动装配及自动装配条件判断

第一步需要在pom.xml文件指定需要导入的坐标 要是没有自动提示需要检查maven有没有 实现代码 /*springboot第三方自动配置实现方法 * 什么是自动配置 自动配置就是springboot启动自动加载的类不需要在手动的控制反转自动的加入bean中 * * *//*第一种方案包扫描 不推荐因为繁琐…

普中51单片机学习(十)

动态数码管 数码管显示原理 动态显示的特点是将所有数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff0c;利用发光管的余辉和人眼视觉暂留作用&#xf…

Leetcode 115 不同的子序列

题意理解&#xff1a; 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 即此题可以理解为&#xff1a;从s中删除元素去构造t,有多少种方法 或者也可以理解为&#xff1a;s中按顺序取t,有多少个 则一定有s和t…

unity学习(15)——服务器组装(1)

1.新建好的c#项目如下&#xff1a; 文件夹中内容如下&#xff1a; 此时已经可以通过vs2022打开.sln文件&#xff0c;就可以打开项目了。 2.我们把逆向后&#xff08;主程序&#xff09;的内容的代码粘贴过去。有些逆向功底&#xff0c;很快可以定位到&#xff0c;服务器的入口…

【leetcode热题】从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出&#xff1a;[3…

GaiaDB-X 获选北京国家金融科技认证中心「数据领域首批专项示范与先行单位」

2023 年 12 月 21 日至 22 日&#xff0c;「2023北京国际金融安全论坛暨金融科技标准认证生态大会」在北京金融安全产业园举办。百度智能云分布式数据库 GaiaDB-X 产品荣登「数据领域首批专项示范与先行单位」名单&#xff0c;并获得了由北京国家金融科技认证中心颁发的「数据产…

软考29-上午题-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后&#xff0c;次序不变&#xff0c;则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

【C++ QT项目2】——高仿安信可串口调试助手

【C QT项目2】——高仿安信可串口调试助手 1. 项目概述2. 项目UI设计3. 串口通信核心代码开发3.1 QSerialPort介绍及示例3.2 扫描系统串口3.3 数据的收发3.4 定时发送&#xff08;QT定时器&#xff09;3.5 HEX显示与发送 4. 串口调试助手功能的优化4.1 串口的实时扫描4.2 获取系…

PCB的介质损耗角是什么“∠”?

1、什么叫介质 介质是指在某种特定条件下能够传递力、能量或信息的物质或者空间。在物理学和工程学中&#xff0c;介质通常是指固体、液体或气体&#xff0c;它们能够传递机械波、电磁波等。例如&#xff0c;在声学中&#xff0c;空气、水和固体都可以作为声波的传播介质&…

宠物空气净化器哪个品牌高质量?宠物空气净化器适合养猫家庭吗?

在养宠物的家庭中&#xff0c;除了必备的猫粮、猫砂和罐头等日常用品&#xff0c;宠物空气净化器也是不可或缺的。这种设备可以在我们无法开窗通风的情况下&#xff0c;有效净化室内空气&#xff0c;同时降低因动物皮屑引起的过敏反应。然而&#xff0c;在市场上充斥着各种功能…

STM32--EXTI外部中断

一、中断概念 二、EXTI简介 相同的Pin不能同时触发中断&#xff1a;比如PA0和PB0不能同时使用&#xff1b; 三、STM32中断 中断向量表&#xff1a; 程序中中断函数的地址是由编译器来分配的&#xff0c;是不固定的。但中断的跳转&#xff0c;由于硬件的限制&#xff0c;只能跳…

HTML+CSS+JS:焦点轮播

效果演示 实现了一个简单的图片展示和交互效果&#xff0c;用户可以点击不同的图片进行查看&#xff0c;并且会有视觉反馈。 Code <div class"container"><div class"bigbox"></div><div class"list"><ul><li…

C#,二叉搜索树(Binary Search Tree)的迭代方法与源代码

1 二叉搜索树 二叉搜索树&#xff08;BST&#xff0c;Binary Search Tree&#xff09;又称二叉查找树或二叉排序树。 一棵二叉搜索树是以二叉树来组织的&#xff0c;可以使用一个链表数据结构来表示&#xff0c;其中每一个结点就是一个对象。 一般地&#xff0c;除了key和位置…

Matlab论文插图绘制模板第136期—极坐标气泡图

在之前的文章中&#xff0c;分享了Matlab笛卡尔坐标系的气泡图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下极坐标气泡图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋…

微前端(qiankun)vue3+vite

目录 一、什么是微前端 二、主应用接入 qiankun 1.按照qiankun插件 2.注册微应用引用 3.挂载容器 三、微应用接入 qiankun 1.vite.config.ts 2.main.ts ps&#xff1a;手动加载微应用方式 ps&#xff1a;为什么不用 iframe 一、什么是微前端 微前端是一种多个团队通过独…

四、详解Redis集群

一、RDB和AOF持久化 redis的数据一般保存在内存&#xff0c;那么当突然宕机&#xff0c;岂不是数据就丢失了&#xff0c;因此redis实现了将数据持久化的方式&#xff1a;RDB和AOF两种持久化方式。 1.1 RDB持久化&#xff08;bgsave&#xff09; redis支持快照的方式进行数据…

【激光SLAM】激光的前端配准算法

文章目录 ICP匹配方法&#xff08;Point to Point&#xff09;PL-ICP匹配方法&#xff08;Point to Line&#xff09;基于优化的匹配方法&#xff08;Optimization-based Method&#xff09;优化方法的求解地图双线性插值拉格朗日插值法——一维线性插值 相关方法&#xff08;C…