「小游戏服务平台」(扩展工程版)
小游戏平台错误码规范(扩展工程版)
1. 错误码分层设计
为了便于定位和统一管理,可以采用 分层 + 分模块 的设计:
1.1 分层
- 前端层错误(1xx):网络错误、版本不兼容、SDK 调用失败
- 服务端业务错误(2xx):用户、游戏、广告、支付、风控等业务逻辑错误
- 系统级错误(5xx):服务器异常、数据库/缓存不可用
- 第三方依赖错误(3xx):支付通道、CDN、云存储、广告平台
1.2 分模块(业务域划分)
同前面约定:用户(01)、游戏(02)、支付(03)、广告(04)、开发者(05)、数据(06)、风控(07)、系统(99)
2. SDK 与前端错误处理规范
2.1 错误码统一封装
SDK 内部调用 API 后,必须返回统一格式:
|
|
- 前端:展示
message
(或根据i18n
选择语言) - SDK:上报
trace_id
到监控系统,便于后端追踪
2.2 错误分级提示
- 用户可感知错误(如密码错误、余额不足) → 明确提示
- 用户无感知错误(如埋点上报失败) → 静默处理或延迟重试
- 安全敏感错误(如风控封禁、支付校验失败) → 模糊提示(避免暴露系统逻辑)
3. 日志与监控联动
3.1 Trace ID 贯通
- 每个请求分配一个
trace_id
(UUID/雪花算法) - 前端/SDK → API 网关 → 微服务 → 数据存储,全链路携带
- 出错时,错误码与
trace_id
必须写入日志,方便 ELK/监控系统查询
3.2 指标监控
- 每个错误码必须在监控系统(Prometheus + Grafana)建立监控指标
- 示例:
|
|
👉 可实时监控「支付回调签名验证失败」的频率,快速发现第三方攻击或接入问题。
3.3 告警规则
- 系统级错误(5xx)出现 ≥ 100 次/分钟 → 触发告警
- 业务错误(2xx)出现异常峰值(超过日常均值 3 倍) → 触发告警
- 支付/广告相关错误必须进入 SLA 监控(直接影响收入)
4. 错误码维护流程
4.1 错误码申请
- 新功能开发 → 开发人员在「错误码文档」中申请错误码
- 由 架构组/后端组长 审核,确保不冲突
4.2 错误码文档
-
错误码需统一维护在 Markdown 文档 / Swagger API 文档 / 内部 Wiki
-
每个错误码必须包含:
- 编码
- Message(中文/英文/日文多语言)
- 场景说明
- HTTP 状态码
- 解决方案(运维手册中体现)
4.3 错误码版本管理
- 使用 Git 仓库维护
errors.yaml
或errors.json
文件 - CI/CD 流程校验错误码是否重复
- SDK 自动拉取最新错误码(生成本地映射文件)
5. 错误码分类示例(细化)
5.1 用户模块
错误码 | Message | 说明 | 处理方式 |
---|---|---|---|
201001 | 用户名或密码错误 | 登录失败 | 弹窗提示,允许重试 |
201002 | Token 无效或已过期 | JWT 校验失败 | 跳转登录页 |
201005 | 用户被风控限制 | 异常操作 | 弹窗提示,联系客服 |
5.2 游戏模块
错误码 | Message | 说明 | 处理方式 |
---|---|---|---|
202001 | 上传失败,格式错误 | zip 包损坏 | 提示重新上传 |
202002 | 文件大小超限(500MB) | 超过限制 | 提示压缩或拆包 |
202004 | 游戏已下架 | 违规/开发者删除 | 提示「游戏已下架」 |
5.3 支付模块
错误码 | Message | 说明 | 处理方式 |
---|---|---|---|
203001 | 订单不存在 | 无效订单号 | 提示「订单无效」 |
203003 | 回调签名验证失败 | 签名不匹配 | 安全告警 + 异常上报 |
203004 | 重复支付请求 | 幂等保护 | 返回原订单状态 |
5.4 广告模块
错误码 | Message | 说明 | 处理方式 |
---|---|---|---|
204001 | 无广告库存 | 没有可展示广告 | 返回默认广告/占位图 |
204002 | 点击无效 | 作弊/重复点击 | 静默拦截,不提示用户 |
6. 最佳实践建议
- 错误码分配范围(例如用户模块 201000–201999)
- SDK 内置错误映射表(开发者不需要背数字)
- 自动化测试覆盖率(确保每个错误码有测试用例)
- SLA 指标:对支付/广告错误码单独统计成功率,保证收入稳定
📌 总结
小游戏平台的错误码规范需要做到:
- 模块化(不同业务域独立编号)
- 分层次(系统/业务/第三方)
- 可国际化(支持多语言提示)
- 可追踪(trace_id 全链路追踪)
- 可运维(日志+监控+告警联动)
- 可管理(文档化+版本化+自动校验)
这样既能满足 用户体验,也能保证 研发和运维效率。