银行汇率查询:5 分钟从注册跑到第一次调用

约 12 分钟 入门银行汇率查询API快速接入Python示例免费接口
# 银行汇率查询:5 分钟从注册跑到第一次调用 接口:银行汇率查询(apiCode=105)· 接入点:汇率查询(105-30)· 免费(L0 基础版 100 次/天、1 QPS)· 请求方式:POST / GET · 返回格式:JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟 · 最后实测核对:2026-09-18 ## 核心要点 - 注册 ShowAPI 账号后,在控制台创建应用拿到 AppKey,把 AppKey 拼到请求地址的 query 里就能调用,不需要额外签名。 - 汇率查询接入点(105-30)的 `code` 参数可选:不传返回全部货币,传 `code=USD` 只返回这一种。 - 业务数据在 `showapi_res_body` 里,`showapi_res_body.ret_code` 为 0 才代表本次查询成功。 ## 你在什么场景会用到它 给海外商品标价、算留学学费折合人民币多少、做出境预算,都需要一份外币兑人民币的牌价。银行汇率查询接口直接返回各家银行的外汇牌价,注册即可调用,不用自己去找挂牌数据再整理成表。 这篇的目标很具体:让你在 5 分钟内发出第一次请求,看到真实的牌价数字。 ## 前置条件与接口速览 开始前需要两样东西:一个 ShowAPI 账号、一个应用对应的 AppKey。 | 项目 | 说明 | |------|------| | 接口地址 | `https://route.showapi.com/105-30?appKey={your_appKey}` | | 接入点 | 汇率查询(105-30) | | 请求方式 | POST / GET,同步请求-响应 | | 鉴权 | query 参数 `appKey`,在控制台获取 | | 计费 | 免费接口,注册即享 L0 基础版(100 次/天、1 QPS);积分可升级更高档位 | | 返回格式 | JSON,业务数据封装在 `showapi_res_body` 内 | | 超时设置 | OpenAPI 文档标注 `x-read-timeout` 15 秒、`x-connect-timeout` 15 秒 | | 集成能力 | 接口级 MCP 服务、标准 OpenAPI 3.0 文档(覆盖全部 4 个接入点) | ## 分三步跑通 ### 步骤 1:拿到 AppKey 登录 ShowAPI 控制台,创建一个应用,把它的 AppKey 复制出来。AppKey 是唯一的身份凭据,代码里用占位符写成 `YOUR_APPKEY`,不要提交到公开仓库。 ### 步骤 2:发起第一次调用 下面三段代码查的是美元牌价。把 `YOUR_APPKEY` 换成你自己的值就能直接运行。 Python(requests): ```python import requests url = "https://route.showapi.com/105-30" params = {"appKey": "YOUR_APPKEY"} # AppKey 走 query data = {"code": "USD"} # 业务参数走表单;不传 code 返回全部货币 try: resp = requests.post(url, params=params, data=data, timeout=15) resp.raise_for_status() js = resp.json() if js.get("showapi_res_code") == 0 and js["showapi_res_body"].get("ret_code") == 0: for item in js["showapi_res_body"]["list"]: print(item["name"], item["code"], "现汇卖出价", item["hui_out"]) else: print("调用失败:", js.get("showapi_res_error"), js["showapi_res_body"].get("ret_code")) except requests.RequestException as exc: print("请求异常:", exc) ``` cURL: ```bash curl -X POST "https://route.showapi.com/105-30?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "code=USD" ``` Node.js(fetch,Node 18+): ```javascript const url = "https://route.showapi.com/105-30?appKey=YOUR_APPKEY"; const body = new URLSearchParams({ code: "USD" }); const res = await fetch(url, { method: "POST", body, headers: { "content-type": "application/x-www-form-urlencoded" }, signal: AbortSignal.timeout(15000) // 对齐文档的 15 秒读超时 }); const js = await res.json(); if (js.showapi_res_code === 0 && js.showapi_res_body.ret_code === 0) { for (const item of js.showapi_res_body.list) { console.log(item.name, item.code, "现汇卖出价", item.hui_out); } } else { console.error("调用失败:", js.showapi_res_error, js.showapi_res_body.ret_code); } ``` ### 步骤 3:读取结果 业务数据都在 `showapi_res_body.list` 数组里,每条对应一种货币。判断顺序是:先看系统级 `showapi_res_code` 是否为 0,再看业务级 `showapi_res_body.ret_code` 是否为 0,两者都通过再读字段。 ## 返回示例与解析 以下是 2026-09-18 实测调用 `105-30?code=USD` 的真实返回,删去了请求标识字段: ```json { "showapi_res_error": "", "showapi_res_code": 0, "showapi_fee_num": 1, "showapi_res_body": { "listSize": 1, "ret_code": 0, "list": [ { "name": "美元", "code": "USD", "hui_in": "669.61", "chao_in": "669.61", "hui_out": "672.42", "chao_out": "672.42", "zhesuan": "675.21", "day": "2026-09-18", "time": "09:16:23" } ] } } ``` | 字段 | 含义 | |------|------| | `listSize` | 本次返回的数据条数 | | `list[].name` | 货币中文名称 | | `list[].code` | 货币简码 | | `list[].hui_in` | 现汇买入价 | | `list[].chao_in` | 现钞买入价 | | `list[].hui_out` | 现汇卖出价 | | `list[].chao_out` | 现钞卖出价 | | `list[].zhesuan` | 中行折算价 | | `list[].day` / `list[].time` | 牌价的发布日 / 发布时间 | | `list[].ret_code`(业务级) | 0 为成功,其他为失败 | 五个价位字段都以字符串返回,例如 `"669.61"`,参与计算前先转成数值。 ## 返回值里的两个细节 **不传 `code` 时返回 46 条记录。** 2026-09-18 实测:不传 `code` 时 `listSize` 为 46,包含 45 种外币加人民币(CNY)。这 46 条记录的 `day` 都是 `2026-09-18`、`time` 都是 `09:16:23`,同一批返回共用同一个时间戳,所以可以用 `day` + `time` 判断数据快照的新鲜度。 **`code` 只接受货币简码。** 传 `code=USD` 返回 1 条;需要一次拿全量就先不传,拿到结果后再在本地按需筛选。 ## FAQ **Q1:`showapi_res_code` 和 `ret_code` 有什么区别?** `showapi_res_code` 是系统级状态码,0 表示接口调用通道正常;`ret_code` 是业务级状态码,位于 `showapi_res_body` 内,0 表示本次查询成功。两者都为 0 才算整体成功。 **Q2:为什么价位是字符串而不是数字?** 接口对价位字段统一以字符串返回,例如 `"669.61"`。读取时按字符串处理,需要计算时自行转浮点并决定保留几位小数。 **Q3:免费接口有调用次数限制吗?** 免费接口注册即享 L0 基础版,每日 100 次、并发 1 QPS,长期有效。用平台积分可升级到 L1~L4 更高档位,具体额度见免费接口页。 **Q4:这些牌价是实时汇率吗?** 不是。产品说明写明延迟时长无法固定,接口返回的是银行上一周期或上两周期的数据,不返回实时汇率;接入点文档同样标注「数据源自网络,有数分钟延迟,非投资建议,数据分析参考」。实际交易汇率以当地银行为准。 **Q5:`code` 传人民币 CNY 会返回什么?** 实测会返回 1 条记录,五个价位均为 `"100"`。人民币是这套牌价的折算基准。 ## 下一步阅读 - [银行汇率查询返回字段全解(五大价位 / 两层状态码 / 空值情况)](https://www.showapi.com/guides/exchange-rate-fields-105):把每个字段的含义与空值处理一次讲清。 - [银行汇率查询:汇率转换只需 3 个必填参数](https://www.showapi.com/guides/exchange-rate-convert-guide-105):不想自己算金额时,直接让接口换算。 - [银行汇率查询:L0 档位每天 100 次,缓存该缓存什么](https://www.showapi.com/guides/exchange-rate-cache-105):免费档位下的调用额度和缓存设计。 - **本系列共 13 篇**:查看[银行汇率查询指南总目录](https://www.showapi.com/guides/exchange-rate-guides-105)
加载中...