Aperçu
ChainMyne Pay fournit une interface REST basée sur des normes qui permet aux développeurs d'applications d'interagir avec leur compte marchand ChainMyne Pay. Utilisation de ChainMyne API de paiement, les clients peuvent créer une adresse de portefeuille de dépôt pour accepter BTC, ETH et LTC pour le paiement, les actifs numériques en temps réel aux taux fiat et recevoir une notification des paiements reçus.
Environnement
Les environnements suivants sont disponibles
Base | URL | Chaîne de blocs BTC |
Production BTC | https://api.chainmynepay.com:5000/usr/wallet/btc/create | réseau principal |
Bac à sable BTC | https://api.digitalpaydev.com:5000/usr/wallet/btc/create | testnet |
Production BCH | https://api.chainmynepay.com:5000/usr/wallet/bch/create | réseau principal |
Bac à sable BCH | https://api.digitalpaydev.com:5000/usr/wallet/bch/create | testnet |
EPF Production | https://api.chainmynepay.com:5000/usr/wallet/eth/create | réseau principal |
Bac à sable ETH | https://api.digitalpaydev.com:5000/usr/wallet/eth/create | ropsten |
Production SLD | https://api.chainmynepay.com:5000/usr/wallet/ltc/create | réseau principal |
Bac à sable LTC | https://api.digitalpaydev.com:5000/usr/wallet/ltc/create | testnet |
Commencer
Pour utiliser API de commerce, l'utilisateur devra suivre quelques étapes simples :
Clé API
En-tête d'autorisation HMAC
Clé API
Pour utiliser l'API, les utilisateurs devront obtenir la clé publique et la clé secrète de l'API, qui sont transmises à l'API avec chaque demande. Les clés API peuvent être générées dans votre tableau de bord marchand à tableau de bord.chainmynepay.com sous Paramètres > section Clés API.
Valeur d'en-tête d'autorisation HMAC
Une fois que l'utilisateur a obtenu la clé API, tout est configuré ! Maintenant, il ne reste plus qu'à former une variable d'en-tête d'autorisation HMAC. Afin de former cet en-tête, l'utilisateur aura besoin des variables suivantes :
var apikey = 'clé publique'; // clé obtenue à partir de ChainMyne Pay
var secretkey = 'clé secrète'; // secret obtenu à partir de ChainMyne Pay
var horodatage = Math.floor(Date.now() / 1000); // horodatage en secondes
var nonce = Math.floor(Math.random() * Math.floor(1000000)); // entier nonce aléatoire
La dernière variable nécessaire est les paramètres du corps (JSON), la chaîne se compose de TOUS les paramètres du corps séparés par le signe '&' s'il y en a plusieurs (par exemple : 'ref_id=mk1231sa11×tamp=1588364168&nonce=900288).
bodyString='ref_id=mk1231sa11×tamp=1588364168&nonce=900288'
Si les variables d'url et/ou de devise sont passées dans le corps, elles doivent être ajoutées comme suit
bodyString='ref_id=mk1231sa11&url=https://yourwebhookurl.com×tamp=1588364168&nonce=900288¤cy=USD'
Enfin, l'utilisateur doit rassembler toutes les variables et les encoder :
paramètres de l'url et du corps
var hmacDigest = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(bodyString, secretkey));
var authentification = btoa(apikey + ':' + hmacDigest);
C'est ça! L'utilisateur peut désormais utiliser la variable "authentification" comme en-tête pour communiquer avec l'API commerciale.
Identifiant du marchand à utiliser dans l'en-tête *Obligatoire
Un identifiant de marchand doit être transmis dans l'en-tête.
L'identifiant de l'utilisateur marchand peut être trouvé dans l'utilisateur ChainMyne Pay tableau de bord sur dashboard.chainmynepay.com ou api.digitalpaydev.com sous Paramètres > section Informations sur le compte.
Recevoir des paiements
Créer une adresse de portefeuille de paiement
Post-créer l'API d'adresse de portefeuille
variable = btc, eth, bch
https://api.chainmynepay.com:5000/usr/wallet/<asset>/create
https://api.digitalpaydev.com:5000/usr/wallet/<asset>/create
En-têtes :
clé API. 9c0c51ee6f3798e3aae63ea630ddd2b7265fe54f
(valeur de la clé publique)
marchand_id (identifiant du marchand dans les informations de compte)
authentification. (valeur d'authentification générée)
CORPS RAW JSON
{ "ref_id": "ID de référence/facture unique de l'utilisateur par client",
"url": "https://yourwebhookurl.com", (champ facultatif, cela remplacera l'url du webhook définie dans les options de la clé API. )
"timestamp": 1550838976, "nonce": 693795,"currency":"USD" (options USD,CAD,EUR. Si le champ n'est pas inclus, l'USD est utilisé par défaut. )}
Exemple de réponse réussie
{
"statut": "succès",
"données": {
"id_réf": "cor121121",
"prix": 8632,59,
"adresse": "moep287CANJhZoyssrigoHtkMwBiz6uhDt",
"pièce": "BTC",
"expire": "2020-05-04 14:32:46.480"
}
}
Exemple de réponse d'échec
{
"état": "erreur",
"message": "Accès invalide"
}
Ou
{
"état": "erreur",
"message": "Impossible de créer l'adresse
”
}
Notification de rappel du Webhook de paiement ChainMyne Pay :
Des notifications instantanées de paiement (IPN) sont envoyées par ChainMyne Pay à chaque changement de statut confirmé. Les IPN sont publiés sur l'URL de votre webhook spécifiée dans le tableau de bord utilisateur ChainMyne Pay. Si la passerelle ChainMyne Pay reçoit une réponse HTTP/1.1 200 OK de votre serveur, le message est réputé avoir été correctement délivré.
REMARQUE : cela ne signifie pas que l'application utilisateur a correctement géré les données, mais seulement qu'elles ont été reçues avec succès par le serveur utilisateur !
Si un code d'erreur HTTP est reçu par la passerelle, le serveur ChainMyne Pay tentera de renvoyer l'IPN à des intervalles de temps croissants.
Le délai entre chaque nouvelle publication est le suivant : 1 minute de retard, 2 minutes de retard, 4 minutes de retard, 8 minutes de retard, 20 minutes de retard, 40 minutes de retard, 80 minutes de retard, 160 minutes de retard, 320 minutes de retard, 640 minute de retard et 1 280 minutes de retard. Le système IPN arrête de reposter lorsque :
ChainMyne Pay reçoit une réponse HTTP de base « 200 OK » de votre serveur Web, ou
lorsque 1 280 minutes se sont écoulées depuis le message initial.
Remarque : Cette fonctionnalité s'applique aux comptes Sandbox et Live.
Réponse de l'URL du webhook (IPN)
En-têtes
signature CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(Corps, clé secrète));
Corps
{"id_ref":"wm_123323″,
"prix": 8550.26,
"montant": 0,0006,
"totale":5.13,
"date_heure":"1588354319000",
"id_transaction":"c3c2920e4705cc37c57d0937576d6346c27ca81f2b9e507fd47a1de113b7bba9",
"pièce":"BTC",
"réseau":"testnet",
"Devise: USD"
}
Obtenir le statut de la transaction
https://api.chainmynepay.com:5000/usr/wallet/transactions
https://api.digitalpaydev.com:5000/usr/wallet/transactions
En-têtes
clé API. 9c0c51ee6f3798e3aae63ea630ddd2b7265fe54f
(valeur de la clé publique)
marchand_id (identifiant du marchand dans les informations de compte)
authentification. (valeur d'authentification générée)
CORPS RAW JSON
{"adresse": "bchtest:qpggts6de95hnutg8wrxx55mh9z2dnxp2v64tuqn73",
"horodatage": 1550838976, "nonce": 693795}
Exemple de réponse réussie
{
"statut": "succès",
"données": {
"date_heure": "2020-07-31T22:10:21.000Z",
"adresse": "bchtest:qpggts6de95hnutg8wrxx55mh9z2dnxp2v64tuqn73",
"statut": "payé", (payé, en attente)
"payment_amount": 0.01655245,
"paiement_total": 6,54,
"txid": "0bd4d3c2ab491649bc5c7328aba8d46b2c2c856ca5cd8261d489a7e01c2a5f12",
"prix": 395,23,
"devise": "CAD",
"pièce": "BCH"
}
}
Obtenir la clé API
POSTE https://api. .com:5000/keyauth
POSTE https://api.digitalpaydev.com:5000/keyauth
En-têtes
'Type de contenu' : 'application/json'
Corps
{"nom d'utilisateur":"clients@email",
"mot de passe": "mot de passe client"
}
Réponse réussie
{
"statut": "succès",
"données": {
"nom": "Nom du marchand",
"merchant_id":"identifiant du marchand"
"clé_publique": "qw92332bb6f07da62f17fdec1f703e3214cf2d78vv6",
"clé_secrète": "3w0482d4f3ea4f1f12f8fe250605472989990c6bsc"
}
}
Réponses d'erreur
les informations d'identification invalides
{
"état": "erreur",
"message": "Identifiants non valides"
}
Comptes KYC non vérifiés
{
"état": "erreur",
"message": "Non vérifié"
}