本文基于公开接口文档整理,仅描述接口能力、参数与调用方式,供开发者接入参考。
1. 背景与适用场景
身份证二要素认证接口用于在线核验用户填写的「姓名 + 身份证号」两个要素是否一致。它对接权威身份证数据库做实时比对,匹配一致时返回生日、性别、籍贯等结构化附加信息。典型接入方包括金融开户与风控、电商与社交平台注册实名、政务与出行类业务的前置身份核对,以及企业 ERP / OA / HR 等内部系统将实名核验嵌入业务流程。对需要确认用户真实身份、降低冒用风险的场景,该接口可作为自动化身份一致性校验的一环。
2. 接口概览
| 维度 | 说明 |
|---|---|
| 接口名称 | 身份证二要素认证(idcardAudit) |
| 请求方式 | GET |
| 返回格式 | JSON |
| 鉴权方式 | APPCODE 简单认证(Header 携带 Authorization: APPCODE <凭证>) |
| 调用路径 | /idcardAudit |
| 必填参数 | name(姓名)、idcard(身份证号) |
| 响应特征 | 实时核验、零缓存;以返回体 code 字段标识核验结果 |

请求由调用方发起,网关完成 APPCODE 鉴权与要素比对后返回 JSON;业务侧根据 code 处理匹配、不匹配与异常分支。
3. 请求参数
| 参数位置 | 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| Query | name |
string | 是 | 被核验人姓名 |
| Query | idcard |
string | 是 | 被核验人身份证号 |
| Header | Authorization |
string | 是 | 格式为 APPCODE <凭证>,中间为英文空格 |
| Body | — | — | — | 无 Body 参数 |
参数填错(如姓名或身份证号不合法)同样会消耗调用次数,调试阶段请使用测试调用验证。
4. 返回结构
匹配成功时,返回体除 code 外附带生日、性别、籍贯等字段;非匹配或异常时通常仅返回 code 与 msg。
| 字段 | 类型 | 说明 |
|---|---|---|
code |
int | 核验结果码,0 表示匹配,非 0 见错误码表 |
birthday |
string | 匹配时返回,生日,如 1990-05-20 |
sex |
string | 匹配时返回,性别,如 男 / 女 |
nativePlace |
string | 匹配时返回,籍贯 |
msg |
string | 结果描述,如 匹配 |
成功响应结构示例:
{
"code": 0,
"birthday": "1990-05-20",
"sex": "男",
"nativePlace": "北京市",
"msg": "匹配"
}
上述字段为典型结构示例,实际字段名与取值以接口实时返回为准。
5. 错误码与排查
接口通过返回体 code 字段标识结果,常见取值如下:
| 错误码 | 含义 | 原因 | 解决办法 |
|---|---|---|---|
| 0 | 匹配 | 姓名与身份证号一致 | 可读取附加信息 |
| 1 | 身份证与姓名不匹配 | 填写信息不一致 | 核对用户填写的姓名与身份证号 |
| 2 | 无此身份证号码 | 身份证号不存在 | 检查身份证号是否正确 |
| 12 | 身份证号码不合法 | 格式或校验位错误 | 校验身份证号格式与校验位 |
| 101 | 验证信息重复输入 | 短时重复提交 | 间隔 60 秒以上再次核验,业务侧做去重 |
| 103 | 24 小时内相同姓名或卡号核验次数超限 | 频控触发 | 做本地缓存,避免短时重复调用 |
| 其他 | 参数错误 | 参数缺失或格式错误 | 检查 name / idcard 是否传入且格式正确 |
失败响应结构示例:
{
"code": 1,
"msg": "身份证与姓名不匹配"
}
通用排查步骤:
- 确认 Header 已正确携带
Authorization: APPCODE <凭证>。 - 确认
name与idcard均已传入且格式正确。 - 出现 101 / 103 时,优先在业务侧做幂等去重与缓存,而非盲目重试。
- 非 200 响应不计费,但参数填错导致
code非 0 仍会消耗次数。
6. 频控与合规
- 频控限制:相同姓名或卡号在短时间内重复提交会返回错误码 101,需间隔 60 秒以上;24 小时内相同姓名或卡号核验次数超限返回错误码 103。建议在业务侧做本地去重与缓存。
- 配额与 QPS:单账户 QPS 上限、每日配额以所用网关控制台的实时配置为准;高并发场景应提前评估容量。
- 数据来源与边界:接口对接权威身份证数据库做实时核验、零缓存;返回结果仅供业务参考,不对业务决策承担保证责任,涉及资金、合同等关键场景应结合其他风控手段。
- 敏感信息处理:接口不返回身份证头像、证件影像等敏感影像数据;调用应通过加密通道传输,凭证需妥善保管,避免明文落库或前端暴露。
7. 多语言接入示例
以下示例均使用 APPCODE 鉴权,调用路径 /idcardAudit,必填参数 name 与 idcard。示例中的调用地址为裸域名(实际请求请补全协议头 https://),凭证以 YOUR_APPCODE 占位,请替换为实际凭证。
7.1 Java
public static void main(String[] args) {
String host = "idcaed222.market.alicloudapi.com";
String path = "/idcardAudit";
String method = "GET";
String appcode = "YOUR_APPCODE";
Map<String, String> headers = new HashMap<String, String>();
// Header 格式(中间是英文空格)为 Authorization:APPCODE 你的AppCode
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("name", "张三");
querys.put("idcard", "110101199003071234");
try {
// HttpUtils 工具类请从网关官方示例中获取后引入
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
7.2 curl
curl -i --get --include 'https://idcaed222.market.alicloudapi.com/idcardAudit?name=张三&idcard=110101199003071234' \
-H 'Authorization:APPCODE YOUR_APPCODE'
7.3 PHP
<?php
$host = "idcaed222.market.alicloudapi.com";
$path = "/idcardAudit";
$appcode = "YOUR_APPCODE";
$headers = array(
"Authorization:APPCODE " . $appcode
);
$querys = http_build_query(array(
"name" => "张三",
"idcard" => "110101199003071234"
));
$url = "https://" . $host . $path . "?" . $querys;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
7.4 Python
import requests
host = "idcaed222.market.alicloudapi.com"
appcode = "YOUR_APPCODE"
resp = requests.get(
f"https://{host}/idcardAudit",
params={
"name": "张三", "idcard": "110101199003071234"},
headers={
"Authorization": f"APPCODE {appcode}"},
)
print(resp.status_code, resp.text)
7.5 Node.js
const https = require("https");
const {
URLSearchParams } = require("url");
const host = "idcaed222.market.alicloudapi.com";
const appcode = "YOUR_APPCODE";
const params = new URLSearchParams({
name: "张三",
idcard: "110101199003071234",
}).toString();
const options = {
hostname: host,
path: `/idcardAudit?${
params}`,
method: "GET",
headers: {
Authorization: `APPCODE ${
appcode}` },
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => (data += chunk));
res.on("end", () => console.log(data));
});
req.on("error", (e) => console.error(e));
req.end();
8. 接入最佳实践
- 重试策略:仅对网络超时、5xx 等可重试错误进行重试;对 4xx(含参数错误、频控 101/103)不应盲目重试,应先修正参数或等待间隔。
- 幂等去重:对相同「姓名 + 身份证号」的核验结果做本地缓存,既降低频控(101/103)触发概率,也减少重复计费。
- 超时控制:为 HTTP 客户端设置合理的连接与读取超时(如 3–5 秒),避免请求堆积。
- 异常兜底:解析返回前先判断 HTTP 状态码与
code;对缺失字段、非预期结构做好默认值与告警,避免空指针。 - 秘钥安全管理:
APPCODE凭证仅存放于服务端环境变量或密钥管理组件,禁止写入前端代码、客户端或公开仓库;定期轮换。
9. 技术 FAQ
Q1:必须传哪些参数?
A:name 与 idcard 二者均为必填,缺失会返回参数错误。
Q2:鉴权失败一般是什么原因?
A:常见为 Header 未携带或格式错误(应为 Authorization: APPCODE <凭证>,中间英文空格),或凭证无效 / 过期。
Q3:返回 code 非 0 是否计费?
A:仅 HTTP 200 的成功响应扣减次数;非 200 不计费。但参数填错导致返回 200 且 code 非 0 时,仍会消耗次数。
Q4:错误码 101 / 103 怎么处理?
A:业务侧做幂等去重与本地缓存,避免短时重复调用;101 需间隔 60 秒以上再次核验。
Q5:支持哪些开发语言?
A:Java、PHP、Python、Node.js、curl 等均可调用,示例见第 7 节。
Q6:匹配成功时返回哪些附加信息?
A:典型情况下返回生日、性别、籍贯等字段,具体以接口实际返回为准。
Q7:接口返回无附加信息是什么原因?
A:非匹配或异常时通常仅返回 code 与 msg,不返回生日等附加字段,属正常表现。
Q8:如何控制调用成本?
A:接口按调用次数计费,具体计费标准以所用平台公示及控制台配置为准;通过本地缓存与去重可有效减少重复调用。
10. 小结
身份证二要素认证接口以「姓名 + 身份证号」双要素实时核验为核心,采用 GET /idcardAudit 调用、APPCODE 鉴权,匹配时返回生日、性别、籍贯等结构化信息,支持多语言接入。接入时需重点关注两点:一是频控约束(重复提交触发 101、24 小时超限触发 103),应在业务侧做幂等去重与本地缓存;二是凭证安全,APPCODE 须仅存放于服务端。请求参数填错同样消耗次数,调试阶段建议使用测试调用验证。返回以 code 字段区分匹配、不匹配与异常,按第 5 节错误码表逐项处理即可。