drandin/exchange-rate

俄罗斯联邦中央银行汇率。货币转换器。从中央银行网站 cbr.ru 获取数据

dev-master 2020-10-01 17:47 UTC

This package is auto-updated.

Last update: 2024-08-29 05:37:09 UTC


README

从俄罗斯联邦中央银行官方网站 中央银行 https://www.cbr.ru 获取货币汇率和货币转换器系统。

包功能

  • 通过API按日期从俄罗斯中央银行网站获取货币汇率。
  • 将一种货币转换为另一种货币。

要求

  • PHP 7.3 及以上版本。

安装

安装包需要执行以下命令

composer require drandin/exchange-rate

使用

以下是一些使用该包的示例。

获取货币汇率

示例 1

查询中央银行俄罗斯在 2020-02-19 日期上设定的货币汇率数据

use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter;
use CentralBankRussian\ExchangeRate\ExchangeRate;

 $exchangeRate = new ExchangeRate(new CBRClient());

 try {
     $currencyRateCollection = $exchangeRate
         ->setDate(new DateTime('2020-02-19'))
         ->getCurrencyExchangeRates();

     var_dump($currencyRateCollection);
 }
 catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) {
     echo $e->getMessage();
 }

结果(部分)

object(CentralBankRussian\ExchangeRate\Collections\CurrencyRateCollection)[819]
  private 'currencyRates' => 
    array (size=35)
      'AUD' => 
        object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[823]
          private 'name' => string 'Австралийский доллар' (length=39)
          private 'exchangeRate' => float 42.6046
          private 'quantity' => int 1
          private 'numericCode' => string '36' (length=2)
          private 'symbolCode' => string 'AUD' (length=3)
      'AZN' => 
        object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[822]
          private 'name' => string 'Азербайджанский манат' (length=41)
          private 'exchangeRate' => float 37.589
          private 'quantity' => int 1
          private 'numericCode' => string '944' (length=3)
          private 'symbolCode' => string 'AZN' (length=3)
      'GBP' => 
        object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[824]
          private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77)
          private 'exchangeRate' => float 82.7987
          private 'quantity' => int 1
          private 'numericCode' => string '826' (length=3)
          private 'symbolCode' => string 'GBP' (length=3)
      'AMD' => 
        object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825]
          private 'name' => string 'Армянский драм' (length=27)
          private 'exchangeRate' => float 13.327
          private 'quantity' => int 100
          private 'numericCode' => string '51' (length=2)
          private 'symbolCode' => string 'AMD' (length=3)
      'BYN' => 
        object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[826]
          private 'name' => string 'Белорусский рубль' (length=33)
          private 'exchangeRate' => float 28.931
          private 'quantity' => int 1
          private 'numericCode' => string '933' (length=3)
          private 'symbolCode' => string 'BYN' (length=3)
      ...
示例 2

查询 2020-07-12 日期上 USD 货币的汇率

use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter;
use CentralBankRussian\ExchangeRate\ExchangeRate;

 $exchangeRate = new ExchangeRate(
         new CBRClient()
 );
 
 try {
 
     $currencyRate = $exchangeRate
          ->setDate(new DateTime('2020-07-12'))
          ->getCurrencyExchangeRates()
          ->getCurrencyRateBySymbolCode('AMD');
 
     var_dump($currencyRate);
 
 }
 catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) {
      echo $e->getMessage();
 }

在此示例中,我们请求货币汇率集合 CurrencyRateCollection,并通过方法 getCurrencyRateBySymbolCode('AMD') 获取符号代码为 AMD(亚美尼亚德拉姆)的集合元素。

结果

object(CentralBankRussian\ExchangeRate\Models\CurrencyRate)[825]
  private 'name' => string 'Армянский драм                                                                                                                                                                                                                                                ' (length=267)
  private 'exchangeRate' => float 14.6383
  private 'quantity' => int 100
  private 'numericCode' => string '51' (length=2)
  private 'symbolCode' => string 'AMD' (length=3)

请注意 quantity 属性。对于亚美尼亚德拉姆,quantity 等于 100。这意味着 100 亚美尼亚德拉姆价值 14.6383 俄罗斯卢布。

示例 3

查询 2020-09-30 日期上 AMD 货币相对于卢布的汇率

