jimmerioles / bitcoin-currency-converter-php
A simple and lightweight bitcoin to currency converter and vice versa based on current exchange rates from your chosen provider: Coinbase, Coindesk, Bitpay and etc.
Installs: 2 675
Dependents: 0
Suggesters: 0
Security: 0
Stars: 12
Watchers: 4
Forks: 6
Open Issues: 1
Requires
- php: 8.0.* || 8.1.* || 8.2.*
- composer/composer: ^2.0
- guzzlehttp/guzzle: ^7.0
- illuminate/cache: ^9.0
- illuminate/filesystem: ^9.0
Requires (Dev)
- laravel/pint: 1.5.*
- mockery/mockery: ^1.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.12
- phpstan/phpstan-mockery: ^1.1
- phpstan/phpstan-strict-rules: ^1.6
- phpunit/phpunit: ^9.0
- rector/rector: ^1.2
- symplify/phpstan-rules: ^13.0
- thecodingmachine/phpstan-strict-rules: ^1.0
README
This library helps developers that need to easily convert bitcoin to fiat currency(ISO 4217) or to another cryptocurrency and vice versa from your exchange rates provider of choice.
Available exchange rates providers are:
If you have any request for other exchange rates provider or other features that you would like for me to add see Contributing.
Features
It is simple, lightweight, extensible, framework agnostic and fast.
- You can convert Bitcoin to any currency (ISO 4217 fiat or another cryptocurrency)
- You can convert any currency (ISO 4217 fiat or another cryptocurrency) to Bitcoin
- It supports different exchange rates providers: Coinbase, Coindesk, Bitpay
- It has baked-in caching (PSR16 compliant, swappable with your own or your framework's)
Install
Lets begin by installing the library by Composer:
$ composer require jimmerioles/bitcoin-currency-converter-php
Usage
You can then convert Bitcoin to any currency (ISO 4217 fiat or crypto) by:
use Jimmerioles\BitcoinCurrencyConverter\Converter; $convert = new Converter; // uses Coinbase as default provider echo $convert->toCurrency('USD', 0.5); // 2000.00 echo $convert->toCurrency('LTC', 0.5); // 10.12345678
or you can use the helper function for convenience:
// uses Coinbase as default provider echo to_currency('USD', 0.5); // 2000.00 echo to_currency('LTC', 0.5); // 10.12345678
You can also convert any currency (ISO 4217 fiat or crypto) to Bitcoin:
use Jimmerioles\BitcoinCurrencyConverter\Converter; $convert = new Converter; // uses Coinbase as default provider echo $convert->toBtc(100, 'USD'); // 0.12345678 echo $convert->toBtc(20, 'LTC'); // 1.12345678
and it also has its helper function for convenience:
// uses Coinbase as default provider echo to_btc(100, 'USD'); // 0.12345678 echo to_btc(20, 'LTC'); // 2.12345678
You can use different exchange rates from providers:
use Jimmerioles\BitcoinCurrencyConverter\Converter; use Jimmerioles\BitcoinCurrencyConverter\Provider\CoinbaseProvider; use Jimmerioles\BitcoinCurrencyConverter\Provider\CoindeskProvider; use Jimmerioles\BitcoinCurrencyConverter\Provider\BitpayProvider; $convert = new Converter(new CoinbaseProvider); $convert = new Converter(new CoindeskProvider); $convert = new Converter(new BitpayProvider);
or if you prefer to use the helper functions:
echo to_currency('USD', 0.5, new CoindeskProvider); // 2000.00 echo to_currency('LTC', 0.5, new BitpayProvider); // 10.12345678 echo to_btc(100, 'USD', new CoindeskProvider); // 0.12345678 echo to_btc(20, 'LTC', new BitpayProvider); // 2.12345678
You can specify cache expire time (ttl) on provider by:
new CoinbaseProvider($httpClient, $psr16CacheImplementation, 5); // cache expires in 5mins, defaults to 60mins
Change log
Please see CHANGELOG for more information on what has changed recently.
Testing
$ phpunit
Show full specs and features:
$ phpunit --testdox
Contributing
Open for suggestions and requests. Please request through issue or pull requests.
Security
If you discover any security related issues, please email jimwisleymerioles@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.