Pular para o conteúdo
PHP

PHP — Cotação de Moedas Diversas

Capa do artigo: PHP — Cotação de Moedas Diversas

Olá Gente!


Obter a cotação de moedas é algo que deveria ser super simples, mas encontrar uma API boa e gratuita é complicado.


Para isto, iremos utilizar a API:

ExchangeRate-API - Free & Pro Currency Converter APIAccurate & reliable Exchange Rates API trusted by tens of thousands of developers since 2010. Free access, all world currencies, helpful support & easy to integrate JSON API.exchangerate-api.com

Esta API permite que você faça até 1500 requisições por mês de forma gratuita.

Com isto, basta consulta algumas vezes por dia e deixar em cache.


Antes de tudo, precisamos criar uma API KEY, para isto, faça seu cadastro abaixo:

ExchangeRate-API - Free Plan Sign UpGet an ExchangeRate-API account for free & instant access to our foreign exchange rates API.app.exchangerate-api.com

Sua API KEY será exibida ao lado de “Your API Key”:


Antes de obtermos a cotação de uma moeda, precisamos checar quais as moedas que eles tem cotação, para isto, acesse:

ExchangeRate-API - Supported Currency Codes and CountriesOur API supports 160 currencies used by nearly every country in the world. This list of currency codes will help get you started!exchangerate-api.com

Em nosso exemplo, iremos buscar a cotação do DÓLAR, que possui sigla USD.


Para obtermos os dados deste moeda, iremos fazer uma GET para:

https://v6.exchangerate-api.com/v6/[API_KEY]/latest/[MOEDA]


Observe que aqui, precisamos preencher:

- API_KEY: Sua API KEY gerada no painel da Exchange
- MOEDA: A Sigla da moeda que verificamos na lista de moedas suportadas


Exemplo:

<?php
$curl 		= curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL 				=> "https://v6.exchangerate-api.com/v6/7a9671e7d6e765698a60b6ad/latest/USD",
CURLOPT_RETURNTRANSFER 		=> true,
CURLOPT_MAXREDIRS 			=> 10,
CURLOPT_TIMEOUT 			=> 30,
CURLOPT_SSL_VERIFYHOST 		=> false,
CURLOPT_SSL_VERIFYPEER 		=> false
));

$response 	= curl_exec($curl);
$response2  = json_decode($response, true);

curl_close($curl);

var_dump($response2);
?>


Será retornado um array com os dados da Moeda:

