当前位置: 首页 > news >正文

企业微信中设置回调接口url以及验证 spring boot项目实现

官方文档:

接收消息与事件:

加密解密文档:加解密库下载与返回码 - 文档 - 企业微信开发者中心

下载java样例

加解密库下载与返回码 - 文档 - 企业微信开发者中心

将解压开的代码

‘将文件夹:qq\weixin\mp\aes的代码作为工具拷到项目中

pom文件中加入

<!--企业微信中用于加密解码--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency>

编写会回调接口

/*** 企业微信*/
@RestController
@RequestMapping("/api/qyWx")
public class WxQyController extends BaseController {//tokenpublic final static String TOKEN = "企业微信中的";// encodingAESKeypublic final static String ENCODINGAES_KEY = "使用自己生成的企业微信自动生成的有问题测试";//企业IDpublic final static String CORP_ID = "XXXXX";@GetMapping("/callback")public void list(HttpServletRequest request, HttpServletResponse response) throws IOException {// 微信加密签名String msg_signature = request.getParameter("msg_signature");// 时间戳String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");// 随机字符串String echostr = request.getParameter("echostr");System.out.println("request=" + request.getRequestURL());System.out.println("msg_signature=" + msg_signature);System.out.println("timestamp=" + timestamp);System.out.println("nonce=" + nonce);System.out.println("echostr=" + echostr);PrintWriter out = response.getWriter();// 通过检验msg_signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败String result = null;try {WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(TOKEN, ENCODINGAES_KEY, CORP_ID);result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);} catch (AesException e) {e.printStackTrace();}if (result == null) {result = TOKEN;}out.print(result);out.close();out = null;}//自主生成EncodingAESKey@RequestMapping("/getEncodingAESKey")public String getEncodingAESKey()  {/*** 主要解决有时候直接使用企业微信那边生成的EncodingAESKey会报错* “Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value",** 使用 commons-codec 加密 32 位字符(我是用的 UUID 生成 ID 后去除 -)* 生成一个 EncodingAESKey 替换微信生成的 EncodingAESKey* Base64.encodeBase64String(UUID.randomUUID().toString().replaceAll("-","").getBytes());* 第二步得到一个 44 位字符串,需要去除末尾等号得到 43 位EncodingAESKey,再去企业微信配置此EncodingAESKey*/String str = Base64.encodeBase64String(UUID.randomUUID().toString().replaceAll("-","").getBytes());return str;}}

相关文章:

企业微信中设置回调接口url以及验证 spring boot项目实现

官方文档&#xff1a; 接收消息与事件&#xff1a; 加密解密文档&#xff1a;加解密库下载与返回码 - 文档 - 企业微信开发者中心 下载java样例 加解密库下载与返回码 - 文档 - 企业微信开发者中心 将解压开的代码 ‘将文件夹&#xff1a;qq\weixin\mp\aes的代码作为工具拷…...

电脑超频是什么意思?超频的好处和坏处

嗨&#xff0c;亲爱的小伙伴&#xff01;你是否曾经听说过电脑超频&#xff1f;在电脑爱好者的圈子里&#xff0c;这个词似乎非常熟悉&#xff0c;但对很多普通用户来说&#xff0c;它可能还是一个神秘而陌生的存在。 今天&#xff0c;我将带你揭开超频的神秘面纱&#xff0c;…...

在 AMD GPU 上构建深度学习推荐模型

Deep Learning Recommendation Models on AMD GPUs — ROCm Blogs 2024 年 6 月 28 日 发布者 Phillip Dang 在这篇博客中&#xff0c;我们将演示如何在支持 ROCm 的 AMD GPU 上使用 PyTorch 构建一个简单的深度学习推荐模型 (DLRM)。 简介 DLRM 位于推荐系统和深度学习的交汇…...

阿里云IIS虚拟主机部署ssl证书

宝塔配置SSL证书用起来是很方便的&#xff0c;只需要在站点里就可以配置好&#xff0c;但是云虚拟主机在管理的时候是没有这个权限的&#xff0c;只提供了简单的域名管理等信息。 此处记录下阿里云&#xff08;原万网&#xff09;的IIS虚拟主机如何配置部署SSL证书。 进入虚拟…...

Python运算符列表

运算符 描述 xy&#xff0c;x—y 加、减,“"号可重载为连接符 x*y,x*&#xff0a;y&#xff0c;x/y,x&#xff05;y 相乘、求平方、相除、求余&#xff0c;“*”号可重载为重复&#xff0c;“&#xff05;"号可重载为格式化 <&#xff0c;<&#xff0c;&…...

MFC图形函数学习09——画多边形函数

这里所说的多边形是指在同一平面中由多条边构成的封闭图形&#xff0c;强调封闭二字&#xff0c;否则无法进行颜色填充&#xff0c;多边形包括凸多边形和凹多边形。 一、绘制多边形函数 原型&#xff1a;BOOL Polygon(LPPOINT lpPoints,int nCount); 参数&#x…...

GaussianDreamer: Fast Generation from Text to 3D Gaussians——点云论文阅读(11)

此内容是论文总结&#xff0c;重点看思路&#xff01;&#xff01; 文章概述 本文提出了一种快速从文本生成3D资产的新方法&#xff0c;通过结合3D高斯点表示、3D扩散模型和2D扩散模型的优势&#xff0c;实现了高效生成。该方法利用3D扩散模型生成初始几何&#xff0c;通过噪声…...

k8s篇之控制器类型以及各自的适用场景

1. k8s中控制器介绍 在 Kubernetes 中,控制器(Controller)是集群中用于管理资源的关键组件。 它们的核心作用是确保集群中的资源状态符合用户的期望,并在需要时自动进行调整。 Kubernetes 提供了多种不同类型的控制器,每种控制器都有其独特的功能和应用场景。 2. 常见的…...

Node.js 笔记(一):express路由

代码 建立app.js文件&#xff0c;代码如下&#xff1a; const express require(express) const app express() const port 3002app.get(/,(req,res)>{res.send(hello world!)})app.listen(port,()>{console.log(sever is running on http://localhost:${port}) })问…...

bash笔记

0 $0 是脚本的名称&#xff0c;$# 是传入的参数数量&#xff0c;$1 是第一个参数&#xff0c;$BOOK_ID 是变量BOOK_ID的内容 1 -echo用于在命令窗口输出信息 -$()&#xff1a;是命令替换的语法。$(...) 会执行括号内的命令&#xff0c;并将其输出捕获为一个字符串&#xff…...

mongoDB副本集搭建-docker

MongoDB副本集搭建-docker 注&#xff1a;在进行副本集搭建前&#xff0c;请先将服务部署docker环境并正常运行。 #通过--platform指定下载镜像的系统架构 在这我用的是mongo:4.0.28版本 arm64系统架构的mongo镜像 docker pull --platformlinux/arm64 mongo:4.0.2#查看镜像是…...

Python软体中使用 Flask 或 FastAPI 搭建简单 RESTful API 服务并实现限流功能

Python软体中使用 Flask 或 FastAPI 搭建简单 RESTful API 服务并实现限流功能 引言 在现代 web 开发中,RESTful API 已成为应用程序之间进行通信的标准方式。Python 提供了多种框架来帮助开发者快速搭建 RESTful API 服务,其中 Flask 和 FastAPI 是最受欢迎的两个框架。本…...

CentOS操作系统下安装Nacos

CentOS下安装Nacos 前言 这在Centos下安装配置Nacos 下载Linux版Nacos 首先到Nacos的 Github页面&#xff0c;找到所需要安装的版本 也可以右键复制到链接&#xff0c;然后通过wget命令进行下载 wget https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-ser…...

C++设计模式之适配器模式与桥接模式,装饰器模式及代理模式相似点与不同点

适配器模式、桥接模式、装饰器模式和代理模式在形式上有一些相似之处&#xff0c;因为它们都涉及到对类的功能或接口的修改、增强或转换。然而&#xff0c;它们在动机和目的上有着显著的不同。以下是对这些模式相似点和不同点的清晰说明&#xff1a; 相似点&#xff1a; 结构…...

ThreadLocal 和 Caffeine 缓存是两种不同的缓存机制,它们在用途和实现上有明显的区别

ThreadLocal 和 Caffeine 缓存是两种不同的缓存机制&#xff0c;它们在用途和实现上有明显的区别&#xff1a; ThreadLocal 缓存&#xff1a; ThreadLocal 提供了线程局部变量的功能&#xff0c;每个线程可以访问自己的局部变量&#xff0c;而不会与其他线程冲突。ThreadLocal …...

Django实现智能问答助手-进一步完善

扩展 增加问答数据库&#xff0c;通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑&#xff0c;比如使用自然语言处理&#xff08;NLP&#xff09;库。使用前端框架&#xff08;如 Bootstrap&#xff09;增强用户界面 1.注册模型到 Django Admin&#xff08;admin.py…...

【Linux】开发工具make/Makefile、进度条小程序

Linux 1.make/Makefile1.什么是make和Makefile&#xff1f;2.stat命令3.Makefile单个文件的写法4.Makefile多个文件的写法 2.进度条1.回车\r、换行\n2.缓冲区3.进度条1.倒计时程序2.进度条程序 1.make/Makefile 1.什么是make和Makefile&#xff1f; 一个工程中的源文件不计其…...

深度学习三大框架对比与实战:PyTorch、TensorFlow 和 Keras 全面解析

深度学习框架的对比与实践 引言 在当今深度学习领域&#xff0c;PyTorch、TensorFlow 和 Keras 是三大主流框架。它们各具特色&#xff0c;分别满足从研究到工业部署的多种需求。本文将通过清晰的对比和代码实例&#xff0c;帮助你了解这些框架的核心特点以及实际应用。 1. 深…...

Leetcode206.反转链表(HOT100)

链接&#xff1a; 我的代码&#xff1a; class Solution { public:ListNode* reverseList(ListNode* head) {ListNode* p head;ListNode*res new ListNode(-1);while(p){ListNode*k res->next;res->next p;p p->next;res->next->next k;}return res->…...

怎么做好白盒测试?

白盒测试 一、什么是白盒测试&#xff1f;二、白盒测试特点三、白盒测试的设计方法1、逻辑覆盖法1、测试设计方法—语句覆盖a、用例设计如下&#xff1a;b、语句覆盖的局限性 2、测试设计方法—判定覆盖a、测试用例如下&#xff1a;b、判定覆盖的局限性 3、测试设计方法—条件覆…...

从STM32到华大HC32F460:手把手移植USB HOST MSC + FatFs R0.13c(含源码对比与避坑指南)

从STM32到华大HC32F460&#xff1a;USB HOST MSC与FatFs移植实战全解析 1. 迁移背景与核心挑战 对于长期使用STM32的嵌入式开发者而言&#xff0c;切换到华大半导体HC32F460系列MCU既是一次技术升级&#xff0c;也面临实际移植的挑战。USB HOST MSC&#xff08;Mass Storage Cl…...

QAbstractTableModel进阶实战:构建可编辑数据表格的完整指南

1. 从零理解QAbstractTableModel的核心机制 第一次接触Qt模型视图框架时&#xff0c;很多人会被QAbstractTableModel这个抽象类吓到。但当我真正用它完成第一个可编辑表格后&#xff0c;发现它的设计其实非常优雅。想象你正在开发一个学生管理系统&#xff0c;需要展示包含姓名…...

鸿蒙 App 的 Task + State 双核心架构

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

从Distributed到Lumped:三种SPEF寄生模型,你的芯片时序分析该选哪一个?

芯片时序分析中的SPEF模型选择&#xff1a;精度与效率的终极权衡 在28nm以下工艺节点&#xff0c;互连线寄生效应导致的时序偏差可能占到整体时钟周期的30%以上。面对动辄数千万个net的现代SoC设计&#xff0c;工程师们不得不在模型精度与运行时间之间做出艰难抉择。就像一位资…...

计算机毕业设计:Python智慧医疗数据可视化与疾病预测系统 Flask框架 随机森林 机器学习 疾病数据 智慧医疗 深度学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

Sticky:重新定义Linux桌面数字便利贴的智能助手

Sticky&#xff1a;重新定义Linux桌面数字便利贴的智能助手 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否曾在紧张的编程调试中&#xff0c;突然想到一个关键算法优化方案&#xff0…...

从“抄答案”到“会解题”:我是如何利用头歌实训平台,真正掌握Python数据分析的?

从“抄答案”到“会解题”&#xff1a;我的Python数据分析思维进阶之路 记得第一次打开头歌实训平台的Python数据分析题目时&#xff0c;我像大多数初学者一样&#xff0c;迫不及待地寻找"正确答案"。复制、粘贴、运行——看到绿色通过提示的瞬间&#xff0c;以为自己…...

基于Python的Discord机器人开发:从自动化管理到插件化架构实战

1. 项目概述&#xff1a;一个为Discord社区量身打造的智能助手 如果你在运营一个Discord服务器&#xff0c;无论是游戏公会、技术社区还是兴趣小组&#xff0c;肯定遇到过这样的场景&#xff1a;新成员加入后&#xff0c;需要手动发送欢迎消息、引导他们阅读规则&#xff1b;成…...

反向传播不神秘:手把手调试一个计算图,看梯度是怎么‘流’回来的

反向传播不神秘&#xff1a;手把手调试一个计算图&#xff0c;看梯度是怎么"流"回来的 在深度学习的实践中&#xff0c;我们常常会调用loss.backward()这样的魔法函数&#xff0c;然后梯度就自动计算好了。但这个过程究竟发生了什么&#xff1f;为什么调整参数时梯度…...

二分查找算法:中间值左偏还是右偏?

还记得吗&#xff1f;我们在前面探讨了区间的选择和主循环的停止判断条件&#xff0c;但是没有提到 中间索引位置的计算公式 middle(st, ed)。当区间的长度是奇数时&#xff0c;中间索引只有一个位置 mid (st ed) / 2&#xff0c;而当区间长度是偶数时&#xff0c;中间索引就…...