技术博客
运营商三要素实名认证:完整错误码对照表(code 0/1/2/11/12/13/21/22)

运营商三要素实名认证:完整错误码对照表(code 0/1/2/11/12/13/21/22)

作者: 万维易源
2026-09-07
idcard-phone-auth-response-codes-1389
# 运营商三要素实名认证:完整错误码对照表(code 0/1/2/11/12/13/21/22) > **接口**:运营商三要素 - 运营商手机号实名认证 · **apiCode**:1389 · **接入点**:1389-1 > **请求方式**:POST · **返回格式**:JSON · **计费**:按次(ret_code=0 时扣费,具体档位以官方说明为准) > **适用人群**:已接入用户、中高级开发者 > **阅读时间**:6 分钟 > **最后实测核对**:2026-09-07 --- ## 核心要点 - 业务错误码共 **8 个值**(0/1/2/11/12/13/21/22),覆盖认证成功、失败、参数校验、渠道异常四类场景。 - 系统层 `showapi_res_code=0` 与业务层 `ret_code=0` 是两个不同维度的状态码,不要混淆。 - `code=21`(渠道升级暂停)和 `code=22`(渠道维护暂停)属于平台侧异常,用户无法自行修复,需联系 ShowAPI 客服。 --- ## 完整错误码枚举 | code | 含义 | 常见原因 | 处理建议 | |------|------|---------|---------| | 0 | 认证成功 | — | 正常流程,继续业务 | | 1 | 认证失败 | 姓名/身份证/手机号与运营商记录不匹配 | 引导用户重新输入,允许重试 | | 2 | 无该手机号记录 | 该手机号未实名或未接入运营商数据库 | 告知用户该号码可能未实名,引导绑定真实号码 | | 11 | 手机号、身份证或者姓名为空 | 请求参数缺失,或传入了空字符串 | 检查前端表单校验,确保三个必填字段均有值 | | 12 | 身份证校验错误 | 身份证号格式不正确(位数不对、校验位错误) | 引导用户检查身份证号格式 | | 13 | 手机号校验错误 | 手机号格式不正确(非 11 位、含非法字符) | 引导用户检查手机号格式 | | 21 | 渠道升级暂停服务 | ShowAPI 渠道侧临时升级 | 稍后重试,或联系客服确认恢复时间 | | 22 | 渠道维护暂停服务 | ShowAPI 渠道侧计划维护 | 稍后重试,或联系客服确认维护窗口 | > **铁律**:以上 8 个值为文档给出的完整枚举,不可自行补充或截断。 --- ## 系统层 vs 业务层状态码 调用该接口时,返回 JSON 有两层状态码,含义不同: | 层级 | 字段 | 0 的含义 | 非 0 的处理 | |------|------|---------|------------| | 系统层 | `showapi_res_code` | 调用成功,请求已到达业务层 | 检查 `showapi_res_error`,通常是 appKey 无效或网络问题 | | 业务层 | `ret_code` | 业务调用成功(认证成功或失败均有 ret_code=0) | 检查 `code` 字段判断具体业务结果 | **关键区别**:`ret_code=0` 不代表"认证成功",只代表"本次调用本身成功(会扣费)"。真正判断认证是否通过要看 `code` 字段。 --- ## 归属地字段说明 当 `needBelongArea=true`(默认值)且 `code=0` 时,返回 `belongArea` 对象: | 字段 | 类型 | 说明 | |------|------|------| | `prov` | String | 省名,如"山西"、"四川" | | `city` | String | 市名,如"临汾市"、"成都市" | | `name` | String | 运营商名称,如"移动神州行卡"、"电信星空卡" | | `num` | Number | 号段,如 1362068 | | `provCode` | Number | 省别编码,本省身份证的前几位编码,如 140000(山西)、110000(北京) | | `type` | Number | 运营商类型:**1=移动 2=电信 3=联通 4=广电** | | `order` | String | 渠道订单号,用于追溯 | > **注意**:`belongArea` 是**单对象**,不是数组。不要按数组逻辑遍历。 --- ## 真实返回示例(2026-09-07 实测) 以下是一段认证成功时的完整返回(测试号段,仅供结构参考): ```json { "showapi_res_error": "", "showapi_res_code": 0, "showapi_res_id": "60740ce48d57ba8f1c10fb44", "showapi_res_body": { "ret_code": 0, "order": "6ddaf1ec67a343dc814c833ff0ae855f", "code": 0, "belongArea": { "num": 1362068, "prov": "山西", "name": "移动神州行卡", "provCode": "140000", "type": 1, "city": "临汾市" }, "msg": "认证成功" } } ``` --- ## 排查路径速查 ``` showapi_res_code != 0 └─► appKey 无效 / 网络问题 → 检查控制台 AppKey 是否有效 showapi_res_code == 0 但 ret_code != 0 └─► 业务调用异常 → 联系 ShowAPI 客服(极少出现) ret_code == 0: ├─► code == 0 → 认证成功,检查 belongArea 使用归属地 ├─► code == 1 → 三要素不匹配 → 引导用户重新输入 ├─► code == 2 → 手机号未实名 → 引导用户绑定真实号码 ├─► code == 11 → 参数为空 → 检查前端表单校验 ├─► code == 12 → 身份证格式错误 → 引导用户修正身份证号 ├─► code == 13 → 手机号格式错误 → 引导用户修正手机号 ├─► code == 21 → 渠道升级中 → 稍后重试或联系客服 └─► code == 22 → 渠道维护中 → 稍后重试或联系客服 ``` --- ## FAQ **Q1:code=0 但 msg="认证失败"是怎么回事?** 不会同时出现。code=0 时 msg 为"认证成功";code=1 时 msg 为"认证失败"。如果看到矛盾值,说明解析逻辑有 bug,检查代码中对 `code` 和 `msg` 的读取路径。 **Q2:code=1 和 code=2 的区别是什么?** code=1 是"三要素不匹配",即数据存在但不一致;code=2 是"无该手机号记录",即该手机号在运营商侧没有实名登记记录。前者引导用户修正输入,后者引导用户绑定真实号码。 **Q3:belongArea 里 type=4 代表什么?** type=4 表示中国广电(中国广播电视网络有限公司),2022 年起广电获得 5G 商用牌照,部分手机号归属广电。 **Q4:code=21/22 时还会扣费吗?** 文档未明确说明。按"ret_code=0 扣费"的字面理解,若系统层返回 ret_code=0 但业务层 code=21/22,理论上仍会扣费。建议在渠道维护期间暂停调用或做好预算控制。 **Q5:身份证号为空时返回 code=11 还是 code=12?** code=11。code=12 仅在身份证号**非空但格式错误**时返回。 --- ## 下一步阅读 - [注册实名校验集成方案](https://www.showapi.com/guides/idcard-phone-auth-scenario-integration-1389) —— 业务层如何处理这些错误码 - [按次计费下的缓存策略](https://www.showapi.com/guides/idcard-phone-auth-cache-cost-1389) —— 相同参数重复查询如何省钱 - [三要素 vs 二要素 vs 四要素方案对比](https://www.showapi.com/guides/idcard-phone-auth-comparison-1389) —— 选型决策参考 --- **- 本系列共 6 篇**:查看[运营商三要素实名认证指南总目录](https://www.showapi.com/guides/idcard-phone-auth-guides-1389)