Tableless

Busca Menu

API de cotações de Bolsa de Valores, Dólar e Euro

Seja o primeiro a comentar por

Hoje em dia é muito comum os sites terem um widget ou uma barra lateral com informações de cotações do dólar, euro e os principais mercados financeiros do mundo.

Como o mercado oscila muito, essas informações são atualizadas constantemente, de minuto a minuto. Se você está pensando em mostrar essas informações em seu site, com certeza vai precisar de uma API para consultar estes dados em tempo real.

O pessoal da Agência Ideias criou uma API bem legal para consulta de cotações em tempo real, sendo o valor do euro e do dólar referentes aos valores de compra dessas moedas. O formato do retorno da consulta pode ser JSON ou XML, dependendo da necessidade de sua aplicação. Para a nossa classe em PHP, vamos utilizar o formato de retorno em JSON.

Vamos criar um novo arquivo em PHP com o nome Quotation.php. Nele vamos criar a classe Quotation. Logo no início da classe, vamos declarar duas variáves estáticas que serão usadas por nossa classe. Uma delas é o endereço da API e a outra é o conteúdo que será retornado por ela.

class Quotation {

  private static $apiUrl = "http://developers.agenciaideias.com.br/cotacoes/json";
  private static $content;

}

Em seguida, vamos criar um método estático para preparar nossa classe para a interação com a API:

public static function init() {

  self::$content = file_get_contents(self::$apiUrl);
  self::$content = json_decode(self::$content);
}

O conteúdo do retorno da API é semelhante a este:

{
  "bovespa":{
    "cotacao":"46955",
    "variacao":"-0.14"
  },
  "dolar": {
    "cotacao":"2.7500",
    "variacao":"+2.34"
  },
  "euro":{
    "cotacao":"3.4427",
    "variacao":"+2.65"
  },
  "atualizacao":"16\/12\/14   - 14:08"
}

Para que possamos organizar melhor as informações, vamos criar um método para cada tipo de cotação:

  public static function dolar() {

        self::init();
        return array(
            "quotation" => self::$content->dolar->cotacao,
            "variation" => self::$content->dolar->variacao,
            "status" => self::getVariation(self::$content->dolar->variacao)
        );
    }

    public static function bovespa() {

        self::init();
        return array(
            "quotation" => self::$content->bovespa->cotacao,
            "variation" => self::$content->bovespa->variacao,
            "status" => self::getVariation(self::$content->bovespa->variacao)
        );
    }

    public static function euro() {

        self::init();
        return array(
            "quotation" => self::$content->euro->cotacao,
            "variation" => self::$content->euro->variacao,
            "status" => self::getVariation(self::$content->euro->variacao)
        );
    }

Cada um destes métodos utiliza o método init() que inicializa a interação da nossa classe com a API e guarda o retorno na variável estática de classe self::$content.

Por último, vamos criar um último método apenas para verificar se a variação teve uma alta ou uma baixa:

  public static function getVariation($variation) {
        if (strpos($variation, "+")) {
            return "+";
        } else {
            return "-";
        }
  }

Como exemplo, vamos verificar a cotação do dólar:

  $dolar = Quotation::dolar();
  echo "Cotação do Dólar:\n";
  echo "Valor: R$" . number_format($dolar['quotation'], 2, ',', '.') . "\n";
  echo "Variação: {$dolar['variation']}";

A classe pode ser baixada na íntegra aqui.

Espero que tenham gostado do post. Não deixem de comentar e deixar suas dúvidas.

Publicado no dia