---
url: https://qiwuadmin.com/features/wxoa.md
description: >-
  在后台管理一个或多个微信公众号：APP_WXOA
  开关、账号接入与回调、消息与会话、自动回复、自定义菜单、粉丝与标签、素材、模板消息、渠道二维码，以及图文草稿、发表、群发、数据统计、留言和订阅通知，默认关闭。
---

# 微信公众号

**微信公众号**是企业或个人在微信里开设的官方账号，用户关注后可以收到它的消息、点它的菜单、和它对话。关注了公众号的用户叫**粉丝**。栖梧的公众号模块让你在自己的后台里管理一个或多个公众号：接入账号、接收和回复粉丝的消息、设置自动回复和菜单、管理粉丝和素材，以及发文章、群发和看统计。

几个常见的名词：

* **服务号**、**订阅号**：公众号的两种类型。服务号能用的接口更多；订阅号现在在公众平台上叫“公众号（原订阅号）”。
* **认证**：向微信提交资料、确认运营主体的身份。没有认证的账号很多接口没有权限。
* **测试号**：微信给开发者的免费测试账号，扫码即可得到，用来在正式上线前试功能。
* **AppID**、**AppSecret**：微信给每个公众号的身份编号和密钥，在公众平台的开发配置里查看。

::: tip 默认关闭
公众号模块默认关闭，不需要的项目可以跳过这一页。它只管理公众号，和[登录与账号](/features/login#微信小程序登录)里的微信小程序登录、[消息中心](/features/messaging)里的微信订阅消息是两回事，配置互不通用。
:::

## 打开开关

开关是服务端的环境变量 `APP_WXOA`，默认 `false`。它只在启动时读取，改完要重启**全部**服务端实例。

| 地方 | 关闭（默认） | 打开 |
| --- | --- | --- |
| 接口 | `/api/wxoa/*` 全部返回 404，包括接收微信推送的回调地址 | 正常使用 |
| 菜单 | 侧栏和角色授权树里看不到 **公众号** 分组（菜单管理里照常列出） | 按权限显示 |
| 微信 | 不访问微信，公众号的定时任务也不运行 | 按需调用 |
| 数据表 | 照常由数据库迁移创建，保持为空 | 正常写入 |

打开后在侧栏的 **公众号** 分组里使用。开关的完整说明见仓库的[公众号管理 · 启用](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#启用)，部署时的注意事项见[部署 · 公众号模块](/guide/deploy#公众号模块)。

## 接入与互动

这一组功能已经用微信测试号在真机上验证过。

### 接入账号

在 **公众号 → 账号管理** 里新建账号，填 AppID、AppSecret、Token（自己定的一串字符，和微信那边填的一致）等。一个后台可以接入多个公众号，页面顶部可以切换当前账号。

* **密钥只写不读**：AppSecret、Token 和 EncodingAESKey（加密用的密钥）加密保存，详情里只显示“已设置”，编辑时留空表示不变；
* **AppID 不能修改**：粉丝、素材、菜单都只对原来的公众号有效，换公众号请新建账号；
* **测试连接**：检查能不能取到调用微信接口用的令牌，正式号还会检查 IP 白名单（公众平台只接受白名单里的服务器调用接口）；
* **接口配额**：查看常用接口今天的调用次数。

测试号和正式号的接入步骤见仓库的[配置项](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#配置项)、[测试号](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#测试号)、[正式号](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#正式号)和 [IP 白名单](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#ip-白名单)。

### 接收微信推送

粉丝发消息、关注、点菜单时，微信会把这件事**推送**到你填的服务器地址（也叫**回调地址**）。保存账号后页面上会显示这个地址，复制后填到公众平台。

* 支持三种消息加解密方式：**明文**（不加密，只建议测试号用）、**兼容**和**安全**；
* 每个推送都要验证签名，过期或重放的请求被拒绝；
* 微信只等约 5 秒，收到推送后先回复，其余工作在回复之后处理；重复的推送只处理一次。

见仓库的[回调地址](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#回调地址)、[加密方式](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#加密方式)（含切换加密方式的顺序）和 [5 秒、重试与排重](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#5-秒重试与排重)。

### 消息与会话

* **公众号 → 消息记录**：查看粉丝发来的消息和事件；
* **公众号 → 会话**：按粉丝查看对话并回复（**客服消息**）。微信只允许在粉丝最近互动后的一段时间内回复，超出时间会提示；
* 粉丝发来的图片、语音和视频缩略图默认复制到本地存储，因为微信只保留 3 天；
* 消息默认保留 180 天，过期的由定时任务清理。

见仓库的[消息与会话](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#消息与会话)。

### 自动回复

在 **公众号 → 自动回复** 里设置规则：关注时回复、按关键词回复、点菜单时回复、没有命中时的默认回复，以及粉丝**扫渠道二维码**时的回复。改完立即生效。见仓库的[自动回复](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#自动回复)。

### 自定义菜单

在 **公众号 → 自定义菜单** 里编辑公众号底部的菜单，编辑区是一个手机预览，所见即所得，编辑好再发布到微信。除了所有人看到的默认菜单，还可以建**个性化菜单**：按粉丝标签或手机平台显示不同的菜单。

::: info 启用服务器配置之后
按微信的规则，正式号在公众平台启用服务器配置后，公众平台后台设置的自动回复和自定义菜单不再生效，改由本系统管理。
:::

### 粉丝、标签与黑名单

**公众号 → 粉丝管理** 列出关注过公众号的粉丝，可以从微信同步、给粉丝打**标签**（分组）、拉入或移出**黑名单**，并导出 Excel。微信自 2021 年 12 月 27 日起不再返回粉丝的昵称和头像。见仓库的[同步与多实例](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#同步与多实例)。

### 素材、模板消息与渠道二维码

* **公众号 → 素材管理**：上传和同步**永久素材**（长期保存在微信上的图片、语音、视频），回复和群发都用它；
* **公众号 → 模板消息**：用公众号的消息模板给粉丝发通知；
* **公众号 → 渠道二维码**：给不同渠道（比如门店、海报）各生成一个二维码，统计扫码次数；粉丝通过它关注时，可以自动打上指定的标签。

## 内容与运营

这一组功能按微信的规则需要**已认证的服务号**。到目前为止，它们只在模拟微信接口的测试环境里验证过，还没有在真实的认证服务号上核对。见仓库的[验证情况](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#验证情况)。

* **公众号 → 图文草稿**：写文章草稿（每份 1–8 篇），用富文本编辑器编辑，同步到微信草稿箱，也可以从微信拉取；正文图片只上传本站存储里的图片。见仓库的[图文草稿与发表](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#图文草稿与发表)；
* **公众号 → 发表记录**：把已同步的草稿发表出去，查看发表状态和文章链接；
* **公众号 → 群发消息**：向全部粉丝、某个标签或指定粉丝群发文字、图片、语音、视频或图文，可以先预览给一个粉丝。网络超时等原因导致提交结果不明时，可以在微信 24 小时防重复的期限内“重发”，不会让粉丝收到两次；超过期限就不再提供重发。图文群发的记录里还能管理文章的**留言**。见仓库的[群发](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#群发)；
* **公众号 → 数据统计**：用户增减、消息、接口和图文的图表，一次最多查 90 天；
* **公众号 → 订阅通知**：管理订阅通知模板，并发送给已经授权的粉丝。

统计、留言和订阅通知的细节见仓库的[数据统计、留言与订阅通知](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#数据统计留言与订阅通知)。

## 权限

每个页面有各自的按钮权限，权限点以 `wxoa.` 开头。权限只按功能划分：有某项权限，就能操作全部账号。完整的权限表见仓库的[权限](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#权限)。

## 多租户

打开[多租户](/features/multi-tenancy)时：

* 每个租户管理自己的公众号，看不到别的租户的账号和数据；
* 一个 AppID 只能接入一个租户；
* 新建账号时先用填写的 AppSecret 向微信验证一次，证明添加的人确实拥有这个公众号，验证失败就不建账号；
* 平台人员可以在 **系统管理 → 租户管理** 里按 AppID 查出是哪个租户占用了它；
* 租户的套餐里要勾上 **公众号** 分组，这个租户才能使用。

见仓库的[安全与多租户边界](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#安全与多租户边界)和[全局唯一值的释放](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/multi-tenancy.md#全局唯一值的释放)。

## 在演示站体验

[在线演示](/guide/introduction#在线演示)打开了公众号模块，运行在演示模式下：保存等写入操作和对微信的调用都会被拒绝。演示站准备了一个虚构的样例服务号，以及样例粉丝、标签、消息、菜单、回复规则和二维码，可以随意浏览。见仓库的[演示模式](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#演示模式)。

## 已知限制

* 不包含微信支付、卡券、第三方平台代授权、客服账号分配、网页授权和 JS-SDK；
* 订阅通知只能发给已经通过其他途径完成授权的粉丝；
* 删除渠道二维码只删本系统的记录，永久二维码在微信那边仍然有效。

完整清单见仓库的[其它限制](https://github.com/732124645/qiwu-vue-admin/blob/main/docs/wxoa.md#其它限制)。

相关功能：

* [多租户](/features/multi-tenancy)
* [权限与数据范围](/features/permission)
* [定时任务](/features/job)
* [文件管理](/features/storage)
