Référence API portail
Référence API opérationnelle pour connecter un portail captif propriétaire à ReadyZone.
/api/companies/public/{companyRef}/nameRôle: Retourner le nom et le libellé public de la zone pour le branding du portail.
Accès: Public
Cas d'usage opérateur: Au chargement du portail, afficher automatiquement le nom de zone exact (ex: ED Center).
Paramètres:
- companyRef (path, obligatoire)
Corps de réponse (exemple):
{
"name": "ReadyZone Center",
"label": "ReadyZone Center",
"reference": "ed-center-68819"
}Codes de statut:
- 200 OK
- 400 Bad Request (company non trouvée)
/api/plans?companyRef={companyRef}Rôle: Lister les forfaits actifs de la zone.
Accès: Public
Cas d'usage opérateur: Quand l'utilisateur ouvre l'onglet “Acheter un forfait”, le portail charge uniquement les forfaits actifs de la zone.
Paramètres:
- companyRef (query, obligatoire)
Corps de réponse (exemple):
[
{
"id": "plan_uuid",
"name": "Forfait 2H",
"price": 500,
"currency": "XAF",
"type": "time-based",
"durationHours": 2,
"isGuestPurchaseEnabled": true,
"isActive": true
}
]Codes de statut:
- 200 OK
- 400 Bad Request (companyRef manquant/invalide)
https://readyzone.getready.services/checkout/{planId}?companyRef={companyRef}Rôle: Rediriger vers la page checkout ReadyZone pour un paiement standard OM/MoMo.
Accès: Public (page web ReadyZone)
Cas d'usage opérateur: Bouton “Payer via OM/Momo”: ouvrir la page checkout ReadyZone et laisser l'utilisateur finaliser le paiement.
Paramètres:
- planId (path, obligatoire)
- companyRef (query, recommandé)
Corps de réponse (exemple):
Page checkout ReadyZone affichée avec le forfait sélectionné et le flux complet de paiement.
Codes de statut:
- 200 OK
- 400 Bad Request
- 404 Not Found
/api/payments/guest-buy-planRôle: Démarrer un achat invité (sans compte) et créer une transaction de paiement.
Accès: Public (contrôles anti-abus côté API)
Cas d'usage opérateur: Bouton “Paiement instantané”: un client de passage paie rapidement sans créer de compte.
Paramètres:
- key (query, optionnel selon configuration)
Corps de requête:
{
"planId": "plan_uuid",
"paymentPhone": "+237690201423",
"notificationContact": "client@example.com",
"username": "AA:BB:CC:DD:EE:FF",
"password": "DOES_NOT_WORKING"
}Corps de réponse (exemple):
{
"message": "Achat invité initié avec succès",
"purchaseId": "purchase_uuid",
"merchandTransactionId": "GR-TX-XXXXXXXXXX",
"notchTransactionId": "np_xxxxx",
"paymentUrl": "https://...",
"isGuestPurchase": true
}Codes de statut:
- 201 Created
- 400
- 404
- 422
- 429
/api/payments/verify/{transactionReference}Rôle: Vérifier l'état de la transaction et synchroniser le statut local.
Accès: Public
Cas d'usage opérateur: Après lancement d'un paiement, faire un polling toutes les 5 secondes jusqu'au statut final.
Paramètres:
- transactionReference (path, obligatoire)
Corps de réponse (exemple):
{
"message": "Payment status successfully verified",
"status": "complete",
"transactionId": "GR-TX-XXXXXXXXXX",
"targetType": "payment"
}Codes de statut:
- 200 OK
- 404 Not Found
/api/sessions/check-username/{username}Rôle: Vérifier la disponibilité d'un identifiant ReadyZone avant achat.
Accès: Public
Cas d'usage opérateur: Avant validation d'un achat, éviter un rejet tardif en testant si le username est déjà pris.
Paramètres:
- username (path, obligatoire)
Corps de réponse (exemple):
{
"available": true
}Codes de statut:
- 200 OK
- 400 Bad Request
/api/payments/guest/active-credentialsRôle: Permettre la récupération des identifiants invités via le contact de notification ou le téléphone de paiement.
Accès: Public (rate-limited)
Cas d'usage opérateur: Client ayant payé mais sans identifiants: récupérer ses accès depuis le portail sans ticket support.
Paramètres:
- notificationContact (query, optionnel)
- paymentPhone (query, optionnel)
Corps de réponse (exemple):
{
"items": [
{
"username": "AA:BB:CC:DD:EE:FF",
"password": "********",
"status": "complete",
"purchaseDate": "2026-03-12T08:20:00.000Z"
}
]
}Codes de statut:
- 200 OK
- 400 Bad Request
- 429 Too Many Requests