「小游戏服务平台」错误码规范
设计一个 小游戏平台的错误码规范,需要做到:
- 统一规范:所有服务、接口、SDK 使用同一套错误码标准。
- 可扩展性:支持多模块、多语言(前端、后端、SDK)。
- 可诊断性:既能给用户友好的提示,又能给开发者提供精确的调试信息。
- 多层次信息:错误码(Code)、错误信息(Message)、调试上下文(Detail/Trace ID)。
小游戏平台错误码规范(详细版)
1. 错误码结构设计
采用 五位数字码 + 模块前缀 的形式:
[A][BB][CCC]
A → 错误级别(1=系统级,2=业务级,3=第三方依赖)
BB → 模块编码(两位)
CCC → 具体错误编号(三位)
示例
10001
→ 系统错误(未知错误)201001
→ 用户模块(01)登录失败202002
→ 游戏模块(02)上传文件过大203003
→ 支付模块(03)回调签名验证失败
2. 模块划分(BB)
模块编码 | 模块名称 | 说明 |
---|---|---|
01 | 用户模块 | 注册、登录、认证、权限 |
02 | 游戏模块 | 上传、审核、分发、运行 |
03 | 支付模块 | 订单、支付、提现、回调 |
04 | 广告模块 | 广告投放、点击、归因 |
05 | 开发者模块 | 报表、收益、工具、插件 |
06 | 数据分析 | 埋点、推荐、BI 报表 |
07 | 风控安全 | 反作弊、限流、黑名单 |
99 | 系统级错误 | 通用错误、服务不可用 |
3. 错误级别(A)
级别 | 范围 | 说明 |
---|---|---|
1 | 1xxxx | 系统级错误(全局) |
2 | 2xxxx | 业务逻辑错误(可预期) |
3 | 3xxxx | 第三方依赖错误(支付、云存储等) |
4. 错误码设计示例
系统级错误(1xxxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
10001 | 系统错误,请稍后再试 | 500 | 未知错误 |
10002 | 请求参数无效 | 400 | 参数格式/必填项缺失 |
10003 | 服务不可用 | 503 | 微服务宕机或熔断 |
10004 | 权限不足 | 403 | 用户未授权 |
10005 | 请求过于频繁 | 429 | 限流保护 |
用户模块(2-01-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
201001 | 登录失败,用户名或密码错误 | 401 | 登录校验失败 |
201002 | Token 无效或已过期 | 401 | JWT 校验失败 |
201003 | 用户未实名 | 403 | 需要实名认证 |
201004 | 用户被冻结 | 403 | 风控冻结 |
游戏模块(2-02-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
202001 | 游戏上传失败 | 400 | 文件损坏/不支持格式 |
202002 | 游戏包大小超过限制 | 400 | >500MB |
202003 | 游戏审核未通过 | 403 | 违规内容 |
202004 | 游戏下架 | 404 | 游戏已被删除或下架 |
支付模块(2-03-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
203001 | 支付订单不存在 | 404 | 无效订单号 |
203002 | 支付失败 | 402 | 支付网关拒绝 |
203003 | 回调签名验证失败 | 400 | 安全校验未通过 |
203004 | 提现处理中 | 409 | 幂等性保护 |
广告模块(2-04-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
204001 | 广告库存不足 | 404 | 无可展示广告 |
204002 | 广告点击无效 | 400 | 作弊/重复点击 |
204003 | 广告结算失败 | 500 | 广告竞价异常 |
开发者模块(2-05-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
205001 | 报表数据延迟 | 202 | 数据同步中 |
205002 | 提现申请超限 | 400 | 超过每日限额 |
205003 | 插件上传失败 | 400 | 包格式错误 |
风控安全模块(2-07-xxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
207001 | 账号涉嫌作弊 | 403 | 行为检测异常 |
207002 | IP 黑名单限制 | 403 | 拦截访问 |
207003 | 请求异常高频 | 429 | 触发限流 |
第三方依赖错误(3xxxx)
错误码 | 错误信息 | HTTP 状态码 | 说明 |
---|---|---|---|
301001 | 支付网关超时 | 504 | 微信/支付宝超时 |
301002 | CDN 分发失败 | 502 | CDN 节点错误 |
301003 | 云存储服务不可用 | 503 | OSS/S3 故障 |
5. 错误响应格式(API 统一规范)
|
|
code
→ 错误码(唯一标识)message
→ 面向用户的友好提示detail
→ 面向开发者的调试信息(可选)trace_id
→ 便于日志追踪和问题定位timestamp
→ 出错时间
6. 设计原则
- 前后端统一:前端展示
message
,后台日志记录detail
。 - 可国际化:
message
支持 i18n(中/英/日)。 - 幂等设计:支付、广告上报等接口必须返回一致的错误码,避免重复处理。
- 安全性:对外屏蔽敏感调试信息(如 SQL 错误、栈信息)。
- 文档化:所有错误码需在 API 文档/Swagger 中列出。
📌 一句话总结: 小游戏平台的错误码规范需要 模块化、统一化、可追踪,既能保证用户友好提示,又能帮助开发者快速定位问题,同时考虑国际化和合规性。