{
 "result":"success",
 "documentation":"https://www.exchangerate-api.com/docs",
 "terms_of_use":"https://www.exchangerate-api.com/terms",
 "time_last_update_unix":1706572801,
 "time_last_update_utc":"Tue, 30 Jan 2024 00:00:01 +0000",
 "time_next_update_unix":1706659201,
 "time_next_update_utc":"Wed, 31 Jan 2024 00:00:01 +0000",
 "base_code":"USD",
 "conversion_rates":{
  "USD":1,
  "AED":3.6725,
  "AFN":73.2580,
  "ALL":96.7955,
  "AMD":403.3222,
  "ANG":1.7900,
  "AOA":837.1182,
  "ARS":825.2500,
  "AUD":1.5142,
  "AWG":1.7900,
  "AZN":1.6995,
  "BAM":1.8068,
  "BBD":2.0000,
  "BDT":109.6160,
  "BGN":1.8068,
  "BHD":0.3760,
  "BIF":2847.3133,
  "BMD":1.0000,
  "BND":1.3408,
  "BOB":6.8450,
  "BRL":4.9122,
  "BSD":1.0000,
  "BTN":83.1571,
  "BWP":13.6783,
  "BYN":3.1878,
  "BZD":2.0000,
  "CAD":1.3430,
  "CDF":2725.8259,
  "CHF":0.8624,
  "CLP":919.5529,
  "CNY":7.1848,
  "COP":3990.8186,
  "CRC":515.2000,
  "CUP":24.0000,
  "CVE":101.8609,
  "CZK":22.8978,
  "DJF":177.7210,
  "DKK":6.8869,
  "DOP":57.3759,
  "DZD":134.1501,
  "EGP":30.8936,
  "ERN":15.0000,
  "ETB":56.5600,
  "EUR":0.9236,
  "FJD":2.2347,
  "FKP":0.7873,
  "FOK":6.8932,
  "GBP":0.7871,
  "GEL":2.6694,
  "GGP":0.7873,
  "GHS":12.3569,
  "GIP":0.7873,
  "GMD":65.4107,
  "GNF":8575.0702,
  "GTQ":7.7438,
  "GYD":209.3641,
  "HKD":7.8139,
  "HNL":24.4245,
  "HRK":6.9602,
  "HTG":131.7862,
  "HUF":359.3421,
  "IDR":15820.6210,
  "ILS":3.6654,
  "IMP":0.7873,
  "INR":83.1595,
  "IQD":1308.8119,
  "IRR":42028.4106,
  "ISK":137.2128,
  "JEP":0.7873,
  "JMD":155.3624,
  "JOD":0.7090,
  "JPY":147.6165,
  "KES":162.1614,
  "KGS":89.3429,
  "KHR":4099.6510,
  "KID":1.5143,
  "KMF":454.4711,
  "KRW":1335.0534,
  "KWD":0.3058,
  "KYD":0.8333,
  "KZT":449.9201,
  "LAK":20383.0453,
  "LBP":15000.0000,
  "LKR":317.8679,
  "LRD":189.2299,
  "LSL":18.7957,
  "LYD":4.8161,
  "MAD":10.0061,
  "MDL":17.7357,
  "MGA":4529.3791,
  "MKD":56.7230,
  "MMK":2081.4886,
  "MNT":3426.2765,
  "MOP":8.0478,
  "MRU":39.5775,
  "MUR":44.9528,
  "MVR":15.4213,
  "MWK":1691.4282,
  "MXN":17.2143,
  "MYR":4.7339,
  "MZN":63.8816,
  "NAD":18.7957,
  "NGN":893.0747,
  "NIO":36.2327,
  "NOK":10.4314,
  "NPR":133.0514,
  "NZD":1.6332,
  "OMR":0.3845,
  "PAB":1.0000,
  "PEN":3.8022,
  "PGK":3.6870,
  "PHP":56.4024,
  "PKR":278.7576,
  "PLN":4.0328,
  "PYG":7293.8181,
  "QAR":3.6400,
  "RON":4.6013,
  "RSD":108.3293,
  "RUB":89.4815,
  "RWF":1307.2231,
  "SAR":3.7500,
  "SBD":8.5066,
  "SCR":13.5232,
  "SDG":454.2660,
  "SEK":10.4639,
  "SGD":1.3405,
  "SHP":0.7873,
  "SLE":22.4799,
  "SLL":22479.9107,
  "SOS":571.6542,
  "SRD":36.9043,
  "SSP":1105.2015,
  "STN":22.6327,
  "SYP":12766.5229,
  "SZL":18.7957,
  "THB":35.4942,
  "TJS":10.9252,
  "TMT":3.4999,
  "TND":3.1154,
  "TOP":2.3350,
  "TRY":30.3612,
  "TTD":6.7083,
  "TVD":1.5143,
  "TWD":31.1570,
  "TZS":2543.7517,
  "UAH":37.8757,
  "UGX":3807.0967,
  "UYU":38.9870,
  "UZS":12354.7016,
  "VES":36.1418,
  "VND":24466.6521,
  "VUV":119.8510,
  "WST":2.7395,
  "XAF":605.9615,
  "XCD":2.7000,
  "XDR":0.7529,
  "XOF":605.9615,
  "XPF":110.2368,
  "YER":247.6332,
  "ZAR":18.7947,
  "ZMW":27.0249,
  "ZWL":9805.2621
 }
}


A informação mais importante aqui esta no elemento “conversion_rates” onde consta a cotação do DÓLAR para várias outras moedas.


Neste caso, para REAL, iremos buscar o elemento “BRL”:

{
“BRL”:4.9122
}


Você pode também, fazer uma busca de conversão direta, ou seja “Quanto é 1 dólar para 1 real”, para isto, iremos faer uma GET para:

https://v6.exchangerate-api.com/v6/[API_KEY]/pair/[MOEDA_ORIGEM]/[MOEDA_DESTINO]


Observe que aqui, precisamos preencher:

- API_KEY: Sua API KEY gerada no painel da Exchange
- MOEDA_ORIGEM: A moeda de origem, neste exemplo, “USD”
- MOEDA_DESTINO: A moeda de destino, neste caso, “BRL”


Exemplo:

<?php
$curl 		= curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL 				=> "https://v6.exchangerate-api.com/v6/7a9671e7d6e765698a60b6ad/pair/USD/BRL",
CURLOPT_RETURNTRANSFER 		=> true,
CURLOPT_MAXREDIRS 			=> 10,
CURLOPT_TIMEOUT 			=> 30,
CURLOPT_SSL_VERIFYHOST 		=> false,
CURLOPT_SSL_VERIFYPEER 		=> false
));

$response 	= curl_exec($curl);
$response2  = json_decode($response, true);

curl_close($curl);

var_dump($response2);
?>


Será retornado um array onde o valor da conversão esta em “conversion_rate”:

{
  "result": "success",
  "documentation": "https://www.exchangerate-api.com/docs",
  "terms_of_use": "https://www.exchangerate-api.com/terms",
  "time_last_update_unix": 1706572801,
  "time_last_update_utc": "Tue, 30 Jan 2024 00:00:01 +0000",
  "time_next_update_unix": 1706659201,
  "time_next_update_utc": "Wed, 31 Jan 2024 00:00:01 +0000",
  "base_code": "USD",
  "target_code": "BRL",
  "conversion_rate": 4.9122
}


Neste caso:

{
“conversion_rate”: 4.9122
}


Por hoje é isto, queridos desenvolvedores! 👩‍💼
Até logo! 👋

PHP

Leia também