use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter;
use CentralBankRussian\ExchangeRate\ExchangeRate;

 $exchangeRate = new ExchangeRate(
         new CBRClient()
 );
 
 try {
 
     $rateInRubles = $exchangeRate
          ->setDate(new DateTime('2020-09-30'))
          ->getRateInRubles('AMD');
 
     echo $rateInRubles;
 
 }
 catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) {
      echo $e->getMessage();
 }

结果

0.1641

我们获取了中央银行俄罗斯在 2020-09-30 日期上设定的 1 亚美尼亚德拉姆对卢布的汇率。

货币汇率转换

示例:根据 2020-06-10 日期的有效汇率将 73 224 美元转换为欧元

use CentralBankRussian\ExchangeRate\Converter;
use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionInvalidParameter;
use CentralBankRussian\ExchangeRate\ExchangeRate;

try {

    $exchangeRate = new ExchangeRate(
         new CBRClient()
     );

    $converter = new Converter($exchangeRate);

    $val = $converter
        ->setDate(new DateTime('2020-06-10'))
        ->convert(73224, 'USD', 'EUR');

    echo $val;

}
catch (ExceptionIncorrectData | ExceptionInvalidParameter $e) {
    echo $e->getMessage();
}

结果

65012.87

根据中央银行俄罗斯在 2020-06-10 日期设定的汇率,73 224 美元等于 65 012.87 欧元。

获取货币代码指南

示例 1

获取每日货币列表

use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\ReferenceData;

$referenceData = new ReferenceData(new CBRClient());

try {
    $currencyCollection = $referenceData->getCurrencyCodesDaily();
    var_dump($currencyCollection);
}
catch (ExceptionIncorrectData $e) {
    echo $e->getMessage();
}

结果(部分)

object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819]
  private 'currencies' => 
    array (size=58)
      'AUD' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[822]
          private 'name' => string 'Австралийский доллар' (length=39)
          private 'nameEng' => string 'Australian Dollar' (length=17)
          private 'quantity' => int 1
          private 'numericCode' => string '36' (length=2)
          private 'symbolCode' => string 'AUD' (length=3)
          private 'internalCode' => string 'R01010' (length=6)
          private 'internalCommonCode' => string 'R01010' (length=6)
      'ATS' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[818]
          private 'name' => string 'Австрийский шиллинг' (length=37)
          private 'nameEng' => string 'Austrian Shilling' (length=17)
          private 'quantity' => int 1000
          private 'numericCode' => string '40' (length=2)
          private 'symbolCode' => string 'ATS' (length=3)
          private 'internalCode' => string 'R01015' (length=6)
          private 'internalCommonCode' => string 'R01015' (length=6)
      'AZN' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[823]
          private 'name' => string 'Азербайджанский манат' (length=41)
          private 'nameEng' => string 'Azerbaijan Manat' (length=16)
          private 'quantity' => int 1
          private 'numericCode' => string '944' (length=3)
          private 'symbolCode' => string 'AZN' (length=3)
          private 'internalCode' => string 'R01020A' (length=7)
          private 'internalCommonCode' => string 'R01020' (length=6)
      'GBP' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[824]
          private 'name' => string 'Фунт стерлингов Соединенного королевства' (length=77)
          private 'nameEng' => string 'British Pound Sterling' (length=22)
          private 'quantity' => int 1
          private 'numericCode' => string '826' (length=3)
          private 'symbolCode' => string 'GBP' (length=3)
          private 'internalCode' => string 'R01035' (length=6)
          private 'internalCommonCode' => string 'R01035' (length=6)
      'AON' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[825]
          private 'name' => string 'Ангольская новая кванза' (length=44)
          private 'nameEng' => string 'Angolan new Kwanza' (length=18)
          private 'quantity' => int 100000
          private 'numericCode' => string '24' (length=2)
          private 'symbolCode' => string 'AON' (length=3)
          private 'internalCode' => string 'R01040F' (length=7)
          private 'internalCommonCode' => string 'R01040' (length=6)
      'AMD' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[826]
          private 'name' => string 'Армянский драм' (length=27)
          private 'nameEng' => string 'Armenia Dram' (length=12)
          private 'quantity' => int 1000
          private 'numericCode' => string '51' (length=2)
          private 'symbolCode' => string 'AMD' (length=3)
          private 'internalCode' => string 'R01060' (length=6)
          private 'internalCommonCode' => string 'R01060' (length=6)
      'BYN' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[827]
          private 'name' => string 'Белорусский рубль' (length=33)
          private 'nameEng' => string 'Belarussian Ruble' (length=17)
          private 'quantity' => int 1
          private 'numericCode' => string '933' (length=3)
          private 'symbolCode' => string 'BYN' (length=3)
          private 'internalCode' => string 'R01090B' (length=7)
          private 'internalCommonCode' => string 'R01090' (length=6)
      ...
