Ir para conteúdo
biakelly

Pegando valor de API

Recommended Posts

Meninos, criei esta função em PHP para coletar dados de uma API, consigo fazer funcionar com outras APIs de empresas parecidas mas esta empresa especificamente não trás os dados apontados. Poderiam me ajudar?

 

Código:

$cache_cointrade = 'cointrade';
if (file_exists($cache_cointrade)) {
  if (time() - filemtime($cache_cointrade) > $cachetime) {
    $cache = file_get_contents("https://api.cointradecx.com/public/ticker?market=BTC_BRL");
    file_put_contents($cache_cointrade, $cache);
    $json_cointrade = file_get_contents($cache_cointrade);
  } else {
    $json_cointrade = file_get_contents($cache_cointrade);
  }
} 

$data_coin_trade = json_decode($json_cointrade, true);
$cointrade_price = $data_coin_trade['success']['last'];
$cointrade_volume = $data_coin_trade['success']['vol24h'];
$varcointrade = $cointrade_price * $cointrade_volume;

Talvez o erro esteja aqui:

 

$cointrade_price = $data_coin_trade['success']['last'];
$cointrade_volume = $data_coin_trade['success']['vol24h'];

 

 

Mas não tenho certeza porque não aparece 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente, to desesperada, não stou conseguindo fazer

 

As outras apis funcionaram, só essa que não sobe nem por reza.

 

percebi que nesta api ela traz um colchetes que nas outras não trás:

{"success":true,"result":[{"timestamp":1585166513,"market":"BTC_BRL"}]}

 

nas outras o padrão é assim:

{"success":true,"result":{"timestamp":1585166513,"market":"BTC_BRL"}}

 

 

estou chamando assim nas demais e funciona, mas nesta por conta do colchetes nào trás, será que é isso?

$cointrade_price = $data_coin_trade['result']['last'];
$cointrade_volume = $data_coin_trade['result']['vol24h'];

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá!

 

Segue exemplo de retorno da API utilizada:

array(3) {
  ["success"]=>
  bool(true)
  ["message"]=>
  string(0) ""
  ["result"]=>
  array(1) {
    [0]=>
    array(11) {
      ["timestamp"]=>
      int(1585171832)
      ["market"]=>
      string(7) "BTC_BRL"
      ["ask"]=>
      string(10) "35449.9999"
      ["bid"]=>
      string(10) "34450.0001"
      ["last"]=>
      string(10) "34004.0000"
      ["spread"]=>
      string(6) "2.9028"
      ["low24h"]=>
      string(10) "33000.0000"
      ["high24h"]=>
      string(10) "35799.9999"
      ["vol24h"]=>
      string(10) "2.11694748"
      ["quoteVolume"]=>
      string(14) "73242.52739178"
      ["isFrozen"]=>
      int(0)
    }
  }
}

Repare que os dados que você deseja obter estão

dentro de um array, então para você obter o mesmo

deveria fazer algo como no exemplo abaixo:

 

CÓDIGO:

$cointrade_price = $data_coin_trade['result'][0]['last'];
$cointrade_volume = $data_coin_trade['result'][0]['vol24h'];

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi ShadowDLL, eu até fiz desta forma, mas como não retornou resultado achei que estava errado fazer assim. Repliquei novamente seu exemplo, mas mesmo assim não retornou os 2 dados que preciso. Estranho, acho que estou errando em algum caminho.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o mesmo está ocorrendo

porque você está tentando usar variáveis

que só serão criadas caso o arquivo

cointrade exista...

 

Tente fazer algo assim então:

 

CÓDIGO:

<?php
$cache_cointrade = 'cointrade';

