银行卡二三四要素实名认证接口技术文档
本文以接口调用视角整理接入方式、请求/响应结构与错误码,供开发者在业务系统中集成参考。鉴权统一使用
appcode,请求头格式为Authorization: APPCODE <appcode>。具体调用地址、配额与实时配置以对应服务控制台为准。
一、接口简介
银行卡二三四要素实名认证接口用于核验银行卡持卡人身份信息与该卡在银行端预留信息的一致性。接口按要素粒度提供三个独立接入点:
- 二要素:银行卡号 + 姓名
- 三要素:银行卡号 + 姓名 + 身份证号
- 四要素:银行卡号 + 姓名 + 身份证号 + 绑定手机号
核验结果以 JSON 返回,支持按需返回银行卡归属地(发卡行、卡种、归属地区、客服电话、官网、卡号片段等)。接口通过 HTTPS GET 调用,请求头携带 Authorization: APPCODE <appcode> 完成鉴权,返回字段结构清晰,便于后端解析与分支处理。
二、功能特性
| 特性 | 说明 |
|---|---|
| 三档要素组合 | 同一服务按要素粒度分为二要素、三要素、四要素三个接入点,调用方按所需核验强度选择 |
| 可选返回归属地 | 请求参数 needBelongArea=true 时,响应 belong 字段携带发卡行、卡种、归属地区、客服电话、官网、卡号片段 |
| 标准化鉴权 | 请求头 Authorization: APPCODE <appcode>,密钥统一为 appcode |
| 多语言接入 | 提供 Java、PHP、Python、JavaScript 调用示例 |
| 错误码体系 | 区分卡状态异常、持卡人信息不符、参数格式错误、风控频次超限等情形 |
三、适用场景
以下场景需要在业务系统中确认「持卡人身份与银行卡信息一致」,可对应选择要素接入点:
- 绑卡校验:用户首次绑卡或更换银行卡时,调用二要素 / 三要素确认姓名与卡号是否一致。
- 借贷与信用卡预审:用户提交申请时,调用三要素 / 四要素核验姓名、身份证号、银行卡号的一致性。
- 提现一致性确认:用户发起提现或大额转账时,调用四要素做最终一致性确认。
- 准入审核:网约车、共享住宿、设备租赁等平台对司机、房东等角色做身份与结算账户核验。
- 政务民生线上办理:社保、医保、津贴发放等场景确认办事人身份与本人银行账户一致。
- 企业内部系统:ERP、CRM、HR 系统在工资发放、报销打款等环节核验账户信息。
四、接口说明
| 特性 | 说明 |
|---|---|
| 接入点覆盖 | 银行卡二要素、银行卡三要素、银行卡四要素 |
| 要素组合 | 二要素:银行卡号 + 姓名;三要素:+ 身份证号;四要素:+ 绑定手机号 |
| 请求方式 | HTTPS GET,统一 Query 参数传递 |
| 返回格式 | JSON,字段清晰、易解析 |
| 响应速度 | 实时联网核查(以商品页指标为准) |
| 银行卡归属地 | 可选返回,参数 needBelongArea=true 时携带 |
| 适用对象 | 企业用户、开发者、系统服务商 |
| 数据来源 | 实时联网核查 |
| 接入形态 | 标准 API、在线调试、API 网关鉴权 |
| 鉴权密钥 | Authorization: APPCODE <appcode> |
| 套餐梯度 | 1 次 / 50 次 / 100 次 / 1000 次 / 5000 次 / 1 万次 / 2 万次 / 5 万次 / 10 万次 |
| 风控约束 | 同卡 / 同身份证 24 小时内验证次数不超过 10 次 |
| 适用系统 | Web / H5 / iOS / Android / 小程序 / ERP / 后台服务 |
五、接入流程
步骤 1:获取调用凭证
在云市场对应服务页选择规格并完成下单,获取 AppCode。

步骤 2:阅读接口文档
确认各接入点的请求参数、必填项、返回字段与错误码表,建议在 API 调试区先完成一次联调。

