Vous êtes sur la page 1sur 9

Recevoir des paiements API V2 Acceptez les

paiements bitcoin de manière transparente 


Vous fournissez une clé publique étendue (xPub) et nous générons une adresse
correspondante unique et inutilisée à laquelle vos clients peuvent envoyer le
paiement. Nous vous informons des paiements à cette adresse instantanément en
utilisant une URL de rappel de votre choix.

introduction
L'API de réception de paiements Blockchain V2 est le moyen le plus rapide et le plus simple
de commencer à accepter les paiements Bitcoin automatisés. Composé d'une simple requête
HTTP GET, vous pouvez être opérationnel en quelques minutes.
L'une des difficultés liées à la réception de paiements Bitcoin est la nécessité de générer une
adresse unique pour chaque nouvel utilisateur ou nouvelle facture. Ces adresses doivent être
surveillées et stockées en toute sécurité. L'API de réception des paiements de la blockchain se
charge de la génération et du suivi des adresses. Nous informerons votre serveur par un
simple rappel chaque fois qu'un paiement est reçu.

Demander une clé API Accédez aux API Blockchain.info 


Pour utiliser l'API Receive Payments V2, veuillez demander une clé API à l' adresse
https://api.blockchain.info/v2/apikey/request/ . Cette clé API est uniquement pour notre API
de réception de paiements. Vous ne pouvez pas utiliser la clé API du portefeuille blockchain
standard pour Receive Payments V2, et vice versa. 

Obtention d'une clé publique étendue (xPub) xPubs


peuvent être créés avec notre nouveau portefeuille Blockchain  

