在用户注册、金融风控、行程验证等场景下,往往需要对「姓名 + 身份证号」这两个要素进行一致性校验,并获取用户的性别、生日、籍贯等信息。本文以阿里云市场上身份证二要素核验接口为例,演示如何在 Python 中快速完成对接。
接口概览
请求方式:GET
必选参数:
name:姓名(UTF-8 URL 编码)
idcard:身份证号
示例请求 URL
响应示例(JSON)
Python 调用示例
接口地址:https://market.aliyun.com/apimarket/detail/cmapi00067376
jsimport os
import sys
import requests
def check_idcard(name: str, idcard: str) -> dict:
"""
调用身份证二要素核验接口,返回解析后的JSON结果。
"""
# 1. 环境变量中读取 APP_CODE,避免硬编码
app_code = os.getenv("ALIYUN_APPCODE")
if not app_code:
print("请先在环境变量中设置 ALIYUN_APPCODE!", file=sys.stderr)
sys.exit(1)
# 2. 准备请求
url = "https://tscheck2.market.alicloudapi.com/idcard"
headers = {
"Authorization": f"APPCODE {app_code}"
}
params = {
"name": name,
"idcard": idcard
}
# 3. 发送 GET 请求
try:
resp = requests.get(url, headers=headers, params=params, timeout=5)
resp.raise_for_status()
except requests.RequestException as e:
print(f"请求失败: {e}", file=sys.stderr)
return {}
# 4. 解析并返回 JSON
return resp.json()
if __name__ == "__main__":
# 示例调用
result = check_idcard(name="张三", idcard="330333333333333333")
if not result:
sys.exit(1)
# 根据 code 字段判断结果
code = result.get("code")
if code == 1:
data = result.get("data", {})
print("身份核验成功:")
print(f" 姓名 : {data.get('name')}")
print(f" 身份证号 : {data.get('idcard')}")
print(f" 性别 : {data.get('sex')}")
print(f" 生日 : {data.get('birthday')}")
print(f" 户籍地 : {data.get('address')}")
else:
print(f"核验失败,状态码:{result.get('code')},描述:{result.get('msg')}")
运行说明
在系统环境变量中设置
执行脚本
关键字段说明
code:业务响应码
1 — 一致
2 — 不一致
3 — 无记录
msg:操作消息
data:当 code=1/2/3 时均返回该对象,包含:
name、idcard
res:与 code 对应
description:文字描述
sex、birthday、address
常见问题及排查
403 错误
检查 AppCode 是否正确
确保已订阅该 API 并通过审核
超时/网络错误
检查网络连通性
调整 timeout 设置或重试机制
返回 code=3
表示无匹配记录,可根据业务需求决定是否放行或补充其他验证方式
通过以上示例,您可以快速在 Python 环境中集成「身份证二要素核验」功能,实现对用户身份信息的自动化校验。后续可结合缓存、限流、并发等策略,进一步优化调用性能和稳定性。祝开发愉快!