2017 © Pedro Peláez
 

library laravel-cconverter

Laravel 5 plug-in for currency conversion

image

danielme85/laravel-cconverter

Laravel 5 plug-in for currency conversion

  • Tuesday, January 30, 2018
  • by danielme85
  • Repository
  • 1 Watchers
  • 12 Stars
  • 1,259 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 9 Versions
  • 20 % Grown

The README.md

Laravel Currency Converter

GitHub PHP from Packagist GitHub release GitHub tag Travis (.org) Codecov, (*1)

A simple currency conversion plug-in for Laravel 5.5+ 💵
Example usage: https://danielmellum.com/projects/currency-converter, (*2)

Version testing and requirements, (*3)

Version Tested with
dev-master Laravel 6.0
v0.3.* Laravel 6.0
v0.2.* Laravel 5.6
v0.1.* Laravel 5.5
v0.0.7 Laravel 5.4

If you are having composer requirement issues using the latest release and Laravel < v5.4, try the v0.0.7 release., (*4)

Please note: * The European Central Bank does not require any user account and is therefore set as the default 'api-source', however the number of available currencies are somewhat limited compared to the other commercial sources (37). In my experience this source is also unpredictable, and might give an empty response. * All the other data providers are commercial and require a user account. They all have a free tier of 1000 requests per month, let's say you theoretically cache results for 60 min and you should be covered with some margin for errors 👍 Coincidentally Cache is enabled per default and set to 60 min. Now in theory one should perhaps make a simple Eloquent Model with the columns: date, from, to, rate or something similar, and then store the historical results. Please note that depending on usage this might go against the user agreements on the commercial data providers. 🤫 🙈, (*5)

Installation

composer require danielme85/laravel-cconverter

Configuration

You can publish this vendor config file if you would like to make changes to the default config., (*6)

php artisan vendor:publish --provider="danielme85\CConverter\CConverterServiceProvider"

All config variables can also be changed in your local .env file:, (*7)

CC_API_SOURCE=eurocentralbank
CC_USE_SSL=true
CC_FIXERIO_ACCESS_KEY=
CC_OPENEXCHANGE_APP_ID=
CC_CURRENCYLAYER_ACCESS_KEY=
CC_ENABLE_LOG=false
CC_ENABLE_CACHE=true
CC_CACHE_TIMEOUT=60

Usage

There are static class "shortcuts" to convert or get one-time Currency series., (*8)

//To convert a value
$valueNOK = Currency::conv($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2);

//To convert a value based on historical data
$valueNOK = Currency::conv($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2, $date = '2018-12-24');

//to get an array of all the rates associated to a base currency.
$rates = Currency::rates(); //defaults to USD

$rates = Currency::rates('NOK');

//Get historical rates
$rates = Currency::rates('NOK', '2018-12-24');

Working with multiple values

I would highly recommend creating a model instance and the non-static functions getRates() & convert() when doing multiple conversion or getting multiple currency series for the best performance. The currency rates are stored in the provider model by date/base-currency for quick and easy access., (*9)

$currency = new Currency();
$values = [1, 3, 4, 5...].
foreach ($values as $value) {
    $valueNOK = $currency->convert($from = 'USD', $to = 'NOK', $value = 10, $decimals = 2);
}

$rates = $currency->getRates('NOK');
foreach ($rates as $rate) {
    $value = $valueNOK * $rate;
}

You can override the settings when/if you create a new instance., (*10)

$currency = new Currency(
    $api = 'yahoo', 
    $https = false, 
    $useCache = false, 
    $cacheMin = 0);
...
$result = Currency:conv(
    $from = 'USD', 
    $to = 'NOK', 
    $value = 10, 
    $decimals = 2, 
    $date = '2018-12-24', 
    $api = 'yahoo', 
    $https = false, 
    $useCache = false, 
    $cacheMin = 0);

Use the three lettered ISO4217 code for to/from currencies: http://en.wikipedia.org/wiki/ISO_4217, (*11)

Money Formatting

The package: gerardojbaez/money is included for an easier and more powerful Money Formatter, excellent alternative to money_format(). You can get the values of an conversion by setting round='money' (money formatter overrides rounding)., (*12)

Currency::conv('USD', 'USD', 10, 2);
//Result: 10
Currency::conv('USD', 'USD', 10, 'money');
//Result: $10.00
$currency->convert('USD', 'USD', 10, 'money');
//Result: $10.00

You can also get the money formatter itself trough the static Currency function:, (*13)

$formater = Currency::money($amount = 0, $currency = 'USD');

This Money Formatter also ships with a handy helper function., (*14)

echo moneyFormat(10, 'USD');
//Result: $10.00

See Money Formatter github page for more information and usage. https://github.com/gerardojbaez/money, (*15)

Supported functions per API

Default API is: The European Central Bank, (*16)

Config var API HTTPS Historical Sign-up required URL
eurocentralbank The European Central Bank yes yes no https://sdw-wsrest.ecb.europa.eu/help/
openexchange OpenExchangeRates.com non-free non-free yes https://openexchangerates.org
currencylayer *CurrencyLayer non-free yes yes https://currencylayer.com
fixer *Fixer.io yes yes yes https://fixer.io

*CurrencyLayer and Fixer.io is the same company now, and it seems like the services have become one and the same., (*17)

Disclaimer

Please take note of the Terms of Use for the different data sources.
https://policies.yahoo.com/us/en/yahoo/terms/product-atos/yql/index.htm
https://currencylayer.com/terms
https://openexchangerates.org/terms, (*18)

This code is released per the MIT open source license: http://opensource.org/licenses/MIT The actual rates and conversion will vary between the data sources. In addition I am no math professor, so you should probably not use this for super serious multi-billion dollar investments. If you are gonna spend your hard earned billion dollars on the money market, you should probably use something like this: http://www.forex.com/forex.html, (*19)

The Versions

30/01 2018

dev-master

9999999-dev

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

The Development Requires

by Daniel Mellum

laravel currency finance conversion laravel-5

30/01 2018

v0.1.1

0.1.1.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

The Development Requires

by Daniel Mellum

laravel currency finance conversion laravel-5

30/08 2017

v0.1.0

0.1.0.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

The Development Requires

by Daniel Mellum

laravel currency finance conversion laravel-5

22/08 2017

v0.0.7

0.0.7.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

The Development Requires

by Daniel Mellum

laravel currency finance conversion laravel-5

02/06 2017

v0.0.6

0.0.6.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

by Daniel Mellum

laravel currency finance conversion laravel-5

01/12 2016

v0.0.5

0.0.5.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

by Daniel Mellum

laravel currency finance conversion laravel-5

06/08 2016

v0.0.4

0.0.4.0

Laravel 5 plug-in for currency conversion

  Sources   Download

MIT

The Requires

 

by Daniel Mellum

laravel currency finance conversion laravel-5

13/05 2015

v0.0.2-beta

0.0.2.0-beta

Laravel 5 plug-in for openexchangerates.org

  Sources   Download

MIT

The Requires

 

by Daniel Mellum

13/05 2015

v0.0.1-beta

0.0.1.0-beta

Laravel 5 plug-in for openexchangerates.org

  Sources   Download

MIT

The Requires

 

by Daniel Mellum