国内银行信息查询 · 开放 API

面向外部程序的银行联行号 / 分支机构 / 总行查询接口 · 文档版本 v1

一、概述

本接口提供国内银行业金融机构的联行号(CNAPS 号)、分支机构与总行信息的标准化查询能力,供外部系统以编程方式调用。所有接口返回统一的 JSON 结构,支持按关键字、省市、总行、联行号等多维度检索。

📌 适用场景

银行开户行自动补全、跨行转账联行号校验、金融系统集成时的机构数据同步等。

二、基础信息

接口根地址
https://open.suujee.com/bank/api.php
请求方法
GET 或 POST(参数合并读取,推荐使用 GET + 请求头鉴权)
字符编码
UTF-8(请求与响应均为 application/json; charset=utf-8
数据格式
请求参数使用 query string / form;响应统一为 JSON
时间字段
created_at / updated_atYYYY-MM-DD HH:MM:SS(服务器时区);信封 timestamp 为 Unix 秒级时间戳
跨域
已开启 CORS:Access-Control-Allow-Origin: *,支持 OPTIONS 预检,允许头 X-API-Key

三、鉴权

所有接口均需在请求中携带有效的 API Key。密钥由用户在「用户中心 → API 密钥」中手动生成,属于平台级密钥,可调用平台下所有应用的对外接口。

携带方式一
HTTP 请求头 X-API-Key: pk_xxxxxxxx推荐
携带方式二
请求参数 ?api_key=pk_xxxxxxxx
🔐 安全须知

四、限流说明

为防止滥用,接口按每个用户(密钥)独立进行滑动窗口限流:

维度取值说明
限流粒度每个 API Key(用户)不同用户的请求互不影响
窗口长度60滑动窗口:每次请求以当前时间重新计算窗口
单窗口上限120 次 / 60 秒超过即拒绝,终止本次窗口计数
超限响应HTTP 429{ "code":429, "message":"请求过于频繁,请稍后再试" }
窗口重置自动距上次请求超过 60 秒后,计数自动归零
💡 提示

若业务需要更高配额,请在用户中心或联系平台运营方调整。客户端建议对 429 做指数退避重试。

五、通用响应结构

所有接口返回统一 JSON 信封:

{
  "code": 0,                 // 业务码:0 成功,非 0 见错误码表
  "message": "ok",           // 人类可读提示
  "data": { ... },           // 业务数据,结构因接口而异;出错时通常为 null
  "timestamp": 1690000000    // 服务器 Unix 秒级时间戳
}

HTTP 状态码与 code 字段保持一致语义(401 / 400 / 404 / 429 / 500)。成功时 code=0 且 HTTP 200

六、错误码

HTTPcodemessage(示例)含义 / 处理建议
401401缺少 API Key(请…)未携带密钥。检查 X-API-Key 头或 api_key 参数。
401401API Key 无效密钥错误、已被撤销、或所属账户已禁用。请重新生成或确认账户状态。
400400缺少参数 cnaps必要参数缺失或格式非法。核对请求参数。
404404未找到该联行号对应的分支机构查询条件无匹配数据。确认联行号 / ID 是否正确。
429429请求过于频繁,请稍后再试触发限流。降低频率或稍后重试。
500500服务端用户表未初始化…服务端异常(如未执行初始化)。请联系平台方。

七、数据对象字段

7.1 分支机构对象(item / items[]

字段类型说明
idint分支机构内部 ID
branch_namestring分支机构(网点)全称
branch_cnapsstring联行号(CNAPS 号,12 位)
provincestring省 / 直辖市(全称,如「浙江省」)
citystring市(全称,如「杭州市」)
region_idstring大区标识(多数记录为空)
province_codestring省级行政区划代码(6 位)
city_codestring市级行政区划代码(6 位)
addressstring详细地址(可能为空)
phonestring联系电话(可能为空)
former_namestring曾用名(可能为空)
statusint状态:1=正常,2=停业
status_textstring状态文案:正常 / 停业
headobject所属总行对象(见 7.2)
created_atstring记录创建时间
updated_atstring记录更新时间

7.2 总行对象(head

字段类型说明
idint总行内部 ID
namestring总行名称(如「中国邮政储蓄银行」)
cnapsstring总行联行号(CNAPS 号)
codestring总行行别代码(如 PSBC

8.1 分支机构搜索 GET action=search / list

按关键字、省市、总行、状态组合筛选分支机构,支持分页。这是最常用的列表接口。

参数必填类型说明
actionstringsearchlist
qstring关键字:匹配网点名称 / 总行名称 / 联行号 / 省市
provincestring省全称精确过滤(如「浙江省」)
citystring市全称精确过滤
head_id / headint按总行 ID 过滤(两个参数名等效)
statusint1=正常,2=停业
pageint页码,默认 1
per_pageint每页条数,默认 20,最大 100
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=search&q=支行&province=浙江省&page=1&per_page=20"

data 字段:

字段类型说明
itemsarray分支机构对象数组(见 7.1)
totalint符合条件的总记录数
page / per_pageint当前页 / 每页条数
total_pagesint总页数
keyword / province / city / head_id / status回显的请求参数(便于分页拼接)

8.2 按联行号查询 GET action=byCnaps / by_cnaps

参数必填类型说明
actionstringbyCnapsby_cnaps
cnapsstring12 位联行号
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=byCnaps&cnaps=102100000026"

data{ "item": 分支机构对象 };未找到返回 HTTP 404。

8.3 按内部 ID 查询 GET action=byId / by_id

参数必填类型说明
actionstringbyIdby_id
idint分支机构内部 ID
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=byId&id=123"

data{ "item": 分支机构对象 };未找到返回 HTTP 404。

8.4 总行列表 GET action=heads / heads_search

参数必填类型说明
actionstringheadsheads_search
qstring总行名称 / 联行号 / 行别代码关键字
pageint页码,默认 1
per_pageint每页条数,默认 50,最大 100
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=heads&q=工商"

data.items[] 字段:idhead_namehead_cnapshead_codebranch_count(下属网点数)、statuscreated_atupdated_at

8.5 统计概览 GET action=stats

参数必填类型说明
actionstringstats
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=stats"

data{ "total": 总网点数, "heads": 总行数, "normal": 正常网点数, "cancelled": 停业网点数 }

九、快速开始

1
登录平台,进入「用户中心 → API 密钥」,点击生成密钥,复制一次性明文 pk_...
2
将密钥放入请求头 X-API-Key
3
发起首个请求验证联通性:
curl -H "X-API-Key: pk_你的密钥" \
  "https://open.suujee.com/bank/api.php?action=stats"
4
根据业务调用搜索 / 联行号 / ID / 总行接口,解析 data 字段。

十、常见问题

Q:密钥泄露了怎么办?

在用户中心点击「撤销」即可立即使旧密钥失效,随后重新生成一把新密钥。

Q:返回 401 但密钥没错?

检查:① 请求头名是否为 X-API-Key(大小写敏感);② 账户是否被禁用;③ 是否在生成后未保存、实际使用了错误字符串。

Q:联行号查询不到?

确认 cnaps 为 12 位完整联行号;部分历史网点可能已停业(status=2),仍可通过 ID 检索到。

Q:能否用于浏览器前端直接调用?

接口已开启 CORS,技术上可行;但不建议在前端暴露密钥,应由你的后端服务代理调用。