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
- Instale o Yeoman e o template do SharePoint:
npm install -g yo @microsoft/generator-sharepoint
- 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.

Leave a comment