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}/annulerLiens 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éro | Ce qui se passe |
|---|---|
000000001 | Le client paie · Confirmation au bout de quelques secondes. |
000000002 | Le client ne confirme pas · Le paiement est abandonné, puis relancé. |
000000003 | Solde insuffisant · Le compte du client n'a pas assez d'argent. |
000000004 | Le réseau coupe · La page perd la connexion, puis reprend toute seule. |
000000005 | Opé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."
}
}