Utilizando o Web Service da Taxa PTAX do Banco Central: Exemplos em Python, PHP, C#, Node.js com React e Bootstrap, e SharePoint Framework (SPFx)

A API do Banco Central do Brasil oferece acesso às cotações da taxa PTAX, permitindo consultas programáticas em diversas linguagens e plataformas. Além dos exemplos em Python, PHP, C#, e Node.js, vamos mostrar também como criar uma WebPart no SharePoint Framework (SPFx) para exibir as cotações PTAX.

1. Acessando a API PTAX

A API do Banco Central pode ser acessada pela URL base:

https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/

Um exemplo de consulta à cotação do dólar no último dia útil:

https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$top=100&$format=json

A resposta virá em formato JSON, que é consumido facilmente por várias linguagens.

2. Exemplos de Código

2.1 Python

import requests

url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$format=json"
response = requests.get(url)
data = response.json()

for item in data['value']:
    print(f"Data: {item['dataHoraCotacao']}, Valor: {item['cotacaoCompra']}")

2.2 PHP

<?php
$url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&\$format=json";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
foreach ($data['value'] as $item) {
    echo "Data: " . $item['dataHoraCotacao'] . " - Valor: " . $item['cotacaoCompra'] . "<br>";
}
?>

2.3 C

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='12-31-2023'&$format=json";
        using HttpClient client = new HttpClient();
        string response = await client.GetStringAsync(url);
        JObject data = JObject.Parse(response);

        foreach (var item in data["value"])
        {
            Console.WriteLine($"Data: {item["dataHoraCotacao"]}, Valor: {item["cotacaoCompra"]}");
        }
    }
}

3. Exemplo com Node.js, React e Bootstrap

Este exemplo renderiza os dados da PTAX em uma página React estilizada com Bootstrap.

Backend (Node.js)

const express = require('express');
const axios = require('axios');
const app = express();

app.get('/api/ptax', async (req, res) => {
    try {
        const response = await axios.get(`https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinal=@dataFinal)?@dataInicial='2013-01-01'&@dataFinal='2023-12-31'&$format=json`);
        res.json(response.data);
    } catch (error) {
        res.status(500).json({ error: "Erro ao buscar dados" });
    }
});

app.listen(3001, () => {
    console.log("Servidor rodando na porta 3001");
});

Frontend (React + Bootstrap)

import React, { useEffect, useState } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import axios from 'axios';

function PtaxTable() {
    const [cotacoes, setCotacoes] = useState([]);

    useEffect(() => {
        axios.get('/api/ptax')
            .then(response => {
                setCotacoes(response.data.value);
            })
            .catch(error => {
                console.error("Erro ao buscar dados da PTAX", error);
            });
    }, []);

    return (
        <div className="container">
            <h1 className="mt-5">Cotações PTAX dos Últimos 10 Anos</h1>
            <table className="table table-bordered mt-3">
                <thead>
                    <tr>
                        <th>Data</th>
                        <th>Valor de Compra</th>
                        <th>Valor de Venda</th>
                    </tr>
                </thead>
                <tbody>
                    {cotacoes.map((cotacao, index) => (
                        <tr key={index}>
                            <td>{new Date(cotacao.dataHoraCotacao).toLocaleDateString()}</td>
                            <td>{cotacao.cotacaoCompra}</td>
                            <td>{cotacao.cotacaoVenda}</td>
                        </tr>
                    ))}
                </tbody>
            </table>
        </div>
    );
}

export default PtaxTable;

4. Exemplo com SharePoint Framework (SPFx)

Agora vamos criar uma WebPart no SharePoint Framework (SPFx) para exibir a cotação PTAX. Esta WebPart será desenvolvida utilizando React.

4.1 Criando o Projeto SPFx

  1. Instale o Yeoman e o template do SharePoint:
   npm install -g yo @microsoft/generator-sharepoint
  1. Crie um novo projeto SPFx:
   yo @microsoft/sharepoint

Selecione as seguintes opções:

  • Component type: WebPart
  • Framework: React

4.2 Implementação da WebPart

No arquivo PtaxWebPart.tsx, configure o React para buscar e exibir os dados da API PTAX.

import * as React from 'react';
import { useEffect, useState } from 'react';
import { SPComponentLoader } from '@microsoft/sp-loader';
import { HttpClient, HttpClientResponse } from '@microsoft/sp-http';
import { IPtaxWebPartProps } from './IPtaxWebPartProps';

const PtaxWebPart: React.FC<IPtaxWebPartProps> = (props) => {
  const [cotacoes, setCotacoes] = useState([]);

  useEffect(() => {
    const url = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinal=@dataFinal)?@dataInicial='2013-01-01'&@dataFinal='2023-12-31'&$format=json";

    props.httpClient.get(url, HttpClient.configurations.v1)
      .then((response: HttpClientResponse) => response.json())
      .then((data) => setCotacoes(data.value))
      .catch(error => console.log("Erro ao buscar dados PTAX: ", error));
  }, []);

  return (
    <div className="ptaxWebPart">
      <h1>Cotações PTAX</h1>
      <table className="table table-striped">
        <thead>
          <tr>
            <th>Data</th>
            <th>Valor de Compra</th>
            <th>Valor de Venda</th>
          </tr>
        </thead>
        <tbody>
          {cotacoes.map((cotacao, index) => (
            <tr key={index}>
              <td>{new Date(cotacao.dataHoraCotacao).toLocaleDateString()}</td>
              <td>{cotacao.cotacaoCompra}</td>
              <td>{cotacao.cotacaoVenda}</td>
            </tr>
          ))}
        </tbody>
      </table>
    </div>
  );
};

export default PtaxWebPart;

4.3 Publicando a WebPart

Após implementar o código, execute os seguintes comandos para buildar e servir a WebPart no ambiente local:

gulp serve

Você poderá ver a WebPart em funcionamento no SharePoint, exibindo as cotações PTAX dos últimos 10 anos.

Conclusão

Neste artigo, abordamos como acessar a taxa PTAX do Banco Central do Brasil e apresentamos exemplos práticos em Python, PHP, C#, e Node.js com React e Bootstrap. Além disso, implementamos uma WebPart no SharePoint Framework (SPFx) para exibir essas informações diretamente no ambiente do SharePoint.

Edvaldo Guimrães Filho Avatar

Published by

Leave a comment