Skip to content

公众号订阅用户运行时支撑契约说明

构建时间2026-06-26 20:10:33(Asia/Shanghai)来源项目中间件文档 / 中间件后端来源仓../cl-midserver-2026来源提交号69b951a07311e75887b57e0400d888f89dd72cac
查看文档来源信息
  • 来源目录:addons/sys_base/docs
  • 来源文件:契约说明/公众号订阅用户运行时支撑契约说明.md
## 适用范围 - `app_wechat_subscribe_user` 运行时实体 - 微信 H5 登录与授权链路 - 公众号与用户绑定桥接链路 - `/sys_base/public/auth/getSubscribeUserByOpenid` - `/sys_base/public/auth/getSubscribeUserByUnionid` - 公众号订阅用户同步与写入服务

能力定位

  1. “公众号订阅用户”在中间件中的正式定位是“微信接入支撑能力”。
  2. 本能力保留 H5 登录、公众号绑定、openid/unionid 关联和必要同步写入能力。
  3. 本能力不是中间件治理主能力,不扩成系统治理页、应用治理页或 PCWEB 台账页。

当前正式口径

  1. app_wechat_subscribe_user 表实体保留,继续承接微信接入运行时数据。
  2. getSubscribeUserByOpenid 只允许服务态受控调用,必须提供明确 app-id
  3. getSubscribeUserByOpenid 的正式查询链路是: app-id + openid -> app_user_band -> unionid -> app_wechat_subscribe_user
  4. getSubscribeUserByUnionid 只允许服务态受控调用,必须提供明确 app-id,仅用于绑定桥接、登录支撑或其他已确认正式链路。
  5. 两个查询接口的正式返回口径统一收敛为:openidunionIDappIdsubscribe
  6. H5 授权写入与批量同步写入统一收口到 WechatSubscribeUserService,不再由 public API 层直接拼 SQL 或维护粗放流程。

运行规则

  1. X-System-Key 不能再通过系统只读白名单直接访问上述两个查询接口。
  2. X-App-Key + x-token 形成的 user mode 不能复用上述两个查询接口。
  3. H5 静默授权与用户信息授权产生的订阅用户写入,必须复用统一的单条保存/更新服务。
  4. 批量同步由统一服务负责:
    • 负责拉取公众号用户列表
    • 负责逐条拉取用户详情
    • 负责单条保存或更新
    • 负责同步状态写回
    • 负责失败明细记录
  5. 同步游标按“稳定成功游标”推进:
    • 在首次失败之前成功写入的最后一个 openid 记为稳定游标
    • 出现失败后,后续成功记录可以继续落库,但游标不再越过首个失败点
    • 下一轮同步从稳定游标继续,确保失败区间可以被重放
  6. 如需数据修复,只允许输出文档和脚本设计,不直接删除历史数据。

不允许的做法

  • 不允许把本能力恢复为后台治理数据页。
  • 不允许把本能力重新挂到系统治理菜单、应用治理菜单或 PCWEB 普通治理能力中。
  • 不允许把 getSubscribeUserByUnionid 当作宽松 public convenience 查询口继续复用。
  • 不允许继续使用 fmt.Printf、调试残留字符串或 REPLACE INTO 粗放写法作为正式实现。
  • 不允许无差别返回订阅用户完整实体给服务态查询接口。
  • 不允许为了兼容旧调用而长期保留宽松 public 查询边界。

维护提示

  • 下游若只需要判断是否已关注或桥接公众号身份,应优先使用最小返回结果,不得自行要求恢复全量字段。
  • 新增微信接入链路时,优先复用 WechatSubscribeUserService,不要在新的 handler 中直接写 app_wechat_subscribe_user
  • 若未来出现多公众号并行桥接场景,应在确认业务边界后补充更细的 app 约束,而不是回退到无上下文 unionid 查询。

CL 正式文档平台