Aller au contenu
Retour à la documentation

Guide développeur

Encaisser un paiement EasyPay depuis votre site ou votre application, étape par étape.

Intégration pas à pas

  1. 1. Obtenez vos clés API

    Dans l'application EasyPay — compte marchand ou Espace Pro —, ouvrez Paramètres → API & Integration et générez vos clés : ek_live_… pour la production, ek_test_… pour le bac à sable. Elles ne s'affichent qu'une fois, et régénérer remplace les deux. Gardez-les sur votre serveur : la clé signe aussi vos callbacks.

  2. 2. Créez une session depuis votre serveur

    Appelez POST /api/v1/checkout/sessions avec l'en-tête X-API-Key et au moins title, amount (en MRU) et returnUrl. Ajoutez orderId pour retrouver la commande et callbackUrl pour être notifié du paiement. La réponse contient checkoutUrl et sessionToken : conservez le jeton avec la commande.

  3. 3. Envoyez le client sur la page de paiement

    Redirigez le client vers checkoutUrl, payable pendant 30 minutes. Il paie depuis l'application EasyPay, ou depuis son wallet après un code SMS — ce paiement attend alors votre validation dans l'application marchande. Une fois le paiement abouti ou refusé, la page renvoie le client vers votre returnUrl avec easypay_status=paid ou failed.

  4. 4. Confirmez le paiement sur votre serveur

    Ne livrez pas sur la seule foi du retour navigateur : n'importe qui peut taper cette URL. Attendez le callback checkout.paid envoyé à votre callbackUrl — son en-tête X-EasyPay-Signature est le HMAC-SHA256 hexadécimal du corps brut, calculé avec votre clé API — ou relisez la session avec GET /api/v1/checkout/sessions/{sessionToken} et vérifiez qu'elle est PAID.

  5. 5. Testez dans le bac à sable

    Utilisez votre clé ek_test_, sur la même URL. Les sessions portent sandbox: true, les limites de montant ne s'appliquent pas, le paiement est confirmé aussitôt sans mouvement d'argent et checkout.paid arrive avec "sandbox": true. Un client sans compte EasyPay reçoit tout de même un vrai code SMS.

  6. 6. Passez en production

    Remplacez la clé ek_test_ par la clé ek_live_ : l'URL ne change pas. En production, une session va de 100 à 500 000 MRU, et votre compte doit avoir un wallet vérifié et actif pour être crédité — un code commerçant pour un compte marchand.

Exemple : créer une session (Node.js)

// Node.js 18+, on your server — never in the browser
const response = await fetch("https://easypay.emko.ink/api/v1/checkout/sessions", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.EASYPAY_API_KEY, // ek_test_… to test, ek_live_… in production
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "Order #1234",
    amount: 5000, // MRU
    orderId: "ORDER-1234",
    returnUrl: "https://yoursite.com/orders/1234/return",
    callbackUrl: "https://yoursite.com/easypay/callback",
  }),
});
const body = await response.json();
if (!response.ok) throw new Error(body.detail || body.message);

// Store body.data.sessionToken with the order, then send the customer to:
const checkoutUrl = body.data.checkoutUrl;

Intégrations disponibles

API REST

Depuis n'importe quel langage côté serveur : sessions de paiement, callbacks signés, webhooks.

Lire la documentation

Extension WooCommerce

Passerelle de paiement pour les boutiques WordPress / WooCommerce.

Lire la documentation

Module Odoo

Paiement des commandes et des factures Odoo, avec rapprochement automatique des factures.

Lire la documentation