if (file_exists($cache_cointrade)) {
	if (time() - filemtime($cache_cointrade) > $cachetime) {
		$cache = file_get_contents("https://api.cointradecx.com/public/ticker?market=BTC_BRL");
		file_put_contents($cache_cointrade, $cache);
		$json_cointrade = file_get_contents($cache_cointrade);
	} else {
		$json_cointrade = file_get_contents($cache_cointrade);
	}

	$data_coin_trade = json_decode($json_cointrade, true);

	$cointrade_price = $data_coin_trade['result'][0]['last'];
	$cointrade_volume = $data_coin_trade['result'][0]['vol24h'];

	$varcointrade = $cointrade_price * $cointrade_volume;

	echo "<pre>";
	var_dump($data_coin_trade);
	var_dump($cointrade_price);
	var_dump($cointrade_volume);
	var_dump($varcointrade);
} else {
	echo "O arquivo não existe!";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm, ele traz exatamente o que você falou:

 

array(3) {
  ["success"]=>
  bool(true)
  ["message"]=>
  string(0) ""
  ["result"]=>
  array(1) {
    [0]=>
    array(11) {
      ["timestamp"]=>
      int(1585243457)
      ["market"]=>
      string(7) "BTC_BRL"
      ["ask"]=>
      string(10) "35000.0000"
      ["bid"]=>
      string(10) "33603.0000"
      ["last"]=>
      string(10) "33424.0000"
      ["spread"]=>
      string(6) "4.1574"
      ["low24h"]=>
      string(10) "33000.0000"
      ["high24h"]=>
      string(10) "35480.0001"
      ["vol24h"]=>
      string(10) "2.91135764"
      ["quoteVolume"]=>
      string(15) "100800.96901932"
      ["isFrozen"]=>
      int(0)
    }
  }
}
NULL
NULL
int(0)

 

 

Neste caso como é que trago apenas o valor da linha?

 

["last"]=> string(10) "33424.0000"

e da linha 

["low24h"]=> string(10) "33000.0000"

 

 

No html estou chamando assim:

<td> <?= number_format($cointrade_price, 2, ',', '.') ?></td>

<td><?= number_format($cointrade_volume, 2, ',', '.') ?></td>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Giovanird
      Olá a todos!
      Tenho uma api  Sala de Aula e dentro dela o id de cada aluno. Em outra api, API ALUNO,  tenho os dados de cada aluno:  nome, foto, endereço.
      Estou fazendo o foreach da api Sala de Aula e preciso também retornar os dados de cada aluno.
      Segue o código que não estou conseguindo desenvolver
      $sala = file_get_contents("https://api/sala?id=987"); $sala = json_decode($sala, true); $sala = $sala['data']; foreach ($sala as $resulsala){ $codigoaluno = $resulsala['idaluno']; $alunos = file_get_contents("https://api/alunos?id=$codigoaluno"); $alunos = json_decode($alunos, true); $alunos = $alunos['data']; foreach ($alunos as $resulalunos){ echo $resulalunos['nome']; echo $resulalunos['foto']; echo $resulalunos['rua']; } }  
    • Por Orico Chain
      Oi pessoal,
       
      Preciso de ajuda, estou tentando gerar um TXT com dados de uma API mas não estou conseguindo:
       
      <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.bololex.com/api/prices/TRX-USDT", CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "cache-control: no-cache" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); $response = json_decode($response, true); $value1 = $response['result'] [0] ['ask'] ['priceChange']; if (empty($value1)) { $value1 = is_file('/var/www/html/24tstar.txt') ? file_get_c> } else { $value1 = round($value1, 6); file_put_contents('/var/www/html/24tstar.txt', $value1); Preciso que o TXT grave duas informações: ASK e PRICECHANGE uma em baixo da outra
       
      estou errando alguem lugar, alguém poderia me ajudar?
    • Por Kelven
      Bom dia pessoal tudo bem?
      Então, estou trabalhando em um site em php e preciso usar a api do facebook para obter o feed do instagram, porém a chave token é um conteúdo muito sensível, então decidi fazer em php para ela não ficar disponível do lado do cliente. Alguém sabe me dizer se é possível fazer isso? Porque eu pesquisando no google só achei maneiras de fazer em javascript.
    • Por zuuzu
      Olá, estou desenvolvendo uma api para download de fotos/videos/gif, eu consegui fazer tudo certinho, mas na hora de gerar um link de download aleatório ele gera sempre o mesmo, só gera um link diferente se eu reiniciar o servidor, queria que gerasse um link diferente sempre que eu reiniciasse a página, sem precisar reiniciar o servidor. Tem como alguém me ajudar com isso? *A api está sendo desenvolvida para a automatização de download de fotos/videos/gif*

    • Por New Job
      Boa tarde, tenho um site de imobiliária e gostaria de integrar com este sistema.
       
      Documentação API: http://vistasoft.com.br/api/

      Seria para exibir os imóveis no site
      (54) 999350968 (whatsapp).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.