步骤 3:选择接入点
| 接入点 | 必填入参 | 返回重点 |
|---|---|---|
| 银行卡二要素 | 银行卡号、姓名 | 核验结果 + 银行卡归属地(可选) |
| 银行卡三要素 | 银行卡号、姓名、身份证号 | 核验结果 + 银行卡归属地(可选) |
| 银行卡四要素 | 银行卡号、姓名、身份证号、绑定手机号 | 核验结果 + 银行卡归属地(可选) |
步骤 4:发起调用
构造 HTTPS GET 请求,按接入点传入必填字段,请求头携带 Authorization: APPCODE <appcode> 提交核验。
步骤 5:解析结果
根据返回的 code 与 msg 判断核验状态,并将 belong 中的银行卡归属地信息用于前端展示或风控二次校验。
六、调用示例
示例 1:电商首次绑卡(二要素)
用户在电商平台填写姓名 + 银行卡号发起绑卡,后端调用二要素接口。返回 code: 0 且 msg: 资料匹配,账号正常 时,前端展示「绑卡成功」并保存卡信息;返回 code: 5 时提示「姓名与卡号不匹配,请核对后重试」。
示例 2:消费金融借贷预审(三要素)
用户在金融 App 提交借贷申请,后端调用三要素接口核验姓名、身份证号、银行卡号是否一致。返回 code: 0 进入下一审批环节;返回 code: 5 拒绝并提示「信息不一致」。
示例 3:第三方支付大额提现(四要素)
用户在钱包类 App 发起大额提现,后端调用四要素接口做最终一致性核验。返回 code: 0 且 belong.bankName 与绑卡记录一致时放款;返回 code: 86 提示「持卡人信息有误」并暂停放款进入人工审核。

示例 4:共享经济司机准入(四要素)
网约车平台在司机注册时调用四要素接口核验司机身份与结算账户;通过后将 belong 字段缓存到司机档案用于后续运营核对。
七、请求与响应结构
请求参数(Query)
以四要素为例,必填参数如下:
acct_pan= 6228********8888(银行卡号,必填)acct_name= 王五(姓名,必填)cert_type= 01(证件类型,必填,01 表示身份证)cert_id= 5226********2675(身份证号,必填)phone_num= 18480***1549(绑定手机号,必填)needBelongArea= true(是否返回归属地,选填)
响应结构
响应体分为三层:
- 调用层:标识请求是否被网关正常接收。
- 业务层:本次核验的业务结果,字段为
code/msg/ret_code/error。 - 归属地层(可选):银行卡归属地
belong,仅当needBelongArea=true时返回。

成功返回样例
{
"code": "0",
"msg": "资料匹配,账号正常",
"ret_code": "0",
"error": "",
"belong": {
"area": "广东省 - 广州市",
"tel": "95599",
"brand": "金穗通宝卡(银联卡)",
"bankName": "中国农业银行",
"cardType": "借记卡",
"url": "www.abchina.com",
"cardNum": "6228**********8888"
}
}
code: 0 表示四要素全部一致。belong.area 为归属地,belong.bankName 为发卡行,belong.cardType 区分借记卡 / 贷记卡,可用于前端卡片渲染、对账与风控二次校验。

失败返回样例
{
"ret_code": -1,
"error": "24小时内相同姓名或卡号核验次数超限",
"code": 103,
"msg": "24小时内相同姓名或卡号核验次数超限",
"nameCount": 1,
"bankCount": 11
}