Cette API nécessite que vous ayez un compte BIP 32 xPub afin de recevoir des paiements. Le
moyen le plus simple de commencer à recevoir des paiements est d'ouvrir un portefeuille
Blockchain à l' adresse https://blockchain.info/wallet/#/signup . Vous devez créer un nouveau
compte dans votre portefeuille exclusivement pour les transactions facilitées par cette
API. Lorsque vous passez des appels API, utilisez le xPub pour ce compte ( situé dans
Paramètres -> Adresses -> Gérer -> Plus d'options -> Afficher xPub ). 
Générer une adresse de réception [GET] Fournissez
des adresses bitcoin uniques et inutilisées à vos clients  

Cette méthode crée une adresse unique qui doit être présentée au client. Pour tout paiement
envoyé à cette adresse, vous recevrez une notification HTTP. Veuillez noter que chaque appel
au serveur incrémentera le paramètre `index`. Ceci est fait pour que vous ne montriez pas la
même adresse à deux clients différents. Cependant, tous les fonds seront toujours affichés
dans le même compte.
https://api.blockchain.info/v2/receive?xpub=$xpub&callback=$callback_url&key=$key
Comme défini dans le BIP 44, le logiciel de portefeuille ne scanne pas au-delà des 20 adresses
inutilisées. Étant donné suffisamment de demandes de cette API qui n'ont pas de paiement
correspondant, vous pourriez générer des adresses au-delà de cet horizon, ce qui rendrait assez
difficile la dépense des fonds versés à ces adresses. Pour cette raison, cette API renverra une
erreur et refusera de générer de nouvelles adresses si elle détecte qu'elle créerait un écart de
plus de 20 adresses inutilisées. Si vous rencontrez cette erreur, vous devrez soit passer à
un nouveau xPub (dans le même portefeuille, c'est bien), soit recevoir un paiement à
l'une des 20 adresses créées précédemment. 
Vous pouvez contrôler ce comportement en passant éventuellement `gap_limit` comme
paramètre d'URL supplémentaire. Veuillez noter que cela n'augmentera pas le nombre
d'adresses qui seront surveillées par nos serveurs. Passer le paramètre `gap_limit` modifie
l'écart maximal autorisé avant que l'API arrête de générer de nouvelles adresses. L'utilisation
de cette fonctionnalité vous obligera à comprendre la limitation de l'écart et comment la gérer
(pour les utilisateurs avancés uniquement ):  
https://api.blockchain.info/v2/receive?
xpub=$xpub&callback=$callback_url&key=$key&gap_limit=$gap_limit
 xpub - Votre xPub (où vous souhaitez que le paiement soit envoyé) 
 callback _url - L'URL de rappel à notifier lorsqu'un paiement est reçu. N'oubliez pas d'URL
Encode l'URL de rappel lors de l'appel de la méthode create. 
 key - Votre blockchain.info reçoit la clé API des paiements v2. Demandez une clé API.  
 gap _limit - Facultatif. Combien d'adresses inutilisées sont autorisées avant l'erreur. 
Dérivez une adresse inutilisée à l'aide de votre xPub:
boucle "https://api.blockchain.info/v2/receive?
xpub=xpub6CWiJoiwxPQni3DFbrQNHWq8kwrL2J1HuBN7zm4xKPCZRmEshc7Dojz4zMah7E4o2GEEbD6Hg
fG7sQid186Fw9x9akMNKw2mu1PjqacTJB2&callback=https%3A%2F%2Fmystore.com%3Finvoice_id
%3D058921123&key=[yourkeyhere]"

Demandez à votre client d'envoyer des bitcoins à l'adresse contenue dans la réponse:
Réponse: 200 OK, application / json 

{ " adresse" : "19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw" , "index" : 23 , "callback" : 
"https://mystore.com?invoice _id = 058921123" }

Exemple PHP Code source complet (PHP, Python, Ruby) 


$ secret = 'ZzsMLGKe162CfA5EcG6j ' ;
 
$ my_xpub = '{ VOTRE ADRESSE XPUB}' ;
$ my_api_key = '{ VOTRE CLÉ API}' ;
 
$ my_callback_url = ' https://mystore.com?invoice_id=058921123&secret=' . $
secret ;
 
$ root_url = 'https://api.blockchain.info/v2/receive ' ;
 
$ paramètres = 'xpub = ' . $ mon_xpub . '& callback = ' . urlencode ( $
my_callback_url ). '& clé = ' . $ my_api_key ;
 
$ response = file_get_ contents ( $ racine_url . '?' . $ paramètres );
 
$ object = json_decode ( $ réponse );
 
echo 'Envoyer le paiement à:' . $ objet -> adresse ;

Mises à jour du solde [POST] Surveillez les adresses pour


les paiements reçus et dépensés 

Cette méthode surveille une adresse de votre choix pour les paiements reçus et / ou
dépensés. Vous recevrez une notification HTTP immédiatement lorsqu'une transaction est
effectuée, puis lorsqu'elle atteint le nombre de confirmations spécifié dans la demande.
Vous devez spécifier le comportement de notification de la demande. Définir le
comportement sur «SUPPRIMER» supprimera la demande après l'envoi de la première
notification pertinente à votre adresse de rappel. La définition du comportement sur
«GARDER» enverra des notifications supplémentaires chaque fois qu'une transaction avec les
confirmations et le type d'opération spécifiés est envoyée vers ou à partir de l'adresse de la
demande.
Le type d'opération est un paramètre facultatif indiquant si l'adresse sera surveillée pour les
transactions reçues ou dépensées, ou les deux. Par défaut, les deux types d'opérations sont
surveillés.
Vous pouvez également spécifier le nombre de confirmations qu'une transaction atteint avant
de recevoir une notification. Notez que vous recevrez une notification à 0 confirmation (c'est-
à-dire immédiatement lorsque la transaction est effectuée), et à nouveau lorsqu'elle atteint le
nombre de confirmations spécifié dans la demande (3 confirmations par défaut).
https://api.blockchain.info/v2/receive/balance_update
 adresse - L'adresse que vous souhaitez surveiller 
 callback - L'URL de rappel à notifier lorsqu'un paiement est reçu. 
 key - Votre blockchain.info reçoit la clé API des paiements v2. Demandez une clé API.  
 onNotification - Le comportement de notification de demande ('KEEP' | 'DELETE). 
 confs - Facultatif (3 par défaut). Le nombre de confirmations dont la transaction a besoin
avant l'envoi d'une notification. 
 op - Facultatif (par défaut «ALL»). Le type d'opération pour lequel vous souhaitez recevoir
des notifications ('SPEND' | 'RECEIVE' | 'ALL'). 
Surveillez une adresse pour chaque paiement reçu avec 5 confirmations:
curl - H "Content-Type: text / plain" - data '{"key": "[your-key-here]", "addr":
"183qrMGHzMstARRh2rVoRepAd919sGgMHb", "callback": "https: // mystore. com?
facture_id = 123 "," onNotification ":" KEEP "," op ":" RECEIVE "," confs ": 5}
' https : //api.blockchain.info/v2/receive/balance_update

Réponse: 200 OK, application / json 

{
  "id" : 70 ,
  "addr" : "183qrMGHzMstARRh2rVoRepAd919sGgMHb" ,
  "op" : "RECEVOIR" ,
  "confs" : 5 ,
  "callback" : "https://mystore.com?invoice_id=123" ,
  "onNotification" : "GARDER"
}
L'identifiant dans la réponse peut être utilisé pour supprimer la demande:
curl - X SUPPRIMER "https://api.blockchain.info/v2/receive/balance_update/70?
key=[your-key-here]"

Réponse: 200 OK, application / json 

{ " supprimé" : vrai }

Notification de blocage [POST]


Cette méthode vous permet de demander des rappels lorsqu'un nouveau bloc d'une hauteur et
d'un numéro de confirmation spécifiés est ajouté à la blockchain.
Comme pour les demandes de mise à jour de solde, vous devez spécifier le comportement de
notification de la demande sur «GARDER» ou «SUPPRIMER».
La hauteur est un paramètre facultatif indiquant à quelle hauteur vous souhaitez recevoir une
notification de bloc - s'il n'est pas spécifié, ce sera la hauteur du prochain bloc à arriver.
Confs est un autre paramètre facultatif indiquant le nombre de confirmations qu'un bloc doit
avoir lorsqu'une notification est envoyée.
https://api.blockchain.info/v2/receive/block_notification
 callback - L'URL de rappel à notifier lorsqu'un bloc correspondant à votre requête est ajouté. 
 key - Votre blockchain.info reçoit la clé API des paiements v2. Demandez une clé API.  
 onNotification - Le comportement de notification de demande ('KEEP' | 'DELETE). 
 confs - Facultatif (1 par défaut). Le nombre de confirmations que le bloc doit avoir avant
l'envoi d'une notification. 
 height - Facultatif (Hauteur de chaîne actuelle par défaut + 1). Hauteur à laquelle une
notification doit être envoyée. 
Demandez une notification unique lorsque la blockchain Bitcoin atteint 500000 blocs:
curl - H "Content-Type: text / plain" - data '{"key": "[your-key-here]", "height":
500000, "callback": "https://monsite.com/ block? request_id = 1234 ","
onNotification ":" DELETE "}
' https : //api.blockchain.info/v2/receive/block_notification

Réponse: 200 OK, application / json 

{
  "id" : 64 ,
  "hauteur" : 500000 ,
  "callback" : "https://monsite.com/block?request_id=1234" ,
  "confs" : 1 ,
  "onNotification" : "SUPPRIMER"
}
L'identifiant dans la réponse peut être utilisé pour supprimer la demande:
curl - X SUPPRIMER "https://api.blockchain.info/v2/receive/block_notifcation/64?
key=[your-key-here]"

Réponse: 200 OK, application / json 

{ " supprimé" : vrai }

Implémentation du rappel Traitement du rappel envoyé depuis blockchain.info 


Recevoir et effectuer des rappels de mise à jour du solde
Veuillez noter que l'URL de rappel est limitée à 255 caractères.
Lorsqu'un paiement est reçu par une adresse générée, ou par une adresse surveillée par une
demande de mise à jour de solde, blockchain.info notifiera l'URL de rappel que vous
spécifiez. Pour la mise à jour du solde, des rappels et une notification supplémentaire seront
envoyés une fois que la transaction aura atteint le nombre de confirmations spécifié.
 transaction _hash - Le hachage de la transaction de paiement. 
 address - L'adresse bitcoin de destination (qui fait partie de votre compte xPub). 
 confirmations - Le nombre de confirmations de cette transaction. 
 value - La valeur du paiement reçu (en satoshi, donc divisez par 100000000 pour obtenir la
valeur en BTC). 
 { paramètre personnalisé } - Tous les paramètres inclus dans l'URL de rappel seront renvoyés
à l'URL de rappel dans la notification. Vous pouvez utiliser cette fonctionnalité pour inclure des
paramètres dans votre URL de rappel, tels que facture_id ou customer_id, afin de suivre quels
paiements sont associés à lesquels de vos clients. 

Bloquer les rappels de notification

Une notification de blocage est envoyée chaque fois qu'un nouveau bloc est ajouté à la
blockchain et correspond à la hauteur et au nombre de confirmations définis dans la demande
de notification.
 hash - Le hachage de bloc. 
 confirmations - Le nombre de confirmations de ce bloc. 
 height - La hauteur du bloc. 
 timestamp - L'horodatage unix indiquant le moment où le bloc a été ajouté. 
 size - La taille du bloc en octets. 
 { paramètre personnalisé } - Tous les paramètres inclus dans l'URL de rappel seront renvoyés
à l'URL de rappel dans la notification. 

Exemple PHP Code source complet (PHP, Python, Ruby) 


Un exemple de rappel à la suite de l'exemple PHP ci-dessus.
$ real_secret = 'ZzsMLGKe162CfA5EcG6j ' ;
$ facture_id = $ _GET [ 'facture_id' ]; // facture_id est renvoyé à l'URL de
rappel
$ transaction_hash = $ _GET [ 'transaction_hash' ];
$ value_in_satoshi = $ _GET [ 'valeur' ];
$ value_in_btc = $ value_in_satoshi / 100000000 ;
 
// Commenté pour tester, décommenter en direct
if ( $ _GET [ 'test' ] == true ) {
    retour ;
}
 
essayez {
  // créer ou ouvrir la base de données
  $ database = new SQLiteDatabase ( 'db.sqlite' , 0666 , $ error );
} catch ( Exception $ e ) {
  die ( $ error );
}
 
// Ajouter la facture à la base de données
$ stmt = $ db -> prepare ( "remplace INTO facture_payments (facture_id,
transaction_hash, valeur) values (?,?,?)" );
$ stmt -> bind_ param ( "isd" , $ facture_id , $ transaction_hash , $
value_in_btc );
 
if ( $ stmt -> execute ()) {
   echo "* ok *" ;
}

Réponse de rappel attendue

Afin de confirmer le traitement réussi du rappel, votre serveur doit répondre avec le texte "*
ok *" (sans guillemets), en texte brut, sans HTML. Si le serveur répond avec autre chose, ou
rien, le rappel sera renvoyé à nouveau pour chaque nouveau bloc (environ toutes les 10
minutes) jusqu'à 1000 fois (1 semaine). Les domaines de rappel qui semblent morts ou qui ne
renvoient jamais la réponse "* ok *" peuvent être bloqués du service.

Vérifier l'écart d'adresse xPub [GET]


Vérifiez l'écart d'index entre la dernière adresse payée à et la dernière adresse générée à l'aide
du point de terminaison Checkgap. Utilisez le xpub que vous souhaitez vérifier et votre clé
API comme ceci:
curl "https://api.blockchain.info/v2/receive/checkgap?xpub=[votrexpubhère circular
ité&key= [yourkeyhere]"
{ "écart " : 2 }

Journaux de rappel [GET] Déboguer les paiements en


souffrance 

Consultez les journaux liés aux tentatives de rappel à l'aide des points de terminaison
callback_logs. Utilisez le rappel exact en question et votre clé API comme ceci:
curl "https://api.blockchain.info/v2/receive/callback_log?callback=https%3A%2F
%2Fmystore.com%3Finvoice_id%3D05892112%26secret%3DZzsMLGKe162CfA5EcG6j&key=[votre
clé ici
[
   {
       "callback " : "https://mystore.com?
invoice_id=058921123&secret=ZzsMLGKe162CfA5EcG6j&key=[yourkeyhere]" ,
       "called_at " : "2015-10-21T22: 43: 47Z" ,
       "raw_response " : "* mauvais *" ,
       "response_code " : 200
   },
   {
       "callback " : "http://mystore.com?
invoice_id=058921123&secret=ZzsMLGKe162CfA5EcG6j&key=[yourkeyhere]" ,
       "called_at " : "2015-10-21T22: 43: 55Z" ,
       "raw_response " : "* mauvais *" ,
       "response_code " : 200
   }
  ]

Sécurité
Un paramètre secret personnalisé doit être inclus dans l'URL de rappel. Le secret sera renvoyé
au script de rappel lorsque le rappel est déclenché et doit être vérifié par votre code pour sa
validité. Cela empêche quelqu'un d'essayer d'appeler vos serveurs et de marquer à tort une
facture comme «payée».

Conversion de devises
Utilisez l' API de taux de change pour convertir les valeurs en devises locales en BTC. Les
applications de démonstration ci-dessous incluent des exemples de la façon de procéder.  
Si vous souhaitez convertir les paiements reçus en Bitcoin en monnaie fiduciaire, utilisez
rapidement une adresse Bitcoin à partir d'un portefeuille d'échange.

Dépenses doublées et rétrofacturations


Une double dépense se produit lorsqu'un utilisateur malveillant dépense deux fois le même
BTC. Un paiement initial qui semble réussi pourrait être annulé à une date ultérieure. Cela est
contrecarré en attendant que la transaction soit incluse dans la blockchain et en atteignant un
certain nombre de confirmations. 6 confirmations est généralement considérée comme sûre
pour les transactions de grande valeur.
Validez les confirmations de transaction dans le script de rappel en vérifiant le paramètre $
_GET ['confirmations']. Il est recommandé d'accepter la transaction sans aucune confirmation,
mais de ne faire confiance à la transaction qu'après une seule confirmation. Par exemple, si
vous achetez un produit, nous afficherons la commande comme réussie à zéro confirmation
(le premier rappel, mais nous n'effectuons pas encore d'écho "* ok *"), mais n'expédierons le
produit que lorsque 4 confirmations ou plus sont atteintes. Voir la démo PHP callback.php
pour un exemple.
if ( $ _GET [ 'confirmations' ] > = 6 ) {
    // Insérer dans les paiements confirmés
    echo '* ok *' ;
} else {
    // Insérer dans les paiements en attente
    // Ne pas imprimer * ok * pour que la notification soit renvoyée à nouveau
lors de la prochaine confirmation
}

Expiration de l'adresse
Les adresses de réception n'expirent jamais et continueront d'être surveillées jusqu'à ce qu'un
"* ok *" soit reçu dans la réponse de rappel ou que blockchain.info ait notifié le rappel 1000
fois.

Utilisation raisonnable
Il n'y a pas de limite au nombre d'adresses de réception qui peuvent être générées (tant que la
limite de 20 écarts d'adresses est respectée), le service est conçu pour surveiller des millions
d'adresses.
Les domaines de rappel qui semblent morts ou qui ne renvoient jamais la réponse "* ok *"
peuvent être bloqués du service.

DES PRODUITS
1.           PORTEFEUILLE

2.           API

3.           ENTREPRISE

4.           TONNERRE

5.           RECHERCHE

6.           EXPLORATEUR

7.           GRAPHIQUES

8.           MARCHÉS

9.           STATISTIQUES

COMPAGNIE

1.           À PROPOS
2.           ÉQUIPE

3.           CARRIÈRES

4.           INTERVIEW

5.           FAQ

6.           PRESSE

7.           BLOG

SOUTIEN

1.           CENTRE D'AIDE
2.           TUTORIELS

3.           PORTAIL D'APPRENTISSAGE
4.           STATUT

ENGLISH 
BITCOIN 
VUE AVANCÉE ACTIVER 
CONDITIONS DE
© 2017 BLOCKCHAIN LUXEMBOURG SA TOUS DROITS RÉSERVÉS. 
CONFIDENTIALITÉ GUIDE D'APPLICATION DE LA
LOI SUR LES COOKIES PUBLICITÉ