First, you need to create an HTTP adapter provided by the egeloen/ivory-http-adapter library.
Swap alternatives and similar libraries
Based on the "E-commerce" category.
Alternatively, view Swap alternatives based on common mentions on social networks and blogs.
9.1 0.0 Swap VS OmniPayA framework agnostic, multi-gateway payment processing library for PHP 5.6+
7.5 0.0 L4 Swap VS PayumPHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Swap or a related project?
Swap allows you to retrieve currency exchange rates from various services such as Fixer, currencylayer, exchangeratesapi or Abstract and optionally cache the results. It is integrated to other libraries like moneyphp/money and provides a Symfony Bundle and a Laravel Package.
Fixer is a simple and lightweight API for foreign exchange rates that supports up to 170 world currencies.
currencylayer provides reliable exchange rates and currency conversions for your business up to 168 world currencies.
exchangeratesapi provides reliable exchange rates and currency conversions for your business with over 15 data sources.
Abstract provides simple exchange rates for developers and a dozen of APIs covering thousands of use cases.
$ composer require php-http/curl-client nyholm/psr7 php-http/message florianv/swap
use Swap\Builder; // Build Swap $swap = (new Builder()) // Use the Fixer.io service as first level provider ->add('fixer', ['access_key' => 'your-access-key']) // Use the currencylayer.com service as first fallback ->add('currency_layer', ['access_key' => 'secret', 'enterprise' => false]) // Use the exchangeratesapi.io service as second fallback ->add('exchange_rates_api', ['access_key' => 'secret']) // Use the abstractapi.com service as third fallback ->add('abstract_api', ['api_key' => 'secret']) ->build(); // 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 15 days ago $rate = $swap->historical('EUR/USD', (new \DateTime())->modify('-15 days'));
We recommend to use the services that support our project, providing a free plan up to 1,000 requests per day.
The documentation for the current branch can be found here.
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|
|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|
|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|
|Currency Converter API||*||*||Yes (free but limited or paid)|
|fastFOREX.io||USD (free), * (paid)||*||No|
Additionally, you can add your own services as long as they implement the
The MIT License (MIT). Please see LICENSE for more information.
*Note that all licence references and agreements mentioned in the Swap README section above are relevant to that project's source code only.