八、接入代码示例
鉴权密钥统一为 appcode,请求头格式
Authorization: APPCODE <appcode>。实际调用地址以商品页 API 调试区为准。
8.1 Java 示例(GET)
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
public class BankCardVerify {
public static void main(String[] args) {
String host = "{API_HOST}"; // 以商品页 API 调试区为准
String path = "/bank4";
String method = "GET";
String appcode = "你自己的AppCode";
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("acct_pan", "6228xxxxxxxx8888");
querys.put("acct_name", "王五");
querys.put("cert_type", "01");
querys.put("cert_id", "5226xxxxxxxx2675");
querys.put("phone_num", "18480xxx1549");
querys.put("needBelongArea", "true");
try {
// HttpUtils 请从阿里云 API 网关 Demo 仓库获取
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
System.out.println(response.toString());
// System.out.println(EntityUtils.toString(response.getEntity()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
8.2 PHP 示例
<?php
$host = "{API_HOST}"; // 以商品页 API 调试区为准
$path = "/bank4";
$appcode = "你自己的AppCode";
$url = $host . $path . "?" . http_build_query([
"acct_pan" => "6228xxxxxxxx8888",
"acct_name" => "王五",
"cert_type" => "01",
"cert_id" => "5226xxxxxxxx2675",
"phone_num" => "18480xxx1549",
"needBelongArea"=> "true",
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: APPCODE " . $appcode
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
8.3 Python 示例
import urllib.request
import urllib.parse
host = "{API_HOST}" # 以商品页 API 调试区为准
path = "/bank4"
appcode = "你自己的AppCode"
params = urllib.parse.urlencode({
"acct_pan": "6228xxxxxxxx8888",
"acct_name": "王五",
"cert_type": "01",
"cert_id": "5226xxxxxxxx2675",
"phone_num": "18480xxx1549",
"needBelongArea": "true",
})
url = f"{host}{path}?{params}"
req = urllib.request.Request(url, method="GET")
req.add_header("Authorization", f"APPCODE {appcode}")
with urllib.request.urlopen(req) as resp:
print(resp.read().decode("utf-8"))
8.4 JavaScript(Node.js)示例
const https = require("https");
const host = "{API_HOST}"; // 以商品页 API 调试区为准
const path = "/bank4?acct_pan=6228xxxxxxxx8888&acct_name=王五&cert_type=01&cert_id=5226xxxxxxxx2675&phone_num=18480xxx1549&needBelongArea=true";
const appcode = "你自己的AppCode";
const options = {
hostname: host.replace(/^https?:\/\//, ""),
path: path,
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.end();
九、调用限制与规范
| 限制项 | 说明 |
|---|---|
| 单账户 QPS | 以控制台实时配置为准 |
| 每日配额 | 随购买套餐配额耗尽即停止调用,不超额调用 |
| 批量规则 | 单次请求仅支持单条核验,高频场景建议业务端做并发控制 |
| 高频注意事项 | 同卡 / 同身份证 24 小时内验证次数不超过 10 次,否则返回「24 小时内相同姓名或卡号核验次数超限」且仍会扣费 |
| 风控约束 | 触发银联风控后可能锁定账户,以控制台实时配置为准 |
| 字符编码 | 全 UTF-8,姓名支持中文及少数民族姓名,特殊字符需做 URL Encode |
| 兼容性 | 适配 Web / H5 / iOS / Android / 小程序 / ERP / 后台服务等主流运行环境 |
| 频次限制参考 | 连续错误 3 次则第 4 次被锁定;当日总次数超 10 次后锁定(参考银联风控规则,以实际控制台为准) |
| 不支持场景 | 信用卡 / 境外卡 / 二类户等部分特殊卡类型可能不支持验证,以实际返回为准 |
| 合规要求 | 仅可用于风控实名核验场景,不得用于非法身份买卖或绕过实名制管理 |
十、服务参考指标
| 指标项 | 参考值 |
|---|---|
| 平均响应时间 | 近 7 天约 1.1 秒(以商品页指标为准) |
| 年度可用率 | 近一月 SLA 可达 100%(以商品页指标为准) |
| QPS 并发上限 | 以控制台实时配置为准 |
| 数据刷新周期 | 实时联网核查,零缓存 |
| 故障响应时间 | 工作日 9:00 - 22:00 在线技术支持,故障类工单按服务协议响应 |
| 重试机制 | 客户端可针对网络异常做有限重试;频次超限 / 信息错误类错误无需重试 |
| 客服时间 | 售前售后客服工作日 9:00 - 22:00 |
上述指标为参考值,实际以商品页与控制台实时数据为准,不作为服务等级承诺。
十一、计费说明
| 版本 | 价格 | 配额 | 适用场景 |
|---|---|---|---|
| 测试专享 | 0.2 元 | 1 次 | 接入测试、功能验证 |
| 前期专享 | 9.9 元 | 50 次 | 小流量试运行、PoC 阶段 |
| 基础包 | 22 元 | 100 次 | 中小开发者试运营 |
| 标准包 | 220 元 | 1000 次 | 常规业务量、灰度上线 |
| 企业包 | 1050 元 | 5000 次 | 中型企业级调用 |
| 大客户包 | 2100 元 | 1 万次 | 大流量业务、批量调用 |
| 集团包 | 4100 元 | 2 万次 | 集团级多业务线 |
| 特惠包 | 10000 元 | 5 万次 | 高并发批量 |
| 旗舰包 | 20000 元 | 10 万次 | 超大规模、长期合作 |
计费按所选套餐配额,配额耗尽即停止调用。按 HTTP 200 状态码扣费,非 200 不扣费。余量预警按「(历史总余量 + 当前订购)× 20%」触发提醒,到期前 6-7 天再提醒一次。发票申请:满 50 元可申请电子普通发票,满 200 元可申请电子专用发票。
注意事项:根据银联风控要求,同卡或同身份证 24 小时内验证不能超过 10 次,否则返回「24 小时内相同姓名或卡号核验次数超限」且仍会扣费(以控制台实时配置为准)。
十二、能力边界
| 维度 | 边界说明 |
|---|---|
| 支持卡类型 | 借记卡、贷记卡(信用卡)、预付费卡等带银联标识的银行卡 |
| 支持要素 | 二要素、三要素、四要素三档;证件类型目前仅支持身份证(cert_type=01) |
| 支持地区 | 全国所有银联标识银行卡 |
| 不支持场景 | 境外卡、二类户、虚拟卡、纯企业账户等可能不被覆盖,以实际返回为准 |
| 数据时效 | 实时联网核查,零缓存命中 |
| 加密传输 | 支持 AES/ECB/PKCS5Padding 加密 + Base64 + URLEncode 三步加密方式(详见商品页加密版使用说明) |
| 私有化部署 | 视具体商务对接与套餐情况提供,以售前沟通为准 |
| 免责声明 | 本接口数据仅供业务方风控参考,不对业务决策承担责任;信息以银行端实际数据为准 |
十三、行业接入参考
| 行业 | 接入方案 | 核验内容 |
|---|---|---|
| 电商平台 | 首次绑卡、订单支付提现环节接入二要素 / 四要素 | 姓名 + 卡号,或姓名 + 身份证 + 卡号 + 手机号一致性 |
| 互联网金融 | 借贷申请、信用卡发卡环节接入三要素 / 四要素 | 灰名单排查 + 反欺诈一致性核验 |
| 第三方支付 | 用户提现、商户结算环节接入四要素 | 强一致兜底 + 银行卡归属地二次校验 |
| 共享经济 | 司机 / 骑手 / 房东准入审核环节接入四要素 | 实名 + 实人 + 实卡三合一把控 |
| 政务民生 | 社保、医保、津贴发放线上办理环节接入三要素 | 身份与本人银行账户一致性确认 |
| 企业 ERP | 员工工资发放、客户回款等环节接入二要素 | 银行账户信息准确核验 |
| 物流配送 | 骑手注册、运费结算环节接入三要素 | 真实身份 + 真实结算账户核验 |
| 跨境收款 | 外贸收款方账户核验环节接入四要素 | 提现强一致校验 |
上表为典型接入模式整理,非效果承诺;实际收益取决于业务侧集成方式与风控策略。
十四、错误码与排查
| 错误码 | 错误信息 | 描述 | 排查方向 |
|---|---|---|---|
| 0 | 资料匹配,账号正常 | 一致 | 无需排查 |
| 4 | 此卡被没收 | 卡状态异常 | 提示用户联系发卡行 |
| 5 | 不匹配 | 持卡人 / 卡号 / 证件 / 手机号与银行预留不一致 | 引导用户核对信息 |
| 14 | 无效卡号 | 卡号不存在或格式错误 | 检查卡号位数与 Luhn 校验 |
| 15 | 此卡无对应发卡方 | 发卡行未接入 | 提示换卡或联系客服 |
| 34 | 作弊卡,吞卡 | 银行判定为风险卡 | 提示用户联系发卡行 |
| 40 | 发卡方不支持的交易 | 该卡不支持此类核验 | 引导换卡或换要素组合 |
| 41 | 此卡已经挂失 | 卡已挂失 | 提示用户联系发卡行 |
| 43 | 此卡被没收 | 卡状态异常 | 提示用户联系发卡行 |
| 54 | 该卡已过期 | 卡片有效期已过 | 提示用户更换银行卡 |
| 57 | 发卡方不允许此交易 | 发卡行限制 | 提示用户联系发卡行 |
| 62 | 受限制的卡 | 卡被风控 | 提示用户联系发卡行 |
| 75 | 密码错误次数超限 | 银行风控 | 提示用户联系发卡行 |
| 82 | 身份证号码有误 | 证件号格式或内容错误 | 检查证件号 |
| 83 | 银行卡号码有误 | 卡号格式错误 | 检查卡号位数 |
| 84 | 手机号码输入格式有误 | 手机号格式错误 | 检查手机号格式 |
| 86 | 持卡人信息有误 | 信息不匹配 | 引导用户核对 |
| 96 | 交易失败请重试 | 渠道瞬时异常 | 客户端做有限重试 |
| 100 | 渠道异常,请稍后再试 | 数据源临时不可用 | 稍后重试 |
| 103 | 24 小时内相同姓名或卡号核验次数超限 | 触发银联风控 | 等待次日解锁或更换要素组合 |
排查思路:先确认 HTTP 状态码是否为 200(只有 200 才扣费),再根据 code 字段判断是参数问题、风控问题还是渠道问题;同名同卡 24 小时内不可超过 10 次核验;如需处理大额调用,请联系商务走大客户包。
十五、常见问题
Q1:支持哪些银行卡类型?
A:支持全国所有带银联标识的银行卡,包括借记卡与贷记卡(信用卡)。境外卡、二类户、虚拟卡等部分特殊卡类型可能不被覆盖,以实际接口返回为准。
Q2:是否有测试额度?
A:提供 0.2 元 / 1 次的「测试专享」套餐用于接入测试;生产环境按所选套餐计费,HTTP 200 状态码才扣费,非 200 不扣费。
Q3:响应速度和稳定性如何?
A:实时联网核查,零缓存命中;近一月 SLA 与近 7 天平均响应时间以商品页指标为准,作为参考值而非承诺。
Q4:支持批量和高并发吗?
A:企业级套餐已为大流量业务设计;具体 QPS 上限以控制台实时配置为准。
Q5:数据刷新频率是多久?
A:实时联网核查,零缓存命中机制,数据与银行端实时同步。
Q6:报错或无数据怎么排查?
A:先确认 HTTP 状态码(仅 200 扣费),再根据 code 字段判断是参数错误、风控超限还是渠道异常;详见错误码表。
Q7:支持私有化部署吗?
A:支持大客户包与商务对接场景,可提供私有化部署、定制开发、专属支持;具体以售前沟通为准。
Q8:适合哪些系统对接?
A:Web、H5、iOS、Android、小程序、ERP、CRM、HR 系统、后台服务等主流运行环境均已支持,Java / PHP / Python / JS 示例完备。
Q9:计费如何控制?
A:按所选套餐配额,配额耗尽即停止调用;套餐内单价透明,超出部分按所选档位继续扣费或停止服务(以控制台策略为准)。
Q10:需要什么资质才能接入?
A:企业用户、开发者、系统服务商均可在云市场开通;高并发或私有化场景建议先与售前沟通再下单。
十六、小结
银行卡二三四要素实名认证接口按要素粒度分为三个接入点:二要素适用于注册首步核验与错填排查;三要素强化「姓名 + 身份证 + 卡号」一致性,常用于借贷预审;四要素叠加绑定手机号做强一致校验,用于支付提现与高风险操作。三档共享鉴权方式(请求头 Authorization: APPCODE <appcode>)、错误码体系与计费档位,可在同一控制台完成开通、调试、监控与扩容。
接入时重点注意三点:一是 HTTP 200 才扣费,非 200 不扣费;二是同名同卡 24 小时内不可超过 10 次,否则触发银联风控且仍会扣费;三是套餐按「1 次到 10 万次」梯度设计,可按业务规模平滑扩容。返回结构上,外层为网关状态码与流水,业务层 code / msg / ret_code 标识核验结果,belong 字段在 needBelongArea=true 时返回银行卡归属地(地区、银行、卡种、客服、官网、卡号片段),可同时用于前端展示与风控二次校验。完整请求参数、错误码表与计费档位以商品页为准,发布前请与控制台实时配置核对。