# 企业微信开发指南 [TOC] ## 🎯 开发指南概述 企业微信开发指南是 WeChatDeveloper 项目中企业微信功能模块的核心文档,为开发者提供完整的企业微信开发解决方案。 ## 🚀 快速开始 ### 基础配置 ```php <?php // 企业微信开发基础配置 include "WeChatDeveloper/include.php"; $config = [ 'appid' => 'ww1234567890abcdef', // 企业ID 'appsecret' => 'your_corp_secret', // 应用Secret 'cache_path' => '/path/to/cache', // 缓存目录 ]; try { $work = \WeChat\Contracts\BasicWeWork::instance($config); echo "=== 企业微信开发指南 ===\n"; // 获取access_token $token = $work->getAccessToken(); echo "Access Token: " . $token . "\n"; // 测试连接 $url = 'https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=' . $token; $result = $work->callGetApi($url); if ($result['errcode'] == 0) { echo "✓ 企业微信连接成功\n"; echo "部门数量: " . count($result['department']) . "\n"; } else { echo "✗ 企业微信连接失败: " . $result['errmsg'] . "\n"; } } catch (Exception $e) { echo "✗ 发生错误: " . $e->getMessage() . "\n"; } ``` ## 📖 详细说明 ### 企业微信简介 企业微信是腾讯为企业打造的通讯与办公工具,提供了丰富的API接口,支持: - **组织架构管理**:部门、成员信息管理 - **消息推送**:文本、图片、文件等多种消息类型 - **应用管理**:企业应用的生命周期管理 - **身份验证**:OAuth2.0授权和身份验证 - **数据统计**:使用情况和活跃度分析 ### 核心功能模块 #### 1. 通讯录管理 - 部门信息获取、创建、更新 - 成员信息管理 - 标签管理 - 权限控制 #### 2. 消息推送 - 文本消息发送 - 图片、文件消息 - 批量消息推送 - 消息状态跟踪 #### 3. 应用管理 - 应用创建和配置 - 权限设置 - 功能开关 - 数据统计 #### 4. 身份验证 - OAuth2.0授权流程 - 用户身份验证 - 权限验证 - 安全防护 ## 💡 使用案例 ### 完整开发示例 ```php <?php // 企业微信完整开发示例 include "WeChatDeveloper/include.php"; $config = [ 'appid' => 'ww1234567890abcdef', 'appsecret' => 'your_corp_secret', 'cache_path' => '/path/to/cache', ]; try { $work = \WeChat\Contracts\BasicWeWork::instance($config); echo "=== 企业微信完整开发示例 ===\n"; // 1. 获取部门列表 echo "1. 获取部门列表...\n"; $deptUrl = 'https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=' . $work->getAccessToken(); $deptResult = $work->callGetApi($deptUrl); if ($deptResult['errcode'] == 0) { echo "✓ 部门列表获取成功,共 " . count($deptResult['department']) . " 个部门\n"; } else { echo "✗ 部门列表获取失败: " . $deptResult['errmsg'] . "\n"; } // 2. 获取成员列表 echo "2. 获取成员列表...\n"; $userUrl = 'https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=' . $work->getAccessToken() . '&department_id=1'; $userResult = $work->callGetApi($userUrl); if ($userResult['errcode'] == 0) { echo "✓ 成员列表获取成功,共 " . count($userResult['userlist']) . " 个成员\n"; } else { echo "✗ 成员列表获取失败: " . $userResult['errmsg'] . "\n"; } // 3. 发送消息 echo "3. 发送消息...\n"; $messageUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' . $work->getAccessToken(); $messageData = [ 'touser' => '@all', 'msgtype' => 'text', 'agentid' => 1000002, 'text' => [ 'content' => '这是一条测试消息,发送时间:' . date('Y-m-d H:i:s') ] ]; $messageResult = $work->callPostApi($messageUrl, $messageData); if ($messageResult['errcode'] == 0) { echo "✓ 消息发送成功\n"; } else { echo "✗ 消息发送失败: " . $messageResult['errmsg'] . "\n"; } echo "✓ 企业微信开发示例完成\n"; } catch (Exception $e) { echo "✗ 发生错误: " . $e->getMessage() . "\n"; } ``` ### 高级功能示例 ```php <?php // 企业微信高级功能示例 include "WeChatDeveloper/include.php"; $config = [ 'appid' => 'ww1234567890abcdef', 'appsecret' => 'your_corp_secret', 'cache_path' => '/path/to/cache', ]; try { $work = \WeChat\Contracts\BasicWeWork::instance($config); echo "=== 企业微信高级功能示例 ===\n"; // 1. 创建部门 echo "1. 创建部门...\n"; $createDeptUrl = 'https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token=' . $work->getAccessToken(); $deptData = [ 'name' => '测试部门', 'parentid' => 1, 'order' => 1 ]; $createResult = $work->callPostApi($createDeptUrl, $deptData); if ($createResult['errcode'] == 0) { echo "✓ 部门创建成功,部门ID: " . $createResult['id'] . "\n"; } else { echo "✗ 部门创建失败: " . $createResult['errmsg'] . "\n"; } // 2. 创建成员 echo "2. 创建成员...\n"; $createUserUrl = 'https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=' . $work->getAccessToken(); $userData = [ 'userid' => 'testuser001', 'name' => '测试用户', 'department' => [1], 'mobile' => '13800138000', 'email' => 'test@example.com' ]; $createUserResult = $work->callPostApi($createUserUrl, $userData); if ($createUserResult['errcode'] == 0) { echo "✓ 成员创建成功\n"; } else { echo "✗ 成员创建失败: " . $createUserResult['errmsg'] . "\n"; } // 3. 发送复杂消息 echo "3. 发送复杂消息...\n"; $complexMessageUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' . $work->getAccessToken(); $complexMessageData = [ 'touser' => '@all', 'msgtype' => 'news', 'agentid' => 1000002, 'news' => [ 'articles' => [ [ 'title' => '企业微信开发指南', 'description' => '详细的企业微信开发文档和示例', 'url' => 'https://example.com/guide', 'picurl' => 'https://example.com/image.jpg' ] ] ] ]; $complexResult = $work->callPostApi($complexMessageUrl, $complexMessageData); if ($complexResult['errcode'] == 0) { echo "✓ 复杂消息发送成功\n"; } else { echo "✗ 复杂消息发送失败: " . $complexResult['errmsg'] . "\n"; } echo "✓ 企业微信高级功能示例完成\n"; } catch (Exception $e) { echo "✗ 发生错误: " . $e->getMessage() . "\n"; } ``` ## 🔧 配置说明 ### 基础配置参数 | 参数名 | 类型 | 必填 | 说明 | 示例值 | |--------|------|------|------|--------| | appid | string | 是 | 企业ID | ww1234567890abcdef | | appsecret | string | 是 | 应用Secret | your_corp_secret | | cache_path | string | 是 | 缓存目录 | /path/to/cache | ### 高级配置 ```php <?php // 企业微信高级配置 $config = [ 'appid' => 'ww1234567890abcdef', 'appsecret' => 'your_corp_secret', 'cache_path' => '/path/to/cache', 'timeout' => 30, // 请求超时时间 'retry_times' => 3, // 重试次数 'retry_delay' => 1000, // 重试延迟(毫秒) 'debug' => false, // 调试模式 ]; ``` ## 📚 相关文档 ### 企业微信功能模块 - [通讯录管理](企业微信-通讯录管理.md) - 部门、成员信息管理 - [消息推送](企业微信-消息推送.md) - 消息发送和管理 - [部门基础管理](企业微信-部门基础管理.md) - 部门信息管理 - [部门成员管理](企业微信-部门成员管理.md) - 部门成员关系管理 - [用户基础管理](企业微信-用户基础管理.md) - 用户信息管理 - [用户批量管理](企业微信-用户批量管理.md) - 批量用户操作 - [应用管理](企业微信-应用管理.md) - 企业应用管理 - [身份验证](企业微信-身份验证.md) - 用户身份验证 - [完整API接口](企业微信-完整API接口.md) - 所有API接口文档 ### 官方文档 - [企业微信官方文档](https://developer.work.weixin.qq.com/) - 官方API文档 - [企业微信API参考](https://developer.work.weixin.qq.com/document) - API接口参考 ## ❓ 常见问题 ### Q: 如何获取企业ID和应用Secret? **A:** 获取步骤: 1. 登录企业微信管理后台:https://work.weixin.qq.com/ 2. 进入"应用管理" → "自建应用" 3. 创建应用或选择现有应用 4. 在应用详情中查看"AgentId"和"Secret" ### Q: 如何获取access_token? **A:** 获取方法: ```php $work = \WeChat\Contracts\BasicWeWork::instance($config); $token = $work->getAccessToken(); ``` ### Q: 如何发送消息给指定用户? **A:** 发送示例: ```php $messageData = [ 'touser' => 'userid1|userid2', // 指定用户ID 'msgtype' => 'text', 'agentid' => 1000002, 'text' => [ 'content' => '消息内容' ] ]; ``` ### Q: 如何处理API调用失败? **A:** 错误处理: ```php try { $result = $work->callGetApi($url); if ($result['errcode'] != 0) { echo "API调用失败: " . $result['errmsg']; } } catch (Exception $e) { echo "发生异常: " . $e->getMessage(); } ``` ## 🎯 最佳实践 ### 1. 开发建议 - 遵循企业微信开发规范 - 合理使用API频率限制 - 实现完善的错误处理 - 做好数据备份 ### 2. 安全防护 - 验证所有输入数据 - 使用HTTPS协议 - 保护企业数据安全 - 记录操作日志 ### 3. 性能优化 - 使用缓存机制 - 异步处理任务 - 优化数据库查询 - 监控系统性能