银行卡归属地/开户行/卡类型查询 API 接入实战
本文面向首次接入的开发者,介绍「银行卡归属地/开户行/类型查询」接口的能力、参数、调用方式、返回结构、在线调试与常见错误排查。内容基于该接口的真实返回字段,不夸大功能,供工程集成参考。
1. 技术简介
银行卡归属地/开户行/类型查询接口是一个金融数据服务。输入一张银行卡号,接口基于银联渠道与 BIN 段信息,返回该卡的归属地区、发卡行名称、卡种、银行卡产品名称(品牌)、银行联系电话电话、银行官网,以及(可选的)BIN 码与银联 Luhn 效验结果。
该接口覆盖全国 500 余家银行,支持带银联标识的银行卡。它把「一串数字卡号 → 行名 / 归属地 / 卡种」的解析封装成一次 HTTP 请求,业务侧无需自行维护会不定期变化的银行 BIN 段表。

2. 能力概览
| 能力项 | 说明 |
|---|---|
| 归属地查询 | 返回卡号对应的「省 / 自治区 - 城市」粒度地区 |
| 开户行查询 | 返回发卡行名称与规范化行名 |
| 卡类型查询 | 返回卡种(借记卡 / 信用卡等)与卡品牌 |
| BIN 码与 Luhn | 可选返回 BIN 码、BIN 码长度、卡号长度、是否通过银联 Luhn 效验 |
| 覆盖范围 | 全国 500 余家银行,银联渠道 |
| 未查到策略 | 归属地查询失败不收费 |
输入为单个卡号,输出为结构化 JSON。可选开关 needBin 控制是否返回 BIN 相关字段。
3. 适用场景
- 资金结算与对账:在支付、结算环节把卡号翻译成行名与归属地,省去人工逐条核对。
- 风控校验:判断卡种(借记 / 信用)是否落在业务允许范围内。
- 用户端展示:在收银台 / 绑卡页展示银行 logo、联系电话电话,提升用户确认体验。
- 多要素核验前置:作为「姓名 + 身份证 + 卡号 + 手机」多要素核验的卡号信息补充。
- 小程序 / APP 集成:在绑卡流程中一次性拿到卡信息,减少前端二次查询。
4. 接入流程
- 获取鉴权凭据:在控制台创建应用,获取 AppCode。调用时通过请求头
Authorization: APPCODE <appcode>携带。 - 确认调用入口:该接口以
30-7接入点提供,请求方式支持 GET / POST,返回 JSON。 - 准备参数:必填
cardNum(银行卡号);可选needBin(是否返回 BIN 与 Luhn,默认 0 不返回)。 - 发起请求:GET 把参数放在 query,POST 把参数放在 body 并设置
Content-Type: application/x-www-form-urlencoded。 - 解析返回:先看外层
showapi_res_code判请求是否被受理,再看内层showapi_res_body.ret_code判本次是否查到。

下文代码示例中的
appcode为占位符(YOUR_APPCODE),请替换为你在控制台获取的真实凭据;示例仅保留调用路径占位,完整调用地址见控制台。
5. 调用示例与返回结构
5.1 GET 请求示例(Java 风格示意)
// 请求头:Authorization: APPCODE YOUR_APPCODE
// query: cardNum=6228480402564890018&needBin=1
// path: /30-7 (完整调用地址见控制台)
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> query = new HashMap<>();
query.put("cardNum", "6228480402564890018");
query.put("needBin", "1");
5.2 返回字段说明
| 字段 | 类型 | 含义 | 是否一定返回 |
|---|---|---|---|
ret_code |
整数 | 0 成功,其他失败 | 是 |
area |
String | 归属地区 | 是 |
cardType |
String | 银行卡种 | 是 |
brand |
String | 卡产品名称(品牌) | 是 |
bankName |
String | 银行名称 | 是 |
formatBankName |
String | 规范化银行名称 | 是 |
tel |
String | 银行联系电话电话 | 是 |
url |
String | 银行官网 | 是 |
logo |
String | 银行标志 | 部分银行可能为空 |
simpleCode |
String | 银行简码 | 不一定有 |
card_bin |
String | 银行卡 BIN 码 | 仅 needBin=1 |
bin_digits |
String | BIN 码长度 | 仅 needBin=1 |
card_digits |
String | 卡号长度 | 仅 needBin=1 |
isLuhn |
String | 是否通过银联 Luhn 效验(1 是 / 0 否 / 空 不支持) | 仅 needBin=1 |
外层还有 4 个系统级字段:showapi_res_code(请求是否被受理)、showapi_res_error(外层错误信息)、showapi_res_id(本次请求唯一标识)、showapi_fee_num(本次调用计数)。
5.3 完整 JSON 返回样例
{
"showapi_res_code": 0,
"showapi_res_id": "示例请求ID",
"showapi_fee_num": 1,
"showapi_res_body": {
"ret_code": 0,
"area": "示例地区",
"cardType": "借记卡",
"brand": "示例卡品牌",
"bankName": "示例银行",
"formatBankName": "示例银行(规范化)",
"tel": "银行联系电话电话",
"url": "银行官网占位",
"logo": "银行标志占位",
"cardNum": "6228480402564890018",
"card_bin": "622848",
"bin_digits": "6",
"card_digits": "19",
"isLuhn": "1"
}
}

