Skip to content

Instantly share code, notes, and snippets.

@angelorocha
Last active June 11, 2021 19:14
Show Gist options
  • Save angelorocha/f8fad053b35825472818149c1ad2b98f to your computer and use it in GitHub Desktop.
Save angelorocha/f8fad053b35825472818149c1ad2b98f to your computer and use it in GitHub Desktop.
WordPress - Convert brazilian real in dollar
<?php
/**
* USD to BRL
* API Docs: https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/aplicacao#!/recursos
* https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/aplicacao#!/recursos/CotacaoDolarDia#eyJmb3JtdWxhcmlvIjp7IiRmb3JtYXQiOiJqc29uIiwiJHRvcCI6MTAwLCJkYXRhQ290YWNhbyI6IjA2LTA4LTIwMjEifSwicHJvcHJpZWRhZGVzIjpbMCwxLDJdLCJwZXNxdWlzYWRvIjp0cnVlLCJhY3RpdmVUYWIiOiJkYWRvcyIsImdyaWRTdGF0ZSI6ewMwAzpbewNCAyIEMAQiLANBA30sewNCAyIEMQQiLANBA30sewNCAyIEMgQiLANBA31dLAMxAzp7fSwDMgM6W10sAzMDOnt9LAM0Azp7fSwDNQM6e319LCJwaXZvdE9wdGlvbnMiOnsDYQM6e30sA2IDOltdLANjAzo1MDAsA2QDOltdLANlAzpbXSwDZgM6W10sA2cDOiJrZXlfYV90b196IiwDaAM6ImtleV9hX3RvX3oiLANpAzp7fSwDagM6e30sA2sDOjg1LANsAzpmYWxzZSwDbQM6e30sA24DOnt9LANvAzoiQ29udGFnZW0iLANwAzoiVGFibGUifX0=
* https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao=%2706-08-2021%27&$top=100&$format=json&$select=cotacaoCompra,cotacaoVenda,dataHoraCotacao
*
* @param float $value BRL value to convert
* @param string $type 'cotacaoCompra' or 'cotacaoVenda'
*
* @return string
*
* Usage: echo wp_brl_to_usd(1);
*/
function wp_brl_to_usd(float $value, string $type = 'cotacaoVenda'){
$last_day = date('m-d-Y', strtotime("-1 days"));
$top = $select = $format = "";
$api = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='$last_day'&$top=100&$format=json&$select=cotacaoCompra,cotacaoVenda,dataHoraCotacao";
$get_data = json_decode(
wp_remote_retrieve_body(
wp_remote_request($api, ['method' => 'GET', 'timeout' => 120])
), true
);
$usd = (float) $get_data['value'][0][$type];
return number_format(round($usd * $value, 2), 2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment