# Wx-Work-Message **Repository Path**: sijk12345/wx-work-message ## Basic Information - **Project Name**: Wx-Work-Message - **Description**: 企微智能表自动化数量有限,本项目采用自建应用实时监听回到智能表变更通知,用户可以根据回到的消息内容自己DIY后续逻辑 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-12-22 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业微信消息回调服务 ## 项目简介 本项目是一个基于 Spring Boot 的企业微信消息回调处理服务,用于接收和处理企业微信的回调消息,包括对话消息、智能表记录变更等事件。 ## 技术栈 - **Java**: 21 - **Spring Boot**: 3.2.0 - **构建工具**: Maven - **主要依赖**: - Spring Boot Starter Web - Web 服务支持 - Fastjson2 2.0.43 - JSON 处理 - OkHttp 4.9.1 - HTTP 客户端 - Commons Codec 1.9 - 编解码工具 - Lombok - 简化 Java 代码 ## 项目结构 ``` wx-work-message/ ├── src/main/ │ ├── java/wx/work/ │ │ ├── controller/ │ │ │ └── WxWorkMessageController.java # 消息回调控制器 │ │ ├── dto/wx/ │ │ │ ├── WxChatMessage.java # 对话消息实体 │ │ │ ├── WxInitializeMessage.java # 初始化消息实体 │ │ │ └── WxTableRecordMessage.java # 智能表记录变更消息实体 │ │ ├── service/ │ │ │ ├── WxWorkMessageService.java # 消息服务接口 │ │ │ └── impl/ │ │ │ └── WxWorkMessageServiceImpl.java # 消息服务实现 │ │ ├── util/ │ │ │ ├── wx/ # 企业微信工具类 │ │ │ │ ├── AesException.java # AES 异常 │ │ │ │ ├── ByteGroup.java # 字节组处理 │ │ │ │ ├── JsonParse.java # JSON 解析 │ │ │ │ ├── PKCS7Encoder.java # PKCS7 编码 │ │ │ │ ├── SHA1.java # SHA1 加密 │ │ │ │ ├── WXBizJsonMsgCrypt.java # 企微消息加解密 │ │ │ │ └── WxMessageParseUtil.java # 消息解析工具 │ │ │ ├── OkHttpUtil.java # HTTP 工具 │ │ │ └── R.java # 统一响应结果 │ │ └── ServerMain.java # 应用启动类 │ └── resources/ │ ├── application.yml # 应用配置 │ └── logback.xml # 日志配置 └── pom.xml # Maven 配置 ``` ## 主要功能 ### 1. 回调 URL 验证 - **接口**: `GET /wxwork/message` - **功能**: 验证企业微信回调 URL 的有效性 - **参数**: - `msg_signature`: 消息签名 - `timestamp`: 时间戳 - `nonce`: 随机数 - `echostr`: 加密的随机字符串 ### 2. 接收回调消息 - **接口**: `POST /wxwork/message` - **功能**: 接收并处理企业微信的回调消息 - **支持的消息类型**: - 对话消息(文本、图片、语音、视频等) - 智能表记录变更消息 ## 配置说明 ### 1. 修改企业微信配置 在 `WxWorkMessageController.java` 中配置您的企业微信信息: ```java private String receiveid = "你的企业id"; // 企业微信 CorpID private String token = "你的回调token"; // 回调 Token private String encodingAesKey = "你的回调key"; // 回调 EncodingAESKey ``` ### 2. 应用配置 在 `application.yml` 中可以修改服务端口(默认 9002): ```yaml server: port: 9002 ``` ## 快速开始 ### 1. 环境要求 - JDK 21+ - Maven 3.6+ ### 2. 克隆项目 ```bash git clone cd wx-work-message ``` ### 3. 配置企业微信信息 修改 `WxWorkMessageController.java` 中的企业微信配置信息。 ### 4. 编译运行 ```bash # 使用 Maven 编译 mvn clean package # 运行应用 java -jar target/wx-work-message-1.0-SNAPSHOT.jar # 或直接运行主类 mvn spring-boot:run ``` ### 5. 验证服务 应用启动后,访问 `http://localhost:9002`,控制台输出 "启动成功" 表示服务已正常运行。 ## 企业微信回调配置 1. 登录企业微信管理后台 2. 进入应用管理 -> 选择对应应用 -> 接收消息设置 3. 配置回调 URL: `http://your-domain:9002/wxwork/message` 4. 填写 Token 和 EncodingAESKey(需与代码中配置一致) 5. 保存配置并验证 URL ## 消息加解密流程 1. 企业微信发送加密消息到回调 URL 2. 服务接收 XML 格式的加密消息 3. 使用 `WXBizJsonMsgCrypt` 进行消息解密 4. 解析为对应的消息对象(WxChatMessage 或 WxTableRecordMessage) 5. 处理业务逻辑 6. 返回响应 ## 注意事项 1. 确保服务器能被企业微信服务器访问(需公网 IP 或内网穿透) 2. Token 和 EncodingAESKey 必须与企业微信后台配置一致 3. 回调 URL 需要在 5 秒内响应,否则会超时 4. 建议使用 HTTPS 协议提高安全性 ## 开发说明 ### 扩展消息处理 在 `WxWorkMessageServiceImpl` 中实现具体的业务逻辑: ```java @Override public R getTableChange(String msgSignature, String timestamp, String nonce, HttpServletRequest request) { // 1. 读取请求体 // 2. 解析初始化消息 // 3. 解密消息内容 // 4. 处理业务逻辑 // 5. 返回响应 } ``` ## 许可证 本项目采用开源许可证,具体请查看 LICENSE 文件。 ## 联系方式 如有问题或建议,欢迎提交 Issue 或 Pull Request。