企业微信---第三方应用开发 笔记

本文档详细介绍了如何成为企业微信的第三方供应商,包括服务商注册、应用创建与配置等步骤。重点讲解了开发过程中涉及的各项参数设置及常见问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跳坑记录

要成为第三方供应商,先按开发文档步骤操作。服务商注册应用。也可以申请个企业微信帐号,然后成为服务商(可以做测试,但应用不能上线)

1,注册成功后,配置开发信息:通用开发参数

这里的CorpID是第三方供应商供应商的企业ID,不同于企业微信的CorpID。 ProviderSecret:还未用到,之后再补
系统事件接收URL:保存之前腾讯的企业微信服务器会发送一个Get请求到这个地址,所要要准备一台服务器(也可以用内网穿透工具实现),接受这请求,并做URL验证。
验证URL有效性

Token、EncodingAESKey:这个Token+EncodingAESKey+腾讯微信服务器的Get请求的QueryString,一起来解密Get请求的密文,并返回明文,解析正确并Response.Write(明文),也就验证URL成功了。

这里写图片描述

2, 创建应用,并配置

SuiteID:指令回调URL 解密时使用。数据回调URL解密时使用的是安装第三方应用的授权方的CorpID。如果错误,解密会返回40005
错误的CorpID。

Secret:和SuiteID一起用来获取应用授权Token

这里写图片描述

应用主页:要设计的应用主页 可信域名:还不清楚,之后再补 业务设置URL:安装第三方应用的企业(授权方)管理员进入应用后台配置的URL
数据回调URL:这里也是要先验证,与前面的系统事件接收URL验证方式一样,要处理腾讯企业微信服务器的Get请求并返回解密后的明文,验证后,处理接收消息时是POST请求
指令回调URL:使用时感觉就是接收Event的,指令理解为事件更好理解吧。与前面的系统事件接收URL验证方式一样,要处理腾讯企业微信服务器的Get请求并返回解密后的明文,验证后,处理接收消息时是POST请求

这里写图片描述

应用主页配置

前面未对应用主页说明,自己在学习中也遇到诸多问题,问题列表与解决办法:

  1. 自定义菜单怎么在应用主页上显示?:到目前没解决。如果是企业应用而不是第三方应用的话,只要不设置应用主页,在进入应用时直接回显示自定义的菜单。
  2. 怎么将授权方和我做的第三方应用联系起来? 这个问题搞了两天才大概的了解 :
    1. 先仔细阅读开发文档 链接1网页授权登录 ,链接2网页授权登录第三方
      。要清楚了解链接1中的 OAuth2.0接入流程说明,因为是做的第三方应用,链接2页必须要仔细阅读。
    2. 了解后发现,之前的应用主页设置的有问题,应用主页要写成下面的形式(可能不完全正确),redirect_uri的域名一定要与【可信域名】一致,如果可信域名是二级,这里也要设置为二级域名。
    3. 以上两点了解后,参考 企业微信第三方应用配置
      ,终于能将 企业微信和第三方应用串联起来了。
    4. 第三方应用里,想要创建主菜单、二级菜单、view菜单、click菜单怎么做?:貌似全要由第三方自己实现了。前面说了,非第三方的企业应用只要不设置主页就可以直接使用企业微信后台设置的自定义菜单

第三方应用里的自定义菜单的界面是当有消息时才会看到,不是用来设计应用,而是作为第三方应用的入口:比如点选哪个菜单跳转到第三方应用的那个网址、点选哪个菜单执行拍照、图片选取、录音什么的。但第三方应用要求必须设置应用主页,菜单不就显示不出来了。
这里写图片描述

