Jump to content
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 

Share this post


Link to post
Share on other 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'];

 

 

 

 

Share this post


Link to post
Share on other 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'];

 

Share this post


Link to post
Share on other 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.

 

 

 

Share this post


Link to post
Share on other 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!";
}

 

Share this post


Link to post
Share on other 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>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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']; } }  
    • By 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?
    • By 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.
    • By 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*

    • By 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).
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.