# 数据模型
## 标准响应格式
所有 API 响应都遵循统一的格式:
```json
{
"code": "OK",
"msg": "ok",
"data": {},
"ok": true
}
```
**字段说明**:
| 字段 | 类型 | 描述 |
|----------|--------|------------|
| `code` | string | 业务状态码(字符串) |
| `msg` | string | 状态消息 |
| `data` | any | 响应数据(类型根据接口而定) |
| `ok` | bool | 请求是否成功 |
## data 字段类型示例
### 心跳检测 - 字符串类型
```json
{
"code": "OK",
"msg": "ok",
"data": "2025-11-04T23:13:43+08:00",
"ok": true
}
```
### 卡板信息 - 对象类型
```json
{
"code": "OK",
"msg": "ok",
"data": {
"total_flow": 10240,
"used_flow": 5120,
"balance": 100.50,
"status": 2,
"official_real_name_verified": true,
"card_no": "CARD123456789"
},
"ok": true
}
```
### 停复机操作 - 布尔类型
```json
{
"code": "OK",
"msg": "ok",
"data": true,
"ok": true
}
```
### 套餐订购 - 对象类型
```json
{
"code": "OK",
"msg": "ok",
"data": {
"order_no": "ORD202411030001"
},
"ok": true
}
```
## 业务状态码
| 状态码 | HTTP状态码 | 含义 | 处理建议 | 重试策略 |
|------------------------|---------|-----------------|-------------------|--------------|
| OK | 200 | 成功 | 正常处理 | 无需重试 |
| InvalidParams | 400 | 提交的参数不符合要求 | 检查参数格式和必填项 | 修正参数后重试 |
| InvalidAccessKey | 400 | 授权秘钥错误 | 检查 AccessKey 是否正确 | 修正密钥后重试 |
| InvalidTimestamp | 400 | 时间戳格式错误或无效 | 检查时间戳格式和有效期 | 重新生成时间戳后重试 |
| InvalidSignature | 400 | 参数签名错误 | 检查签名算法和密钥 | 修正签名后重试 |
| ReplayAttack | 400 | 请求重放错误 | 使用新的 Nonce | 更换 Nonce 后重试 |
| InsufficientBalance | 400 | 余额不足 | 充值账户余额 | 充值后重试 |
| AccountNotFound | 400 | 账号不存在 | 检查账号是否存在 | 联系管理员 |
| InvalidAccountPassword | 400 | 账号或密码错误 | 检查账号和密码 | 修正凭据后重试 |
| DataMissing | 400 | 数据缺失 | 检查必填数据 | 补充数据后重试 |
| DataUnavailable | 400 | 数据不可用 | 检查数据权限和状态 | 联系管理员 |
| Unauthorized | 401 | 缺少身份验证凭据或身份凭据错误 | 检查认证信息 | 修正认证后重试 |
| PermissionDenied | 403 | 没有操作权限 | 联系管理员配置权限 | 联系管理员 |
| Forbidden | 403 | 没有资源访问权限 | 联系管理员配置权限 | 联系管理员 |
| AuthorizedExpired | 403 | 授权密钥已过期 | 更新授权密钥 | 更新密钥后重试 |
| NotFound | 404 | 请求资源不存在 | 检查资源标识是否正确 | 检查资源后重试 |
| Gone | 410 | 访问的资源不存在 | 资源已被删除 | 无需重试 |
| RateLimited | 429 | 访问频次超过限制 | 降低请求频率 | 等待后重试 |
| InternalError | 500 | 系统内部错误 | 稍后重试或联系支持 | 指数退避重试 |
| ServiceUnavailable | 503 | 系统维护中 | 等待系统恢复 | 等待后重试 |
| UnknownError | 500 | 未知错误 | 联系技术支持 | 联系技术支持 |
## 重试策略说明
- **修正参数后重试**: 修正请求参数后立即重试
- **指数退避重试**: 2^n 秒间隔重试(n为重试次数)
- **等待后重试**: 等待指定时间后重试
- **联系管理员**: 需要人工干预,不要自动重试