<think>我们正在参考引用[1]和引用[2]的内容,这些引用提供了企业微信第三方应用开发的Java Demo源码和开发指南。用户的问题是如何开发或集成企业微信第三方应用,特别是询问开发指南和集成方法。 根据引用[1]: - 项目是使用Spring Boot的Java版企业微信第三方应用Demo。 - 需要Redis用于缓存suite_ticket(也可以配置为使用JSON文件存储)。 - 需要MySQL数据库,创建名为`qywx_third_demo`的数据库,并会自动创建两张表(通过JPA Hibernate的ddl-auto设置)。 - 配置回调URL。 根据引用[2]: - 我们需要正确响应微信服务的调用,微信会通过配置的两个URL(回调URL和指令回调URL)进行传参调用。 - 需要使用TOKEN、ENCODING_AES_KEY、CORP_ID(在服务商信息中可以找到)来生成加解密的接口实例,然后解析微信发送的请求。 因此,我们将按照以下步骤来回答: 1. **环境准备**:包括开发环境、数据库、缓存等。 2. **项目配置**:如何配置回调URL、加解密参数等。 3. **核心流程**:处理回调事件,如suite_ticket、授权事件等。 4. **集成方法**:如何将第三方应用集成到企业微信。 下面开始详细说明:</think>### 企业微信第三方应用开发指南与集成方法 参考引用资料[1][2],以下是基于Java的Spring Boot实现方案,完整流程如下: --- #### 一、开发环境准备 1. **基础依赖** ```xml <!-- pom.xml 核心依赖 --> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-cp</artifactId> <version>4.5.0</version> <!-- 企业微信SDK --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <!-- 缓存suite_ticket --> </dependency> ``` 2. **数据库配置** ```yaml # application.yml spring: datasource: url: jdbc:mysql://localhost:3306/qywx_third_demo?useSSL=false redis: host: localhost jpa: hibernate: ddl-auto: create # 首次启动后改为update ``` --- #### 二、企业微信服务商配置 1. **获取关键参数** - 登录[企业微信服务商后台](https://open.work.weixin.qq.com/) - 记录以下参数: - `SUITE_ID`(应用ID) - `SUITE_SECRET`(应用密钥) - `TOKEN`(消息校验Token) - `ENCODING_AES_KEY`(消息加密Key) - `CORP_ID`(服务商企业ID)[^2] 2. **配置回调URL** ```plaintext 回调URL格式:https://your-domain.com/callback 需同时在服务商后台和代码中配置 ``` --- #### 三、核心代码实现 1. **回调验证处理器** ```java @RestController public class CallbackController { @Autowired private WxCpService wxCpService; // 企业微信回调验证 @GetMapping("/callback") public String verify(@RequestParam("msg_signature") String signature, @RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestParam("echostr") String echostr) { return wxCpService.getSuiteService().checkSignature(signature, timestamp, nonce, echostr); } } ``` 2. **消息解密与事件处理** ```java @PostMapping("/callback") public String handleMessage( @RequestParam("msg_signature") String signature, @RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestBody String postData) { // 1. 解密消息 WxCpXmlMessage message = WxCpXmlMessage.fromEncryptedXml( postData, wxCpService.getSuiteConfig(), timestamp, nonce, signature); // 2. 处理事件类型 switch (message.getEvent()) { case "suite_ticket": // 缓存suite_ticket redisTemplate.opsForValue().set("SUITE_TICKET", message.getSuiteTicket()); break; case "create_auth": // 企业授权成功 handleAuthCreate(message.getAuthCorpId()); break; case "change_contact": // 通讯录变更 handleContactChange(message); break; } return "success"; } ``` 3. **获取访问令牌** ```java public String getAccessToken() { // 从Redis获取缓存的suite_ticket String suiteTicket = redisTemplate.opsForValue().get("SUITE_TICKET"); // 调用获取token接口 WxCpSuiteAccessTokenResult result = wxCpService.getSuiteService() .getSuiteAccessToken(SUITE_ID, SUITE_SECRET, suiteTicket); return result.getSuiteAccessToken(); } ``` --- #### 四、第三方应用集成流程 ```mermaid sequenceDiagram participant 企业微信 participant 第三方应用 企业微信->>第三方应用: 推送suite_ticket(每10分钟) 企业微信->>第三方应用: 发送授权成功事件 第三方应用->>企业微信: 获取永久授权码 第三方应用->>企业微信: 获取企业access_token 第三方应用->>企业微信: 调用API(通讯录/消息等) ``` > **关键点**: > 1. `suite_ticket` 需要实时缓存(Redis或数据库)[^1] > 2. 永久授权码存储在企业本地数据库 > 3. 所有API调用需使用企业专属`access_token` --- #### 五、部署与上架流程 1. **本地测试** ```bash # 使用内网穿透工具 ngrok http 8080 --> 生成https回调域名 ``` 2. **正式部署** ```bash # 打包Spring Boot应用 mvn clean package # 服务器运行 java -jar qywx-third-app.jar ``` 3. **应用上架** - 在服务商后台提交审核材料 - 配置授权完成页和安装引导页 - 通过企业微信审核后上架应用市场 ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值