florianv/swap

Exchange rates library for PHP

Maintainers

Details

github.com/florianv/swap

Source

Issues

Installs: 4 520 861

Dependents: 15

Suggesters: 6

Security: 0

Stars: 1 296

Watchers: 38

Forks: 132

Open Issues: 4

4.3.0 2020-12-28 10:14 UTC

README

Build status Total Downloads Scrutinizer Version

Swap allows you to retrieve currency exchange rates from various services such as Fixer, Currency Data, Exchange Rates Data or Abstract and optionally cache the results. It is integrated to other libraries like moneyphp/money and provides a Symfony Bundle and a Laravel Package.

Sponsors

68747470733a2f2f6173736574732e6170696c617965722e636f6d2f617069732f66697865722e706e67 Fixer is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies.
68747470733a2f2f6173736574732e6170696c617965722e636f6d2f617069732f63757272656e63795f646174612e706e67 currencylayer provides reliable exchange rates and currency conversions for your business up to 168 world currencies.
68747470733a2f2f6173736574732e6170696c617965722e636f6d2f617069732f65786368616e676572617465735f646174612e706e67 exchangerates provides reliable exchange rates and currency conversions for your business with over 15 data sources.
68747470733a2f2f676c6f62616c2d75706c6f6164732e776562666c6f772e636f6d2f3565626264306135363661333939363633366535353935392f3565633262613239666565656230356436393136306537625f776562636c69702e706e67 Abstract provides simple exchange rates for developers and a dozen of APIs covering thousands of use cases.

QuickStart

$ composer require php-http/curl-client nyholm/psr7 php-http/message florianv/swap
use Swap\Builder;

// Build Swap
$swap = (new Builder())

    // Use the Fixer service as first level provider
    ->add('apilayer_fixer', ['api_key' => 'Get your key here: https://fixer.io/'])
     
    // Use the currencylayer service as first fallback
    ->add('apilayer_currency_data', ['api_key' => 'Get your key here: https://currencylayer.com'])
    
    // Use the exchangerates service as second fallback
    ->add('apilayer_exchange_rates_data', ['api_key' => 'Get your key here: https://exchangeratesapi.io/'])
     
    // Use the Abstract Api service as third fallback
    ->add('abstract_api', ['api_key' => 'Get your key here: https://app.abstractapi.com/users/signup'])
->build();
    
// Get the latest EUR/USD rate
$rate = $swap->latest('EUR/USD');

// 1.129
$rate->getValue();

// 2016-08-26
$rate->getDate()->format('Y-m-d');

// Get the EUR/USD rate 15 days ago
$rate = $swap->historical('EUR/USD', (new \DateTime())->modify('-15 days'));

We recommend to use the services that support our project, providing a free plan up to 100 requests per month.

Documentation

The documentation for the current branch can be found here.

Services

Here is the list of the currently implemented services:

Service Base Currency Quote Currency Historical
Fixer EUR (free, no SSL), * (paid) * Yes
Currency Data USD (free), * (paid) * Yes
Exchange Rates Data USD (free), * (paid) * Yes
Abstract * * Yes
coinlayer * Crypto (Limited standard currencies) * Crypto (Limited standard currencies) Yes
Fixer EUR (free, no SSL), * (paid) * Yes
Currency Data USD (free), * (paid) * Yes
exchangeratesapi USD (free), * (paid) * Yes
European Central Bank EUR * Yes
National Bank of Georgia * GEL Yes
National Bank of the Republic of Belarus * BYN (from 01-07-2016),
BYR (01-01-2000 - 30-06-2016),
BYB (25-05-1992 - 31-12-1999)
Yes
National Bank of Romania RON, AED, AUD, BGN, BRL, CAD, CHF, CNY, CZK, DKK, EGP, EUR, GBP, HRK, HUF, INR, JPY, KRW, MDL, MXN, NOK, NZD, PLN, RSD, RUB, SEK, TRY, UAH, USD, XAU, XDR, ZAR RON, AED, AUD, BGN, BRL, CAD, CHF, CNY, CZK, DKK, EGP, EUR, GBP, HRK, HUF, INR, JPY, KRW, MDL, MXN, NOK, NZD, PLN, RSD, RUB, SEK, TRY, UAH, USD, XAU, XDR, ZAR Yes
National Bank of Ukranie * UAH Yes
Central Bank of the Republic of Turkey * TRY Yes
Central Bank of the Republic of Uzbekistan * UZS Yes
Central Bank of the Czech Republic * CZK Yes
Central Bank of Russia * RUB Yes
Bulgarian National Bank * BGN Yes
WebserviceX * * No
1Forge * (free but limited or paid) * (free but limited or paid) No
Cryptonator * Crypto (Limited standard currencies) * Crypto (Limited standard currencies) No
CurrencyDataFeed * (free but limited or paid) * (free but limited or paid) No
Open Exchange Rates USD (free), * (paid) * Yes
Xignite * * Yes
Currency Converter API * * Yes (free but limited or paid)
xChangeApi.com * * Yes
fastFOREX.io USD (free), * (paid) * No
exchangerate.host * * Yes
Array * * Yes

Additionally, you can add your own services as long as they implement the ExchangeRateService interface.

Integrations

Credits

License

The MIT License (MIT). Please see LICENSE for more information.