Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer le cour des CryptoMonnaies

[PHP/API]

20 janvier 2018 à 17:03:41

Bonjour à tous c'est mon premier POST sur OpenClassRoom je vais essayé d'être le plus explicite possible pour évité de me faire lyncher dès le début ;).

Voila je suis actuellement en train de me dev un petit site privée dont le but est simple :

Je veux afficher le cour (Actuel) des monnaies suivantes sans utiliser de Js :

  • Bitcoin
  • Monero
  • Ethereum et ETC
  • Ripple
  • Dash
  • Zcash
  • Litecoin
Le marché sur lequel il les prix seront basés m'importe peux tant que il n'y à pas une grosse marge par rapport aux Market les plus connu comme (Kraken, Bithumb, ...)

J'ai fait des petites recherche sur notre ami Google mais je n'ai pas réussit à trouver ce que je cherchais les seuls tutoriels et API que j'ai trouver utilisaient du Js.

Merci à tous ceux qui pourront m'aider d'avance :)

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 19:53:46

Bonjour,

si tu veux que les cours s'actualisent en temps réel, tu devras bien utiliser JavaScript pour interroger le serveur via Ajax (tu peux aussi utiliser Flash mais c'est déconseillé).

Si tu ne veux vraiment pas utiliser de JavaScript l'utilisateur devra actualiser la page pour avoir les nouveaux cours.

Pour récupérer le cours, tu peux utiliser l'API blockchain.info: tout est expliqué sur cette page:

Par exemple pour avoir le taux de change pour 1€:

<?php
$cours=file_get_contents("https://blockchain.info/tobtc?currency=EUR&value=1");
echo $cours;
?>

Il m'affiche 0.00010593 actuellement: 1 bitcoin = 0.00010593 €

Et tu n'as plus qu'à l'afficher sur ton site.

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 20:23:27

Rimfambir merci pour ta réponse je viens de regarder j'étais déjà tomber sur ce site mais il ne répondait cas une partie de ma requête car j'ai cru comprendre que Blockchain.info ne gère que le Bitcoin :/ à moins que je me trompe.

Ta conclusion est fausse ;) mais si c'était vrai j'achèterai directement :D c'est plutot : "1€ = 0.00010593 BTC"

-
Edité par Adrien Villalonga 21 janvier 2018 à 20:35:02

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 21:14:00

:D Bien vu... Désolé pour la faute de frappe. En effet c'est plutôt "1€ = 0.00010593 BTC".

Dans tous les cas si tu veux que le cours s'actualise automatiquement, tu devras utiliser JavaScript mais c'est pas compliqué:

voici un exemple qui affiche dans une alerte le cours du bitcoin / euro

(inspiré de https://openclassrooms.com/courses/creez-des-pages-web-interactives-avec-javascript/interrogez-un-serveur-web)

var req = new XMLHttpRequest();
req.open("GET", "https://blockchain.info/tobtc?currency=EUR&value=1"); // URL du serveur
req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) { // Le serveur a réussi à traiter la requête
        alert(req.responseText);
    } else {
        // Informations sur l'échec du traitement de la requête
        alert(req.status + " " + req.statusText);
    }
});
req.addEventListener("error", function () {
    // La requête n'a pas réussi à atteindre le serveur
    alert("Erreur reseau");
});
req.send(null);

Cette requête va directement interroger blockchain.info mais tu peux utiliser ton serveur comme intermédiaire (cf mon précédent post).

Pour actualiser directement les cours tu peux utiliser la fonction setInterval() qui va exécuter une fonction toutes les x millisecondes.

Code final:

1 euro = <span id="cours">...</span> bitcoins.<br />
<span id="erreur"></span>
<script>

var cours=document.getElementById('cours'), erreur=document.getElementById('erreur');

function request()
 {
var req = new XMLHttpRequest();
req.open("GET", "https://blockchain.info/tobtc?currency=EUR&value=1");
req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) { // Le serveur a réussi à traiter la requête
        cours.innerHTML=req.responseText;
        erreur.innerHTML="";
    } else {
        // Affichage des informations sur l'échec du traitement de la requête
        erreur.innerHTML= "Erreur: " + req.status + " " + req.statusText;
    }
});
req.addEventListener("error", function () {
    // La requête n'a pas réussi à atteindre le serveur
    erreur.innerHTML="Erreur reseau";
});
req.send(null);
}
setInterval(request, 1000);

</script>


Tu auras chaque seconde le nouveau cours du bitcoin. Si tu veux faire un graphique c'est également possible mais ça va devenir plus compliqué

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 21:17:15

Le truc c'est que j'aimerai le faire en PHP pour enregistrer toutes les 20 seconde le cour actuel dans ma BDD. Et j'aimerai avoir le maximum de cryptomonnaies possible a implanter.
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 22:02:11

Ah OK...

Dans ce cas tu fais simplement un service (démon sous Linux) qui va effectuer l'opération toutes les 20 secondes.

Il n'y a pas besoin de PHP tu peux le faire dans des langages plus adaptés (Python, C++...).

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2018 à 22:08:08

Yo,

Le plus simple est effectivement une petite tâche cron ( https://doc.ubuntu-fr.org/cron ), ou alors un script avec une boucle infini qui exécute toutes les n secondes vos actions.

Perso j'utilise cette API : https://www.cryptocompare.com/api/#-api-data-price-
Et un coup de CURL pour faire ça en PHP ! http://php.net/manual/fr/book.curl.php

A noter que j'ai déjà vu une application télécharger directement depuis les bourses d'échanges, les historiques de prix en fonction d'une plage de date ...

-
Edité par Foohx 21 janvier 2018 à 22:13:22

  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2020 à 11:10:42

Bonjour, Petite question suppléméntaire : J'ai gardé le code final. Changé l'adresse par : https://explorer.soverain.org/api/address/SR138gttiPwDzUnNtG29qGxnjTkoGhhV12

le résultat est

Balance = {"balance":0,"sent":0,"staked":0,"received":0,"txs":[]} Sove

Comment ne récupere qu'une donné par exemple "balance" ou "received" ?

  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2020 à 11:26:30

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter