Portefeuille

V 2.0

Portefeuilles de TRANSFERT et d'EPARGNE

Bitcoin QR code icon

Contents

Vous pouvez créer plusieurs portefeuilles pour vos différents projets. Chaque portefeuille peut être au choix: transfert ou épargne.

Le portefeuille detransfert accepte les paiements et les transfère immédiatement. Vous pouvez également fractionner vos paiements.

Les paiements entrants peuvent être divisés en 255 adresses. Les destinataires recevront le montant exact spécifié ou un pourcentage (quota) de cette somme. C'est un moyen très pratique pour payer en une seule fois des livraisons, des intermédiaires en cas de marketing à plusieurs niveaux, recevoir des commissions ou simplement envoyer une somme d'argent en cold storage. Dans le cas d'un paiement fractionné avec montant spécifié, la somme restante sera automatiquement envoyée à la dernière adresse.

Chaque paiement est divisé selon l'ordre des destinataires indiqué sur la liste, et cela jusqu'au dernier Satoshi. Les paiements sont en effet réalisés selon un ordre précis, de la première adresse de destination indiquée jusqu'à la dernière, qui reçoit le montant restant une fois toutes les transactions réalisées. L'ordre des adresses doit donc être parfaitement hiérarchisé. Et votre adresse doit toujours se trouver en dernière position pour que la somme restante vous soit retournée.

Les portefeuilles d'épargne accumulent tous les paiements entrants qui peuvent être transférés à un ou plusieurs destinataires. Vous pouvez utiliser entre 1 et 255adresses de destination lors d'un paiement fractionné.

Requêtes simples:

{
"type": "saving|forwarding",
"callback":{                       #optional
      "url": "your_callback_URL",  #optional
      "data":{                     #optional
         "optional_key": "value"
      }
   },
	"destinations":[           #Adresses de destination pour les portefeuilles de transfert uniquement
      {"amount": <amount|"percents">, "address": "<bitcoin_address>"},
		... #from 1 to 255 addresses
	]
}

Exemple de code pour wallet type

Callback URL CléValeur

+

AdresseMontant

+


{
   "type": "forwarding",
   "callback":{
      "url" :  "http://example.com/callback"
   }
}
  
<?php
  $json_data = array (
    'type' => "forwarding",
    'callback' => array(
        'url'=> "http://example.com/callback"
    )
  );
  
  $api_endpoint = "https://apirone.com/api/v2/btc/wallet";
 
  $curl = curl_init($api_endpoint);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($json_data));
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $response = curl_exec($curl);
  $http_status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  curl_close($curl);
 
  if ($http_status_code==200){
	  $decoded = json_decode($response, true);
	  echo "Wallet: " . $decoded["wallet"] . "<BR>";
	  echo "Key: " . $decoded["transfer_key"];
  } else {
      var_dump($response);
  }
?>
Envoyer une requête
Réponse du serveur:

JSON Description du schéma

Utiliser une requête POST contenant un objet au format JSON.

Callback URL

Le callback est un tableau d'URL de rappel et de paramètres de données d'utilisateurs.

Paramètres Description Obligatoire
{callback:url}
string,
=< 1024 chars

Callback URL
L'adresse URL de votre serveur reçoit les données relatives au paiement. L'adresse URL indiquée doit obligatoirement être valide.

Obligatoire
{callback:data}
tableau

Données
Le tableau associatif est basé sur des paires de valeur-clé. Vous pouvez l'utiliser comme un identificateur supplémentaire ou dans le but de sécuriser une adresse bitcoin générée.

Par exemple 'secret' = '7j0ap91o99cxj8k9' or 'invoice_id'='1234'

Facultatif

Adresse de destination et montant

Vos adresses bitcoin de destination où les paiements confirmés seront transférées. Minimum 1, maximum 100 adresses de destination.

Paramètres Description Obligatoire Exemples
{destinations}
string,
32 - 42 chars
Adresse de destination

Votre adresse de destination vers laquelle les paiements confirmés seront transférés.

Obligatoire

1apiKcJM95jENZeom2dQo8ShK7dUQkRaS

bc1qggg2ys8duv4qvnfgzng2p75m6ehklcmfygr9m4

{amount}
(integer | "percent in string")

Montant

