# 微信扩展包 API 参考

## 核心方法

### Wechat 门面

#### officialAccount()

获取公众号实例。

**返回值：** 公众号服务实例

**示例：**
```php
$officialAccount = Wechat::officialAccount();
```

#### miniProgram()

获取小程序实例。

**返回值：** 小程序服务实例

**示例：**
```php
$miniProgram = Wechat::miniProgram();
```

#### work()

获取企业微信实例。

**返回值：** 企业微信服务实例

**示例：**
```php
$work = Wechat::work();
```

#### openPlatform()

获取开放平台实例。

**返回值：** 开放平台服务实例

**示例：**
```php
$openPlatform = Wechat::openPlatform();
```

## 公众号服务

### 菜单服务 (WechatMenuService)

#### createMenu(array $menu)

创建菜单。

**参数：**
- `$menu` - 菜单配置数组

**返回值：** 操作结果

**示例：**
```php
$menu = [
    'button' => [
        [
            'type' => 'click',
            'name' => '今日歌曲',
            'key' => 'V1001_TODAY_MUSIC'
        ],
        [
            'name' => '菜单',
            'sub_button' => [
                [
                    'type' => 'view',
                    'name' => '搜索',
                    'url' => 'http://www.soso.com/'
                ],
                [
                    'type' => 'click',
                    'name' => '赞一下我们',
                    'key' => 'V1001_GOOD'
                ]
            ]
        ]
    ]
];

$result = Wechat::officialAccount()->menu->createMenu($menu);
```

#### getMenu()

获取菜单。

**返回值：** 菜单信息

**示例：**
```php
$menu = Wechat::officialAccount()->menu->getMenu();
```

#### deleteMenu()

删除菜单。

**返回值：** 操作结果

**示例：**
```php
$result = Wechat::officialAccount()->menu->deleteMenu();
```

### 用户服务 (WechatUserService)

#### getUserInfo(string $openId)

获取用户信息。

**参数：**
- `$openId` - 用户的 OpenID

**返回值：** 用户信息

**示例：**
```php
$userInfo = Wechat::officialAccount()->user->getUserInfo('o4HhH5tZ-xxxxx');
```

#### getFollowers()

获取关注者列表。

**返回值：** 关注者列表

**示例：**
```php
$followers = Wechat::officialAccount()->user->getFollowers();
```

### 消息服务 (WechatMessageService)

#### sendTextMessage(string $openId, string $content)

发送文本消息。

**参数：**
- `$openId` - 用户的 OpenID
- `$content` - 消息内容

**返回值：** 操作结果

**示例：**
```php
$result = Wechat::officialAccount()->message->sendTextMessage('o4HhH5tZ-xxxxx', 'Hello World');
```

#### sendImageMessage(string $openId, string $mediaId)

发送图片消息。

**参数：**
- `$openId` - 用户的 OpenID
- `$mediaId` - 媒体文件 ID

**返回值：** 操作结果

**示例：**
```php
$result = Wechat::officialAccount()->message->sendImageMessage('o4HhH5tZ-xxxxx', 'MEDIA_ID');
```

## 小程序服务

### WechatMiniProgramService

#### code2Session(string $code)

通过 code 获取 session_key 和 openid。

**参数：**
- `$code` - 登录时获取的 code

**返回值：** 会话信息

**示例：**
```php
session = Wechat::miniProgram()->code2Session('CODE');
```

#### getAccessToken()

获取小程序的 access_token。

**返回值：** access_token

**示例：**
```php
$accessToken = Wechat::miniProgram()->getAccessToken();
```

## 企业微信服务

### WechatWorkService

#### getAccessToken()

获取企业微信的 access_token。

**返回值：** access_token

**示例：**
```php
$accessToken = Wechat::work()->getAccessToken();
```

#### sendTextMessage(array $message)

发送文本消息。

**参数：**
- `$message` - 消息配置数组

**返回值：** 操作结果

**示例：**
```php
$message = [
    'touser' => 'UserID1|UserID2|UserID3',
    'msgtype' => 'text',
    'agentid' => 1,
    'text' => [
        'content' => 'Hello World'
    ],
    'safe' => 0
];

$result = Wechat::work()->sendTextMessage($message);
```

## 开放平台服务

### WechatOpenPlatformService

#### getPreAuthCode()

获取预授权码。

**返回值：** 预授权码

**示例：**
```php
$preAuthCode = Wechat::openPlatform()->getPreAuthCode();
```

#### getAuthorizerAccessToken(string $appId, string $refreshToken)

获取授权方的 access_token。

**参数：**
- `$appId` - 授权方的 appid
- `$refreshToken` - 授权方的刷新令牌

**返回值：** access_token 信息

**示例：**
```php
$accessToken = Wechat::openPlatform()->getAuthorizerAccessToken('APPID', 'REFRESH_TOKEN');
```
