Développeurs

Un paiement accompagné, en une seule demande

Principe

Votre serveur demande un paiement à Reglopay. Reglopay renvoie une adresse de paiement : vous y envoyez votre client. Reglopay le guide jusqu'au dernier geste, le relance s'il abandonne, lui remet un reçu vérifiable, puis prévient votre site.

Tous les champs sont en français. Les montants sont des nombres entiers de francs guinéens.

Les clés

Chaque demande porte une clé dans l'en-tête Authorization. Une clé d'essai (rp_essai_…) ne fait jamais circuler d'argent réel ; une clé réelle (rp_reel_…) s'obtient après la vérification du compte. Une clé ne s'affiche qu'une seule fois : gardez-la sur votre serveur.

Créer un paiement

POST https://reglopay.com/v1/paiements
Authorization: Bearer rp_essai_…
Content-Type: application/json
Idempotency-Key: commande-1042

{
  "montant": 5000,
  "objet": "Abonnement mensuel",
  "reference_commercant": "commande-1042",
  "client": { "nom": "Aïssatou", "telephone": "000000001" },
  "guide": { "langue": "fr" },
  "relance": { "active": true },
  "retour_url": "https://votre-site.com/merci",
  "metadonnees": { "eleve": "1042" }
}

Réponse 201 : le paiement, avec url_paiement. La même Idempotency-Key renvoie la même réponse pendant 24 heures : jamais de paiement en double si votre serveur réessaie.

Suivre un paiement

GET https://reglopay.com/v1/paiements/{id}
GET https://reglopay.com/v1/paiements/{id}/evenements
GET https://reglopay.com/v1/paiements?statut=paye&limite=20

États : cree, en_attente, a_confirmer, paye, abandonne, echoue, annule. Un paiement abandonné ou échoué peut encore aboutir après une relance : il ne finit que payé ou annulé.

Code marchand : valider

Avec le code marchand, le client paie directement sur votre compte Orange ou MTN, puis envoie la référence de son SMS. Le paiement passe a_confirmer ; vous vérifiez sur votre compte marchand, puis :

POST https://reglopay.com/v1/paiements/{id}/valider
POST https://reglopay.com/v1/paiements/{id}/refuser
POST https://reglopay.com/v1/paiements/{id}/annuler

Liens de paiement

POST https://reglopay.com/v1/liens
{ "montant": 350000, "objet": "Robe en bazin, taille 40", "pour_qui": "Mariama" }

Réponse : url, à partager sur WhatsApp.

Notifications vers votre site

Indiquez l'adresse de votre site dans Réglages. Reglopay y envoie un POST JSON à chaque étape : paiement.cree, paiement.en_attente, paiement.a_confirmer, paiement.paye, paiement.abandonne, paiement.echoue, paiement.repris, paiement.annule. Sans réponse 2xx, nouvel essai après 1 min, 5 min, 30 min, 2 h et 12 h.

L'en-tête Reglopay-Signature: t=…,v1=… prouve l'origine : v1 est le HMAC-SHA256 de t + "." + corps avec votre clé de signature.

// Vérifier la signature (PHP)
$corps = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_REGLOPAY_SIGNATURE']), $s);
$attendu = hash_hmac('sha256', $s['t'] . '.' . $corps, $cleSignature);
if (!hash_equals($attendu, $s['v1']) || abs(time() - (int)$s['t']) > 300) {
  http_response_code(400); exit;
}
$evt = json_decode($corps, true);
if ($evt['evenement'] === 'paiement.paye') { /* activer la commande */ }
http_response_code(200);

Le simulateur de la vraie vie

Avec une clé d'essai, le numéro du client choisit ce qui arrive. Testez votre site contre la réalité, pas seulement contre un paiement parfait.

NuméroCe qui se passe
000000001Le client paie · Confirmation au bout de quelques secondes.
000000002Le client ne confirme pas · Le paiement est abandonné, puis relancé.
000000003Solde insuffisant · Le compte du client n'a pas assez d'argent.
000000004Le réseau coupe · La page perd la connexion, puis reprend toute seule.
000000005Opérateur indisponible · L'opérateur ne répond pas : l'autre est proposé.
GET https://reglopay.com/v1/essai/scenarios

Les erreurs

Chaque erreur dit ce qui ne va pas, en français, avec un code stable :

{
  "erreur": {
    "code": "montant_invalide",
    "message": "Le montant doit être compris entre 100 GNF et 50 000 000 GNF."
  }
}