Jump to content
biakelly

Cálculo dinâmico utilizando valor recuperado de uma api

Recommended Posts

Oi, vim do fórum de PHP,  eu havia postado uma dúvida lá, mas acredito e por recomendação que minha dúvida seja melhor aplicada aqui.

 

Bem, estou fazendo uma página que precisa ter a cotação do Bitcoin.

Nesta pagina preciso de 2 inputs um que traga o preço do bitcoin e outro que traga o preço em real.

Ex: 1 Bitcoin custa R$ xxx,00 reais (valor padrão)

 

Mas ao digitar R$100,00 no campo real ele precisa trazer o preço equivalente a quantidade de Bitcoins que vale R$100,00

O mesmo para o Bitcoin, se eu digitar uma fração ele precisaria trazer o valor em Reais.

 

Encontrei um site que faz isso (https://dolarhoje.com/bitcoin-hoje/), mas queria algo para minha página parecido

 

 

Bem, até consigo pegar o valor com este código simples em PHP:

 

<?php
$url = 'https://www.mercadobitcoin.net/api/btc/ticker';
$result = file_get_contents($url);
$result = json_decode($result, true);
?>

 

Será que em Javascript é possível fazer isso? Desculpem, entendo quase zero de Javascript

Vocês conseguem me ajudar?

Share this post


Link to post
Share on other sites
const url = "https://www.mercadobitcoin.net/api/btc/ticker";

async function fetchBitcoinTickerJSON() {
  const response = await fetch(url);
  return await response.json();
}

fetchBitcoinTickerJSON().then(data => {
  console.log(data)
});

 

Share this post


Link to post
Share on other sites

Oi Wanderval, obrigada pelo retorno.

 

Desculpe minha pergunta, como chamo nestes inputs com Javascript. Desculpe se eu estiver abusando na pergunta

Share this post


Link to post
Share on other sites

Manipular o input não é dificil, mas não acho que essa API de o suporte que você precisa!

 

Pelo que entendi você quer enviar um currency de "Real" BRL e receber o valor calculado de bitcoin. 

A API que você colocou acredito que somente informe dados de bitcoin, relacionado a transações de mercado.

não vi na doc uma forma de enviar um currency, então se esse é seu objetivo então vai ter que usar outra API

 

Share this post


Link to post
Share on other sites

Humm, pelo que entendi pelo valor do Bitcoin da para descobrir a fração tem que fazer assim:

 

R$1.000,00 = 1000/Bitcoin (valor atual)

 

Exemplo 1000 / 167096.00 = 0,005984583712357 (essa é a fração de bitcoin que custa R$1.000,00)

Share this post


Link to post
Share on other sites

Legal ficar sabendo disso,

Abaixo eu vou deixar um código com uma lógica básica manipulando o primeiro input!

Html:

<body>
  <div>
    <input id="currency" onBlur="calcBitCoinValue()"/>
    <input id="bitcoin"/>
  </div>
</body>

JS:

let currentBitcoinValue = 0;
let currentCurrencyValue = 0;

function fetchBitcoinTickerJSON() {
  const url = "https://www.mercadobitcoin.net/api/btc/ticker";
  
  fetch(url)
    .then(response => response.json())
    .then(data => {
        currentBitcoinValue = data.ticker.buy;
     });
}

function init() {
  fetchBitcoinTickerJSON();
}

function calcBitCoinValue() {
  const bitCoin = document.getElementById("bitcoin");
  const realValue = parseFloat(document.getElementById("currency").value);
  
  bitCoin.value = realValue/currentBitcoinValue;
}

init();

Link JsBin: https://jsbin.com/yunimovuda/edit?html,js,output

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 Sapinn
      Eu tenho um form e toda vez que alguém clicar no input eu quero que a borda de baixo mude a cor e quando ele clicar fora quero que volte ao normal quero isso para todos os campo de todos os foms que eu tiver
    • By fideles
      Fala pessoal, tudo tranquilo?
       
      Venho recorrer a vós pois já não consigo mais.... 
       
      Tenho um campo select com algumas opções de nome.
      <select class="seleciona_nome"> <option value="Joao">Joao</option> <option value="Julio">Julio</option> <option value="Pedro">Pedro</option> </select>  
      E um campo input do tipo "text"
      <input type="text" class="opcaoSelect" autocomplete="off" disabled="disabled">  
      Preciso que ao selecionar uma opção do "Select" seja auto preenchido no input. Tenho um codigo que funcionava e não sei mais porque não funciona, veja abaixo;
       
      <script> $(document).ready(function(){ $('.seleciona_nome').on('change', addOption); }); function addOption(){ $('.opcaoSelect').val(this.value); } </script>  
      Peço ajuda ai caso alguém consiga me ajudar a entender porque este não funciona mais.
       
      Obrigado.
       
    • By kaioneresm
      Olá, tenho um formulario que pede um nome de usuário.
      Preciso que ao tentar digitar o espaço do teclado ele não funcione. Ou seja o input text bloquea no mesmo momento que for digiado.
       
      Alguem pode me ajudar? Obrigado !!
    • By Alberto Nascimento
      Como faço que consiga colocar parágrafos no campo tipo "text" do formulário?
          <input name="Text1" style="width: 528px; height: 223px" type="text" /></form>
      Se eu pressiono ENTER automaticamente envia o formulário
      Como então consigo digitar ao preencher o formulário da forma abaixo?
       
    • By fjuniorlira
      Pessoal estou construindo essa página: http://webe.cf/teste-cadastro Preciso que que no input "Conta" o dígito fique na mesma linha. Como posso fazer isso?
      SEGUE O CÓDIGO:
       
      <p> <span style="font-family: Arial, Helvetica, sans-serif; color: rgb(51, 51, 51); font-weight: bold;">Conta:</span></big> <span style="color: rgb(255, 0, 0); font-weight: bold;">*</span><br/> <input type="text" required="required" size="35" name="conta" onkeypress="formatar('####-#', this)" pattern="[0-9.-]+$" maxlength="9" style="width: 300px; height: auto; font-family: Arial; font-size: 16px"> </p> <p> <span style="font-family: Arial, Helvetica, sans-serif; color: rgb(51, 51, 51); font-weight: bold;"></span></span> <input type="text" required="required" size="35" name="digito" onkeypress="formatar('####-#', this)" pattern="[0-9.-]+$" maxlength="9" style="width: 39px; height: auto; font-family: Arial; font-size: 16px"> </p>  
×

Important Information

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