Intégration avec votre service

Marchand

Créer une demande

Utilisez la méthode public/exchanger/order/create

Nom Description Type
routeId ID de la direction ObjectID
partner code du partenaire STRING
amount montant FLOAT
fromValues[0][key] clé du champ ObjectID
fromValues[0][value] valeur pour le champ STRING
toValues[0][key] clé du champ STRING
toValues[0][value] valeur pour le champ STRING
routeValues[0][key] clé du champ ObjectID
routeValues[0][value] valeur pour le champ STRING
lang langue (ukr, eng) STRING
agreement accord BOOLEAN
hideOutData masquer les coordonnées BOOLEAN
clientCallbackUrl callback client, lorsque l'application sera terminée, le client verra un bouton pour retourner sur le site et sera redirigé vers cet URL ?status=success ou sur ?status=error STRING
ipnUrl URL de notification du paiement instantané (sera appelé lors du changement de statut de la commande) STRING
ipnSecret chaîne pour créer un hash sécurisé dans l'URL IPN STRING

Vous pouvez trouver la documentation du système d'autorisation dans votre espace personnel. Plus d'informations sur l'utilisation des méthodes et des données supplémentaires sont disponibles sur

IPN (Notification de changement de statut de la demande de paiement)

UclientCallbackUrl - {{ $t('page.merchants.clientCallbackUrl') }
UhideOutData - masquer les données du destinataire
UipnUrl - Lien HTTP / HTTPS pour notifier votre serveur.
UipnSecret - Chaîne aléatoire pour créer la signature de la requête (pour maintenir l'intégrité de la requête)

La requête sera envoyée en méthode POST
L'IPN sera envoyé une seule fois
La livraison de l'IPN n'est pas garantie (si le serveur ne répond pas à la requête, il ne sera pas renvoyé)

Exemple IPN

POST

['Content-Type'] = 'application/x-www-form-urlencoded'

orderUID :Number() - demande uid
orderId :String(ObjectId) - demande id
newStatus :String() - demande du statut actuel
inAmount :String(number) - order in sum
outAmount :String(number) - order out sum
xml_from :String() - demande uid
xml_to :String() - demande uid
timestamp :Number() - temps unix et notification IPN
toValues :Array([{key,name,value}]) - coordonnées de la demande

Liste des statuts

new - nouvelle demande
waitPayment - en attente de paiement de l'utilisateur
errorPayment - erreur de paiement utilisateur (erreur d'envoi par le vendeur)
inProgress - en cours (en attente de traitement par l'administrateur ou de paiement de la demande)
inProgressPayout - en file pour paiement (paiement accepté avec succès) (si le paiement automatique dans la devise est configuré, il sera initié)
errorPayout - erreur de paiement (une erreur s'est produite lors du paiement)
hold - demande gelée (problèmes avec l'application)
done - demande payée avec succès
returned - la demande a été payée, mais toutes les conditions d'échange et les méthodes de retour de l'expéditeur n'ont pas été remplies
deleted - demande supprimée (annulée)

Vérification de la somme de contrôle de la requête (IPN)

sha256(orderId:newStatus:inAmount:outAmount:xml_from:xml_to:timestamp:ipnSecret)

const stringForHash = orderId+":"+newStatus+":"+inAmount+":"+outAmount+":"+xml_from+":"+xml_to+":"+timestamp+":"+ipnSecret; // example string for hash 5d8e6002b80b7b4cd75a6424:inProgress:2:317.42:ETH:WMZ:1571328406072:SECRET123

const hash = crypto.createHash('sha256').update(stringForHash).digest('hex') // example hash af3acf947e6f0e0f2c267e300b8582e504dba12d1f2d058652b7414163c09f48

Contrôle des paiements

  1. Si vous avez besoin de contrôler le statut des requêtes et de les créer via l'autorisation, toutes les requêtes seront reflétées dans votre espace personnel ;
  2. Vous pouvez sauvegarder l'UID de la requête et le secret, puis accéder manuellement à la requête en entrant ces données dans la barre d'adresse

Paiement

  1. Vous pouvez utiliser /payment/ pour afficher la page de paiement

    // schema
    https://nimlab.eu/user-lang/payment/order-uid/order-secret
    // example result
    https://nimlab.eu/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb
  2. Vous pouvez également simplement fournir un lien vers l'échange tel que vu par tous les clients, en remplaçant /payment/ par /order/ comme dans le premier cas
  3. La méthode comporte des paramètres qui permettent d'afficher les données de paiement ou un formulaire de paiement sur votre site, que vous pouvez utiliser. IMPORTANT : si une méthode prépayée est utilisée, vous devez mettre à jour le statut de la commande de waitPayment à inProgress après le paiement.