openwse/laravel-swap

Currency exchange rates library for Laravel and Lumen

2.3.1 2022-03-02 20:33 UTC

README

Build status Total Downloads Scrutinizer Version

Swap allows you to retrieve currency exchange rates from various services such as Fixer, currencylayer, exchangeratesapi or Abstract and optionally cache the results.

Sponsors

68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f737761702e6173736574732f66697865725f69636f6e2e706e673f763d32 Fixer is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies.
68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f737761702e6173736574732f63757272656e63796c617965725f69636f6e2e706e67 currencylayer provides reliable exchange rates and currency conversions for your business up to 168 world currencies.
68747470733a2f2f65786368616e676572617465736170692e696f2f6173736574732f696d616765732f6170692d6c6f676f2e737667 exchangeratesapi provides reliable exchange rates and currency conversions for your business with over 15 data sources.
68747470733a2f2f676c6f62616c2d75706c6f6164732e776562666c6f772e636f6d2f3565626264306135363661333939363633366535353935392f3565633262613237656465393833393137646266663232665f66617669636f6e2e706e67 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.