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
- 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 ;
- 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
-
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 - 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
- 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.