Un montant en Satoshi ou un pourcentage. Ces paramètres peuvent être manquants ou vides. Dans ce cas précis, le montant restant sur cette transaction sera transféré à cet endroit.

Facultatif

253999

"20%"

"31.55%"

Exécution réussie:

{
  "wallet": "8e9c53a62755bcc66e4d2aaae3a2af6d",
  "type": "saving",
  "transfer_key": "7j0ap91o99cxj8k97j0ap91o99cxj8k9",
  "currency": "btc",
  "callback":
  {
     "url": "http://example.com/callback",
     "data":
     {
        "invoice_id": "1234",
        "secret": "7j0ap91o99cxj8k9",
     }
  }
}

Message d'erreur

La réponse d'erreur retourne un message dans le format texte ci dessous:
Wrong parameters. - Mauvais paramètres.
Destinations ne peut pas être vide.
Toutes les destinations doivent être uniques.
L'attribut Destinations est nécessaire pour le portefeuille de transfert.
Format de portefeuille invalide. Les formats valides sont: épargne, transfert, forwarding-legacy.
Adresse invalide: mqTZ5Lmt1rrgFPeGeTC8DFExAxV1U852G.
Montant incorrect pour l'adresse 'tb1q8j9amkk2urc8cs2x94l80p7c2dnxcmmxgxr3n8'.

Cases of split payment

Exemple de fractionnement d'un montant exact:

Le magasin règle sa facture de cette manière: 0.2 BTC au Referral (filleul), 0.3 BTC pour la livraison, stocke 1.5 BTC pour le futur dans un cold storage et conserve le reste pour gérer les divers dépenses du magasin.

{
   "callback":{
      "url":"http://example.com/callback",
      "data":{
         "secret":"7j0ap91o99cxj8k9"
      }
   },
   "destinations":[
      {"address": "1apiKcJM95jENZeom2dQo8ShK7dUQkRaS", "amount":  20000000},
      {"address": "1apimr7q2cL3xPma8SfiDPyTdWSHXSEyB", "amount":  30000000},
      {"address": "1ApiwpetcWnBbkpU7cb7biPfc6Tiucasf8", "amount": 150000000},
      {"address": "1Api8ZyHPp4f1QNTsi3AGyXbaTnzzAuDez"}
   ]
}

Le client paie une commande d'un montant de 10 BTC.

Cas: paiement insuffisant. Si un client paie seulement 1 BTC, le montant sera alors fractionné ainsi: 0.2 + 0.3 + le reste (1 - 0.5) = 0.5 sera envoyé en Cold storage. L'adresse du magasin ne recevra rien car il n'y a pas suffisamment d'argent pour compléter le transfert.

Cas: paiement suffisant. La boutique reçoit une notification concernant le paiement et le montant est réparti sur différentes adresses Bitcoin selon les spécifications indiqués sur la liste: 0.2 + 0.3 + 1.5 et le reste, 10 - 2 = 8 BTC sont envoyés à l'adresse du magasin.

Cas: trop-payé. La dernière adresse (sans montant indiqué) indiqué sur la liste recevra le reste du montant.

Les frais de réseau et les frais de service seront déduits de la dernière adresse. Dans notre cas, il s'agit de la partie Business.

Exemple de fractionnement en pourcentage:

Imaginons que vous soyez une bourse d'échange. Vous recevez un paiement et souhaitez envoyer 20 pourcents sur votre portefeuille ( type hot wallet), conserver 30 pourcents avec vous pour la gestion du quotidien et envoyer les 50 pourcents restants dans une place plus sécurisée, en cold storage.

{
   "callback":{
      "url":"http://example.com/callback",
      "data":{
         "secret":"7j0ap91o99cxj8k9"
      }
   },
   "destinations":[
      {"address": "1apiKcJM95jENZeom2dQo8ShK7dUQkRaS", "amount": "20%"},
      {"address": "1apimr7q2cL3xPma8SfiDPyTdWSHXSEyB", "amount": "30%"},
      {"address": "1ApiwpetcWnBbkpU7cb7biPfc6Tiucasf8"}
   ]
}

L'ordre d'apparition des adresses dans la liste est très importante. Le montant total final doit être de 100{}près répartition.
Le montant total du paiement entrant est divisé proportionnellement entre ces trois adresses.
Les frais de réseau et de transactions sont déduits en premier.