Cotação do dólar com PHP

Neste artigo você vai aprender como consumir dados de uma API pública para obter o valor da cotação do dólar. Vamos fazer isso utilizando PHP.

O Banco Central do Brasil possui um site chamado "dados abertos" com APIs de uso geral referentes a vários indicadores financeiros.

https://dadosabertos.bcb.gov.br/

Vamos consumir a API referente a cotação do dólar, o link para você consultar as opções disponíveis é este:

https://bit.ly/2KKXKuy

Será necessário informar:

1 - O serviço que desejamos utilizar

2 - Uma data no formato mês-dia-ano.

3 - O formato da resposta. Por padrão a resposta é uma string no formato JSON.

Um exemplo de como acessar:

https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='08-15-2020'&$format=json

Para fazer a comunicação, utilizamos Curl. O cURL é uma ferramenta que permite criar requisições em diversos protocolos, como HTTP, HTTPS e FTP e obter conteúdo remoto. Ele  permite que façamos a conexao com webservices e APIs. O Curl  existe como ferramenta de linha de comando, e também como biblioteca, a libcurl, que o PHP incorpora e expõe por meio das funções que possuem curl_* no nome.

$ch = curl_init("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='08-14-2020'&format=json");

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$res_curl = curl_exec($ch);

if(curl_error($ch)) {

    echo curl_error($ch);

} else {

print_r($res_curl);

}

curl_close($ch);

 

Ao executar o comando acima, fizemos as seguintes operações

1 - No comando curl_init, informamos qual o endereço que queremos acessar, e enviamos os parâmetros através do método GET.

2 - Utilizando os comandos curl_setopt, podemos passar outrsa configurações para a nossa conexão, o primeiro parâmetro é a conexão, o segundo é o comando que queremos configurar, e o terceiro é o valor. A opção CURLOPT_HEADER com o valor 0 desativa o retorno das informações de cabeçalho do servidor que está sendo consultado.

3 - As opções CURLOPT_SSL_VERIFYPEER e CURLOPT_SSL_VERIFYHOST desabilitam a verificação do certificado para conexão com SSL. Para fins de testes, desativamos esta opção, mas em produção, ela deve ficar ativa.

4 - A opção CURLOPT_RETURNTRANSFER como true permite receber o retorno enviado pelo servidor que está sendo acessado.

5 - Finalmente, utilizando o comando curl_exec, executamos a nossa conexão, e guardamos o resultado na variável $res_curl

6 - Para verificar se houve erro, utilizandos o comando curl_error, passando como parâmetro a nossa conexão. Se houver erro de comunicação, imprimimos na tela o resultado. Caso contrário, exibimos na tela o resultado da conexão, que está guardado na variável $res_curl.

O resultado recebido do webservice é uma string no formato JSON. Para poder utilizar este resultado, vamos utilizar o comando json_decode, para converter esta string num array.

Um exemplo de conteúdo:

{"@odata.context":"https://was-p.bcnet.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata$metadata#_CotacaoDolarDia",

 "value":[{"cotacaoCompra":4.20060,"cotacaoVenda":4.20120,"dataHoraCotacao":"2019-11-21 13:03:40.946"}]}

Dentro deste JSON, existe um array de objetos dentro do campo "value". Como fizemos o filtro por 1 data, o array vai ter apenas uma posição.

$resultado = json_decode($res_curl, true);

$valores = $resultado["value"][0];

Para recuperar a informação da cotação do dólar, que está dentro da variável valores, vamos fazer o seguinte:

echo $valores["cotacaoCompra"];

Segue abaixo o código completo:

$ch = curl_init("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='08-14-2020'&format=json");

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$res_curl = curl_exec($ch);

if(curl_error($ch)) {

    echo curl_error($ch);

} else {

$resultado = json_decode($res_curl, true);

$valores = $resultado["value"][0];

//Agora será possível recuperar a informação da cotação do dólar:

echo $valores["cotacaoCompra"];

echo ('
');

echo $valores["cotacaoVenda"];

echo ('
');

echo $valores["dataHoraCotacao"];

}

curl_close($ch);

 

Veja outros conteúdos que podem ser de seu interesse