微信第三方平台开发(二)---内网穿透

本文介绍了一种通过内网穿透技术实现在本地开发第三方平台的方法,避免了频繁部署服务器的麻烦。推荐购买稳定服务并使用固定二级域名进行穿透。

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

开发第一步:
创建第三方平台,但是有个前提就是需要存放服务的服务器域名。
有个方法:修改后打包部署到服务器上,但是这很麻烦,的确。
那怎么可以做到本地开发呢?
这个时候就需要内网穿透这个神器了,找了很久发现这个不错。
建议买9块一个月的,然后再花3块买个二级域名,这样可以固定穿透的公网域名。
当然可以选择免费的渠道穿透,但是域名是随机生成的。(花钱真香)

https://juejin.im/post/5cad5e675188251b1b2f5517

<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. **应用上架** - 在服务商后台提交审核材料 - 配置授权完成页和安装引导页 - 通过企业微信审核后上架应用市场 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值