ReadyZone Docs
FREN
API Integration

Référence API portail

Référence API opérationnelle pour connecter un portail captif propriétaire à ReadyZone.

Endpoints7
Base URLcore.readyzone.space
FlowPublic API
GET/api/companies/public/{companyRef}/name

Rô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)
GET/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)
GEThttps://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
POST/api/payments/guest-buy-plan

Rô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
GET/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
GET/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
GET/api/payments/guest/active-credentials

Rô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