6. 在线调试实录
在控制台「在线调试」模块输入一个真实卡号 6228480402564890018 并勾选 needBin=1,返回:
showapi_res_code = 0:请求被正常受理;showapi_res_body.ret_code = 0:本次查到结果;area返回「省/城市」粒度归属地;bankName/formatBankName返回发卡行;card_bin、bin_digits、card_digits、isLuhn因needBin=1一并返回。
解读:外层与内层两层状态码都要判断——外层判断「请求是否受理」,内层 ret_code 判断「是否查到归属地」。两层都为 0 才算一次成功且查到结果的调用。

7. 调用限制与规范
- 未查到不扣费:归属地查询失败时不收费,适合做前置校验。
needBin的影响:返回 BIN 与 Luhn 字段会增加处理耗时,仅在需要时开启。- 数据刷新:银行卡 BIN 段数据每年不定期更新,以接口方实际维护为准。
- QPS / 每日配额:具体数值以控制台实时配置为准,批量调用前先核对自己账户的配额。
- 合规:卡号属敏感信息,传输走 HTTPS;落库与展示按金融数据合规要求脱敏处理,不用于任何违法违规用途。
8. 能力边界与免责声明
- 支持:带银联标识的银行卡,全国 500 余家银行的归属地 / 卡种 / 品牌 / 行名查询。
- 不支持:非银联渠道卡、个别新发行或地方小银行的卡可能查不到归属地(此时不扣费)。
- 边界:返回的是「卡号对应的静态 BIN 段信息」,不代表持卡人身份;身份核验需配合姓名 / 身份证多要素接口。
- 免责:数据仅供参考,不用于信贷审批等最终业务决策;以实际发卡行为准。

9. 错误码排查
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
外层 showapi_res_code != 0 |
AppCode 无效 / 权限不足 / 未购买资源包 | 检查鉴权凭据与资源包额度 |
内层 ret_code != 0 |
该卡号未查到归属地 | 按「未查到不扣费」处理,记录 remark(若有) |
| 缺少 BIN / Luhn 字段 | 未传 needBin=1 |
需要时显式传 needBin=1 |
| 请求超时 | 开启 BIN 后耗时增加 / 网络波动 | 控制 needBin 使用频率,加超时与重试 |
10. 技术 FAQ
Q1:一次调用能同时拿到归属地、行名和卡种吗?
能。一次请求即可返回 area、bankName / formatBankName、cardType、brand 等核心字段。
Q2:BIN 码和 Luhn 是不是默认返回?
不是。默认不返回,需显式传 needBin=1 才会返回 card_bin、bin_digits、card_digits、isLuhn。
Q3:查不到归属地会扣费吗?
不会。归属地查询失败的请求不收费。
Q4:能用于判断持卡人是谁吗?
不能。返回的是卡号对应的银行静态信息,不涉及持卡人身份;身份核验需用多要素接口。
Q5:logo / simpleCode 有时为空正常吗?
正常。部分银行这两项可能返回空字符串或不返回,属正常现象。

11. 内容小结
「银行卡归属地/开户行/类型查询」接口把卡号到行名、归属地、卡种的解析封装成一次 HTTP 请求,覆盖全国 500 余家银联渠道银行,未查到归属地不收费。工程接入时注意三点:
- 鉴权走
Authorization: APPCODE,请求头携带 AppCode; - 判断结果先看外层
showapi_res_code,再看内层ret_code; - 需要 BIN / Luhn 时显式传
needBin=1,并评估其带来的耗时。
结合多要素核验、资金结算、风控与小程序 / APP 绑卡等场景,可作为一次通用的卡信息解析能力接入业务链路。