laravel-swap
laravel-swap copied to clipboard
:dollar: Currency exchange rates for Laravel and Lumen
Laravel Swap
Swap allows you to retrieve currency exchange rates from various services such as Fixer, currencylayer, exchangeratesapi or Abstract and optionally cache the results.
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. |
exchangeratesapi provides reliable exchange rates and currency conversions for your business with over 15 data sources. | |
![]() |
Abstract provides simple exchange rates for developers and a dozen of APIs covering thousands of use cases. |
QuickStart
Installation
$ composer require php-http/curl-client nyholm/psr7 php-http/message florianv/laravel-swap
Laravel 5.7 or lesser
If you use cache, add also PSR-6 adapter and PSR-16 bridge cache dependencies :
$ composer require cache/illuminate-adapter cache/simple-cache-bridge
These dependencies are not required with Laravel 5.8 or greater which implements PSR-16.
Laravel 5.5+
If you don't use auto-discovery, add the ServiceProvider
to the providers array in config/app.php
:
// /config/app.php
'providers' => [
Swap\Laravel\SwapServiceProvider::class
],
If you want to use the facade to log messages, add this to your facades in app.php:
'aliases' => [
'Swap' => Swap\Laravel\Facades\Swap::class
]
Copy the package config to your local config with the publish command:
$ php artisan vendor:publish --provider="Swap\Laravel\SwapServiceProvider"
Lumen
Configure the Service Provider and alias:
// /boostrap/app.php
// Register the facade
$app->withFacades(true, [
Swap\Laravel\Facades\Swap::class => 'Swap'
]);
// Load the configuration
$app->configure('swap');
// Register the service provider
$app->register(Swap\Laravel\SwapServiceProvider::class);
Copy the configuration to /config/swap.php
if you wish to override it.
Usage
// 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 yesterday
$rate = Swap::historical('EUR/USD', Carbon\Carbon::yesterday());
Documentation
The complete documentation 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 | * | * | Yes |
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 |
Credits
License
The MIT License (MIT). Please see LICENSE for more information.