Home

Awesome

<img src="https://s3.amazonaws.com/swap.assets/swap_logo.png" height="30px" width="30px"/> Laravel Swap

Build status Total Downloads Version

Swap allows you to retrieve currency exchange rates from various services such as Fixer, Currency Data or Exchange Rates Data and optionally cache the results.

Sponsors

<table> <tr> <td><img src="https://assets.apilayer.com/apis/fixer.png" width="50px"/></td> <td><a href="https://fixer.io/">Fixer</a> is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies.</td> </tr> <tr> <td><img src="https://assets.apilayer.com/apis/currency_data.png" width="50px"/></td> <td><a href="https://currencylayer.com">Currency Data</a> provides reliable exchange rates and currency conversions for your business up to 168 world currencies.</td> </tr> <tr> <td><img src="https://assets.apilayer.com/apis/exchangerates_data.png" width="50px"/></td> <td><a href="https://exchangeratesapi.io">Exchange Rates Data</a> provides reliable exchange rates and currency conversions for your business with over 15 data sources.</td> </tr> </table>

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:

ServiceBase CurrencyQuote CurrencyHistorical
FixerEUR (free, no SSL), * (paid)*Yes
Currency DataUSD (free), * (paid)*Yes
Exchange Rates DataUSD (free), * (paid)*Yes
Abstract**Yes
coinlayer* Crypto (Limited standard currencies)* Crypto (Limited standard currencies)Yes
FixerEUR (free, no SSL), * (paid)*Yes
currencylayerUSD (free), * (paid)*Yes
exchangeratesapiUSD (free), * (paid)*Yes
European Central BankEUR*Yes
National Bank of Georgia*GELYes
National Bank of the Republic of Belarus*BYN (from 01-07-2016),<br>BYR (01-01-2000 - 30-06-2016),<br>BYB (25-05-1992 - 31-12-1999)Yes
National Bank of RomaniaRON, 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, ZARRON, 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, ZARYes
National Bank of Ukranie*UAHYes
Central Bank of the Republic of Turkey*TRYYes
Central Bank of the Republic of Uzbekistan*UZSYes
Central Bank of the Czech Republic*CZKYes
Central Bank of Russia*RUBYes
Bulgarian National Bank*BGNYes
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 RatesUSD (free), * (paid)*Yes
Xignite**Yes
Currency Converter API**Yes (free but limited or paid)
xChangeApi.com**Yes
fastFOREX.ioUSD (free), * (paid)*No
exchangerate.host**Yes
Array**Yes

Credits

License

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