Swap
Swap allows you to retrieve currency exchange rates from various services such as Fixer or currencylayer and optionally cache the results. It is integrated to other libraries like moneyphp/money and provides a Symfony Bundle and a Laravel Package.
Sponsors
Fixer is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies. | |
currencylayer provides reliable exchange rates and currency conversions for your business up to 168 world currencies. |
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.io service as first level provider
->add('fixer', ['access_key' => 'your-access-key'])
// Use the currencylayer.com service as first fallback
->add('currency_layer', ['access_key' => 'secret', 'enterprise' => false])
->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 1,000 requests per day.
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 |
currencylayer | USD (free), * (paid) | * | Yes |
exchangeratesapi | USD (free), * (paid) | * | Yes |
Abstract | * | * | No |
coinlayer | * Crypto (Limited standard currencies) | * Crypto (Limited standard currencies) | Yes |
European Central Bank | EUR | * | 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 |
Central Bank of the Republic of Turkey | * | TRY | 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 |
Array | * | * | Yes |
Additionally, you can add your own services as long as they implement the ExchangeRateService
interface.
Integrations
- A Symfony Bundle FlorianvSwapBundle
- A Laravel Package florianv/laravel-swap
Credits
License
The MIT License (MIT). Please see LICENSE for more information.