Skip to content

27 错误码大全

全站接口走统一返回(app\common\ApiResponse),status 字段沿用 HTTP 语义。本篇汇总所有状态码与典型业务错误信息。

统一返回结构

json
{ "status": 200, "msg": "ok", "data": {} }
字段类型说明
statusint状态码(见下),成功为 200
msgstring可读信息(成功多为 ok/success
dataobject/array业务数据;列表为 { list, total }

注意:HTTP 响应码通常为 200,业务结果以 body 内 status 为准。前端应判断 status 而非仅 HTTP 状态。

状态码总表

status含义典型场景
200成功正常返回
400请求错误/参数非法/业务校验失败缺参数、优惠码无效、余额不足、账号或密码错误
401未登录/令牌失效/凭据错误无 token、JWT 过期、账号不存在或状态异常、API 密钥无效
403无权限/被禁止无模块权限、系统已安装、IP 不在白名单
404资源不存在各类「XX 不存在」
502上游/网关错误开通模块或上游返回失败
500服务器内部错误未捕获异常(APP_DEBUG=false 时为通用错误页)

401 鉴权类(典型 msg)

msg来源
未登录会员中心/后台缺 token
账号不存在当前 token 对应用户/管理员不存在
未登录或令牌过期开放 API v1 鉴权失败
账号不存在或状态异常开放 API 登录:用户非 active
API密钥无效或未启用开放 API 登录:密钥错误/停用
账号或密码错误后台/会员登录失败(400

403 权限类

msg来源
系统已安装安装向导接口在已安装后被调用(setup)
IP 不在白名单内: <ip>开放 API 登录命中 IP 白名单限制
无 msg / 通用后台访问无对应模块权限(AdminAuth 拦截)

404 资源不存在(按域汇总)

典型 msg
商品商品不存在 / 商品不存在或已下架 / 商品组不存在
选项选项组不存在 / 选项不存在 / 子选项不存在
客户/服务客户不存在 / 服务不存在 / 账号不存在
财务订单不存在 / 账单不存在 / 网关不存在
营销优惠码不存在 / 横幅不存在
支持工单不存在 / 部门不存在 / 公告不存在 / 文章不存在 / 分类不存在 / 记录不存在
上下游上游不存在 / 密钥不存在 / 模块不存在
系统员工不存在 / 角色不存在

400 业务校验(示例)

msg来源
请提供账号与API密钥开放 API 登录缺参
该商品不是上游代理商品刷新上游上下文时商品类型不符
下单/续费校验失败信息OrderService/InvoiceServiceInvalidArgumentException,原样透出

502 上游/网关

msg来源
模块返回的 result.message后台手动开通(Host::provision)调用开通模块失败时透出上游原因

异常透出原则

  • 业务异常(如下单参数错误):服务层抛 \InvalidArgumentException,控制器捕获后以 400 + 原始信息返回;
  • 系统/上游异常(如更新、开通):抛 \RuntimeException携带明确原因原样透出,不静默兜底
  • 未捕获异常:由 app\ExceptionHandle 处理,APP_DEBUG=true 显示堆栈,生产显示通用错误页(config/app.phperror_message)。

前端处理建议

ts
const res = await request.post('/admin/xxx', payload)
if (res.status !== 200) {
  Message.error(res.msg || '操作失败')
  // 401 → 跳登录;403 → 提示无权限
  return
}
// 使用 res.data

返回 20 开发文档(总览)

KeDe Finance · 纯 PHP 自研财务系统