Introduction
Ce guide aide votre équipe à connecter votre application ou site à StadePass pour vendre des places de stade.
Vous envoyez toujours votre code partenaire. Pour ouvrir un événement, vous envoyez aussi le code événement que nous vous avons donné.
Comme un magasin : liste des produits → ouvrir un produit → choisir → réserver un moment → le client vous paie → vous dites à StadePass « vendu » et nous créons les billets.
Vos deux codes
Nous vous donnons seulement deux secrets. C’est tout.
| Code | When | Use |
|---|---|---|
Code partenaire | Le code de votre société (ex. YOUR_PARTNER_CODE) | À envoyer à chaque demande (comme un badge à l’entrée) |
Code événement | Un code par événement auquel vous êtes invité | Seulement pour ouvrir cet événement (débloquer plan et places) |
Le code événement n’est pas un mot de recherche. Ne le mettez pas dans la recherche de la liste.
Comment ça marche (simple)
1 — Voir vos événements
Demandez la liste des événements que vous avez le droit de vendre. Choisissez-en un (gardez son numéro / id).
2 — Ouvrir cet événement
Envoyez le numéro d’événement + votre code événement. StadePass ouvre le plan, les sections et les places. Gardez l’identifiant de session.
3 — Choisir et réserver les places
Ouvrez une section, choisissez des places libres. Chaque place = une réservation courte (~12 min). Deux billets = deux réservations.
4 — Le client vous paie, puis vous confirmez
Demandez le montant total. Vous encaissez vous-même (nous ne débitons pas la carte). Puis confirmez l’achat avec tous les ids de réservation : places vendues et billets créés.
5 — Afficher le billet dans votre app
La réponse d’achat contient data.tickets[].qr_code (32 caractères hex) et place{} (place_id UNIQUE, porte, tribune.couleur, rangée, siège, route). Pas d’image QR — générez le QR côté app.
Comment vous identifier
Chaque demande doit inclure votre code partenaire (nom : x-partner-code). Le code événement sert seulement à ouvrir un événement. Pour la démo, ajoutez aussi x-env: demo (ou ?env=demo) ; par défaut = production.
À envoyer à chaque fois
| Header | Description |
|---|---|
x-partner-code | Votre code partenaire — comme montrer votre badge à chaque appel |
x-env | Optionnel : demo pour l’environnement démo ; omettre = production |
Les prix sont en francs guinéens (GNF). Exemple : 50000 = 50 000 GNF.
Étapes pour vos développeurs
Suivez les étapes 1 à 8 dans l’ordre. Les pages détail montrent quoi envoyer.
À quoi sert chaque étape
| Operation |
|---|
|
1. Lister les événements
Obtenir les événements que vous pouvez vendre. Noter l’id. GET /api/v1/public/events |
|
1b. Créer un événement (demo seulement)
Demo : créez un événement avec le code partenaire seulement. Envoyez x-env: demo. Gardez event_id + access_code pour l’étape 2. POST /api/v1/public/events |
|
2. Ouvrir l’événement (le plan apparaît ici)
Envoyer id événement + code événement. Zones/sections + comptes (map.seats vide jusqu’à l’étape 3). POST /api/v1/public/booking-sessions |
|
3. Ouvrir une section
Voir les places d’une section. Chaque siège inclut place_id (nombre) / place / rangee / porte / tribune / route_texte. Hold avec id. GET /api/v1/public/booking-sessions/:id?section_id= |
|
4. Réserver une place (répéter pour chaque billet)
Une place à la fois. 3 billets = 3 réservations. Garder chaque hold id. POST /api/v1/public/booking-sessions/:id/holds |
|
5. Voir le total à encaisser
Obtenir le montant avant de faire payer le client. GET /api/v1/public/booking-sessions/:id/checkout |
|
6. Confirmer après paiement
Confirmer : places + montant. La réponse tickets[] contient qr_code + place{} (tribune.couleur). Pas d’image QR. POST /api/v1/public/purchases |
|
7. Lister les billets
Billets pour owner_ref. Inclut qr_code + place{} (tribune.couleur). GET /api/v1/public/tickets?owner_ref= |
|
8. Récupérer un billet
Même owner_ref. Renvoie qr_code + place{} (tribune.couleur). Pas d’image QR. GET /api/v1/public/tickets/:id?owner_ref= |
Parcours complet
Lister → ouvrir → section → réserver chaque place → total → le client vous paie → confirmer → afficher les détails place{}.
Vous ne voyez que les événements auxquels vous êtes invité. Les places sont partagées — la première vente confirmée gagne.
Quoi afficher après l’achat
Utilisez data.tickets[].qr_code et place{} de l’achat (même sur GET /tickets/:id). place_id = siège UNIQUE. tribune.couleur = couleur tribune (#hex). Voir docs/TICKET-RESPONSE.md et docs/places-restantes.place-shape.sample.json. Pas d’image QR — générez le QR côté app.
| Field | À afficher / usage |
|---|---|
qr_code | Payload QR 32 caractères hex — à encoder en QR dans votre app |
place.place_id | Id UNIQUE du siège — toujours s’y fier |
place.place, rangee, numero_place | Libellé (W16) + rangée + numéro |
place.porte | Porte : Ouest 1 / Ouest 2 / Est / Nord / Sud (code + libelle) |
place.tribune.couleur | Couleur tribune (#hex) pour l’UI |
place.tribune / route_texte | Nom tribune + chemin |
place.code_litige | Code litige STD-{event}-S{place_id} |
ticket_number | Numéro lisible sur le billet |
<strong>{ticket.ticket_number}</strong>
<span style="color:{ticket.place.tribune.couleur}">{ticket.place.porte.libelle} · {ticket.place.tribune.nom}</span>
<span>Secteur {ticket.place.secteur} · Rangée {ticket.place.rangee} · Siège {ticket.place.place}</span>
<span>{ticket.place.route_texte}</span>
<span>{ticket.place.code_litige}</span>
<qr value="{ticket.qr_code}" />
Exemple — ouvrir un événement
curl -X POST \
"https://book.stadepassgn.com/api/v1/public/booking-sessions" \
-H "Content-Type: application/json" \
-H "x-partner-code: YOUR_PARTNER_CODE" \
-d '{
"event_id": "8",
"access_code": "YOUR_EVENT_SECRET"
}'
{
"success": true,
"message": "Booking session created",
"data": {
"session_id": "6e5e5b33-ab5c-40da-b9f0-19bec7da55dd",
"event_id": "8",
"owner_ref": "YOUR_PARTNER_CODE-user-42",
"status": "ACTIVE",
"expires_at": "2026-09-04T13:30:00.000Z",
"requires_access_code": true,
"event": { "id": "8", "min_price": 35000, "currency": "GNF" },
"map": { "event_id": "8", "zones": [], "sections": [], "seats": [] },
"availability": { "scope": "overview", "remaining": 18894, "zones": [], "sections": [] },
"holds": []
}
}
Postman (pour développeurs)
Téléchargez la collection. base_url = https://book.stadepassgn.com, partner_code, event_secret. Lancez les requêtes de haut en bas.
Si ça ne marche pas
Problèmes fréquents, en langage simple.
401— Code partenaire manquant ou incorrect401 ACCESS_DENIED— Code événement manquant ou incorrect à l’ouverture404— Session ou place introuvable409— Place déjà prise par quelqu’un d’autre410— Trop lent — la session ou la réservation a expiré (réessayez)
{
"code": "ACCESS_DENIED",
"message": "Invalid or missing event access_code"
}