示例 1

获取每月货币列表

use CentralBankRussian\ExchangeRate\CBRClient;
use CentralBankRussian\ExchangeRate\Exceptions\ExceptionIncorrectData;
use CentralBankRussian\ExchangeRate\ReferenceData;

$referenceData = new ReferenceData(new CBRClient());

try {
    $currencyCollection = $referenceData->getCurrencyCodesMonthly();
    var_dump($currencyCollection);
}
catch (ExceptionIncorrectData $e) {
    echo $e->getMessage();
}

结果(部分)

object(CentralBankRussian\ExchangeRate\Collections\CurrencyCollection)[819]
  private 'currencies' => 
    array (size=85)
      'ALL' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[822]
          private 'name' => string 'Албанский лек' (length=25)
          private 'nameEng' => string 'Albanian Lek' (length=12)
          private 'quantity' => int 100
          private 'numericCode' => string '8' (length=1)
          private 'symbolCode' => string 'ALL' (length=3)
          private 'internalCode' => string 'R01025' (length=6)
          private 'internalCommonCode' => string 'R01025' (length=6)
      'DZD' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[818]
          private 'name' => string 'Алжирский динар' (length=29)
          private 'nameEng' => string 'Algerian Dinar' (length=14)
          private 'quantity' => int 100
          private 'numericCode' => string '12' (length=2)
          private 'symbolCode' => string 'DZD' (length=3)
          private 'internalCode' => string 'R01030' (length=6)
          private 'internalCommonCode' => string 'R01030' (length=6)
      'AOA' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[824]
          private 'name' => string 'Ангольская кванза' (length=33)
          private 'nameEng' => string 'Angolan Kwanza' (length=14)
          private 'quantity' => int 100
          private 'numericCode' => string '973' (length=3)
          private 'symbolCode' => string 'AOA' (length=3)
          private 'internalCode' => string 'R01040E' (length=7)
          private 'internalCommonCode' => string 'R01040' (length=6)
      'ARS' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[823]
          private 'name' => string 'Аргентинское песо' (length=33)
          private 'nameEng' => string 'Argentine Peso' (length=14)
          private 'quantity' => int 10
          private 'numericCode' => string '32' (length=2)
          private 'symbolCode' => string 'ARS' (length=3)
          private 'internalCode' => string 'R01055' (length=6)
          private 'internalCommonCode' => string 'R01055' (length=6)
      'AFN' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[825]
          private 'name' => string 'Афганский афгани' (length=31)
          private 'nameEng' => string 'Afghanistan Afgani' (length=18)
          private 'quantity' => int 100
          private 'numericCode' => string '971' (length=3)
          private 'symbolCode' => string 'AFN' (length=3)
          private 'internalCode' => string 'R01065' (length=6)
          private 'internalCommonCode' => string 'R01065' (length=6)
      'BHD' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[826]
          private 'name' => string 'Бахрейнский динар' (length=33)
          private 'nameEng' => string 'Bahraini Dinar' (length=14)
          private 'quantity' => int 1
          private 'numericCode' => string '48' (length=2)
          private 'symbolCode' => string 'BHD' (length=3)
          private 'internalCode' => string 'R01080' (length=6)
          private 'internalCommonCode' => string 'R01080' (length=6)
      'BOB' => 
        object(CentralBankRussian\ExchangeRate\Models\Currency)[827]
          private 'name' => string 'Боливийский боливиано' (length=41)
          private 'nameEng' => string 'Bolivian Boliviano' (length=18)
          private 'quantity' => int 10
          private 'numericCode' => string '68' (length=2)
          private 'symbolCode' => string 'BOB' (length=3)
          private 'internalCode' => string 'R01105' (length=6)
          private 'internalCommonCode' => string 'R01105' (length=6)
      ...

CurrencyRate 模型的属性

描述 CentralBankRussian\ExchangeRate\Models\CurrencyRate 模型的属性

Currency 模型的属性

描述 CentralBankRussian\ExchangeRate\Models\Currency 模型的属性

中央银行俄罗斯 web 服务描述链接

https://www.cbr.ru/development/DWS/

许可证(License)

MIT 许可证