/money-wrapper

Money Wrapper for Money

Primary LanguagePHPMIT LicenseMIT

Build Status Latest Stable Version Total Downloads License

MoneyPHP Wrapper

This is a wrapper for Money.

This wrapper:

  1. Provide a Money helper - money()
  2. Intended for Laravel Framework, but can be use outside from Laravel Framework as well.
  3. Provide common usage such as:
  • For Human Readability - RM 1.00, RM 345.00
  • For Common Display - 1.00, 345.00
  • For Machine (intended format to store in Database - integer) - 100, 34500
  • Fixed Exchange Rate Conversion - $ 1 > RM 3.87

Installation

  1. In order to install cleaniquecoders/money-wrapper in your Laravel project, just run the composer require command from your terminal:
$ composer require cleaniquecoders/money-wrapper
  1. Then in your config/app.php add the following to the providers array:
CleaniqueCoders\MoneyWrapper\MoneyWrapperServiceProvider::class,
  1. In the same config/app.php add the following to the aliases array:
'MoneyWrapper' => CleaniqueCoders\MoneyWrapper\MoneyWrapperFacade::class,
  1. Publish Money Wrapper Config:
$ php artisan vendor:publish --tag=money-wrapper-config

You may want to add more currency details based on country. See contributions section below for the details.

Usage

Get Money Wrapper Instance

By default, MYR, Malaysia Ringgit currency will be use.

You may override either by .env file or pass the country Alpha 2 code when calling money() helper.

$money = money(); // by default it will use MY
$moneyUsd = money('US'); // pass the country code - ISO Alpha 2

You can add more currencies after publishing the Money Wrapper configuration file and added more supported currencies.

Please refer to Country Code and it's currency swift code and symbol in Currency List.

Get Money Format

echo money()->toHuman(100); // RM 1.00, useful for human readability
echo money()->toCommon(100); // 1.00
echo money()->toMachine('1.00'); // 100, always store in database as integer. 

Convert Fixed Rate

$fixedExchange = [
    'MYR' => [
        'USD' => 3.87,
    ],
];
echo money()->convertFixedRate($fixedExchange, 100, 'USD')->getAmount(); // 387

Recommended data type used in database is big integer

Contributions

Updating currency list (config/currency.php) available based on following resources:

  1. Use Country ISO Alpha 2 Code for the Key as defined in Country List.
  2. Refer currency list for the available currency.
  3. Use symbol as per stated in www.xe.com.

The structure will be as following:

[
	'MYR' => [
		'swift_code' => 'MYR',
		'symbol' => 'RM'
	]
]

License

This package is open-sourced software licensed under the MIT license.