reaway / boc-cny-quote
Bank of China CNY quote
v1.0.0
2026-03-28 04:24 UTC
Requires
- php: >=8.1
- ext-bcmath: *
- ext-dom: *
- ext-mbstring: *
- reaway/curl-client: ^1.0
- reaway/think-config: ^8.0
- reaway/think-facade: ^8.0
- reaway/think-manager: ^8.0
Requires (Dev)
- symfony/var-dumper: ^6.0
README
一个用于获取中国银行人民币汇率数据的 PHP 库,支持多种数据源(桌面版网页、移动版网页、微信小程序、聚合数据 API)。
功能特性
- 支持多种数据源:
desktop- 中国银行桌面版网页(默认)mobile- 中国银行移动版网页we_chat_mini_program- 中国银行微信小程序接口juhe- 聚合数据 API(需要申请 API Key)
- 支持门面(Facade)模式调用
- 支持获取所有汇率或指定货币汇率
- 支持现汇买入价、现钞买入价、现汇卖出价、现钞卖出价、中行折算价
安装
composer require reaway/boc-cny-quote
环境要求
- PHP >= 8.1
- 扩展:bcmath、dom、mbstring
支持的货币
| 货币代码 | 货币名称 | 货币代码 | 货币名称 |
|---|---|---|---|
| AED | 阿联酋迪拉姆 | AUD | 澳大利亚元 |
| BND | 文莱元 | BRL | 巴西雷亚尔 |
| CAD | 加拿大元 | CHF | 瑞士法郎 |
| CZK | 捷克克朗 | DKK | 丹麦克朗 |
| EUR | 欧元 | GBP | 英镑 |
| HKD | 港币 | HUF | 匈牙利福林 |
| IDR | 印尼卢比 | ILS | 以色列谢克尔 |
| INR | 印度卢比 | JPY | 日元 |
| KHR | 柬埔寨瑞尔 | KRW | 韩国元 |
| KWD | 科威特第纳尔 | MNT | 蒙古图格里克 |
| MOP | 澳门元 | MXN | 墨西哥比索 |
| MYR | 林吉特 | NOK | 挪威克朗 |
| NPR | 尼泊尔卢比 | NZD | 新西兰元 |
| PHP | 菲律宾比索 | PKR | 巴基斯坦卢比 |
| QAR | 卡塔尔里亚尔 | RSD | 塞尔维亚第纳尔 |
| RUB | 卢布 | SAR | 沙特里亚尔 |
| SEK | 瑞典克朗 | SGD | 新加坡元 |
| THB | 泰国铢 | TRY | 土耳其里拉 |
| TWD | 新台币 | USD | 美元 |
| VND | 越南盾 | ZAR | 南非兰特 |
使用方法
基础用法
use BocCnyQuote\CnyQuote; require dirname(__DIR__) . '/vendor/autoload.php'; $config = [ 'default' => 'desktop', // 默认驱动:desktop、mobile、we_chat_mini_program、juhe 'sources' => [ 'juhe' => [ 'key' => 'your-api-key', // 聚合数据 API 访问密钥 ], ], ]; $cnyQuote = new CnyQuote($config); // 获取所有汇率 $quotes = $cnyQuote->getQuotes(); var_dump($quotes); // 获取指定货币的汇率 $usdQuote = $cnyQuote->getQuote('USD'); var_dump($usdQuote); // 切换到其他数据源 $mobileQuotes = $cnyQuote->source('mobile')->getQuotes(); var_dump($mobileQuotes);
使用门面(Facade)
use BocCnyQuote\Facade\CnyQuoteFacade; use Think\Component\Config\Facade\ConfigFacade; require dirname(__DIR__) . '/vendor/autoload.php'; $config = [ 'default' => 'desktop', 'sources' => [ 'juhe' => [ 'key' => 'your-api-key', ], ], ]; ConfigFacade::set($config, 'boc_cny_quote'); // 获取所有汇率 $quotes = CnyQuoteFacade::getQuotes(); var_dump($quotes); // 获取指定货币的汇率 $usdQuote = CnyQuoteFacade::getQuote('USD'); var_dump($usdQuote); // 切换数据源 $mobileQuotes = CnyQuoteFacade::source('mobile')->getQuotes(); var_dump($mobileQuotes);
配置说明
| 配置项 | 类型 | 说明 |
|---|---|---|
| default | string | 默认数据源驱动,可选值:desktop、mobile、we_chat_mini_program、juhe |
| sources.juhe.key | string | 聚合数据 API 访问密钥(仅在 juhe 驱动时需要) |
数据源说明
desktop(桌面版网页)
- 数据源:中国银行官网桌面版
- 特点:数据完整,无需 API Key
- URL:https://www.boc.cn/sourcedb/whpj/
mobile(移动版网页)
- 数据源:中国银行官网移动版
- 特点:数据完整,无需 API Key
- URL:https://www.boc.cn/sourcedb/whpj/sjmfx_1621.html
we_chat_mini_program(微信小程序)
- 数据源:中国银行微信小程序接口
- 特点:数据实时,无需 API Key
juhe(聚合数据)
- 数据源:聚合数据 API
- 特点:需要申请 API Key
- URL:http://web.juhe.cn/finance/exchange/rmbquot
- 申请地址:https://www.juhe.cn/docs/api/id/23
返回数据格式
[
'USD' => [
'currency_name' => '美元', // 货币名称
'currency_code' => 'USD', // 货币代码
'exchange_buy' => 723.45, // 现汇买入价
'cash_buy' => 717.89, // 现钞买入价
'exchange_sell' => 726.59, // 现汇卖出价
'cash_sell' => 726.59, // 现钞卖出价
'bank_conversion' => 724.52, // 中行折算价
'publish_time' => '2024-01-15 09:30:00', // 发布时间
],
// ... 其他货币
]
API 方法
CnyQuote 类
| 方法 | 说明 |
|---|---|
getQuotes(): array |
获取所有人民币汇率数据 |
getQuote(string $currency): array|null |
获取指定货币的人民币汇率 |
source(string|null $name): CnyQuoteAbstract |
获取指定驱动实例 |
getResponse(): string |
获取数据源响应内容(原始数据) |
getSourceUrl(): string |
获取数据源 URL |
许可证
Apache-2.0 License. 详情请查看 LICENSE 文件。