Référence API
Démarrer un achat de billets
Valide billet, quantité, acheteur et protection navigateur, puis retourne le paiement serveur ou résultat gratuit existant.
https://api.sparkglim.net/api/public/tickets/purchaseModèle d’accès
- Modèle d’accès
- Accès public avec validation
- Disponibilité documentée
- Implémenté dans le code
La disponibilité est vérifiée dans le code, pas garantie en production.
Ouvrez l’URL de paiement retournée. SparkGlim Server contrôle prix, moyens, vérification et exécution ; le retour navigateur est uniquement une navigation.
Requête
| Nom | Type | Validation |
|---|---|---|
campaign_idObligatoireCampagne existante dans le compte et dans tout périmètre de clé de campagne plus limité. | string | Validation : UUID. |
ticket_idObligatoireType de billet choisi de la campagne indiquée ; le serveur vérifie statut, capacité et prix. | string | Validation : UUID. |
quantityObligatoireNombre de billets demandés ; stock et limites par personne restent imposés par le serveur. | integer | Validation : 1–100. |
phone_numberObligatoireTéléphone du participant ; les moyens de paiement et règles peuvent exiger un numéro international valide. | string | Validation : Numéro de téléphone valide et non vide. |
emailFacultatifEmail de contact utilisé par le parcours configuré ; il ne donne jamais accès à lui seul. | string | Validation : Adresse e-mail. |
discount_codeFacultatifCode de réduction ou invitation de campagne, revérifié par le serveur avant achat. | string | Validation : Valeur sans espaces périphériques et non vide. |
invite_codeFacultatifCode de réduction ou invitation de campagne, revérifié par le serveur avant achat. | string | Validation : Valeur sans espaces périphériques et non vide. |
luggage_quantityFacultatifQuantité de bagages pour un événement proposant réellement cette option configurée. | integer | Validation : >=0. |
attendee_informationFacultatifRéponses aux champs réels de campagne, valeurs requises et options prises en charge. | object | Validation : Valeurs textuelles correspondant aux champs configurés. |
payment_channelFacultatifPréférence facultative ; seuls les moyens activés pour le pays vendeur, la devise et le marchand sont utilisables. | enum | Validation : card | mobile_money | apple_pay | bank_transfer | crypto ; disponibilité contrôlée par le serveur. |
network_codeFacultatifRéseau mobile configuré lorsque le moyen de paiement choisi l’exige. | string | Validation : Réseau configuré. |
is_appFacultatifContexte existant pour choisir configuration Web ou App ; aucune permission supplémentaire. | boolean | Validation : Contexte du client. |
web_abuse_contextObligatoireDonnées existantes de protection navigateur requises avant paiement public ; elles ne remplacent pas l’autorisation serveur. | object | Validation : Objet strict ; JSON de device_details <=12000 caractères. |
web_abuse_context.device_idObligatoireSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | string | Validation : 12–160. |
web_abuse_context.device_fingerprintObligatoireSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | string | Validation : 12–160. |
web_abuse_context.browser_signatureFacultatifSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | string|null | Validation : 12–160. |
web_abuse_context.hardware_signatureFacultatifSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | string|null | Validation : 12–160. |
web_abuse_context.device_detailsFacultatifSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | object | Validation : Objet JSON. |
web_abuse_context.client_pattern_detectedFacultatifSignal existant de protection navigateur accepté par le schéma actuel de paiement public. | boolean | Validation : Protection d’appareil existante. |
client_attempt_idFacultatifIdentifiant stable d’opération utilisé pour retrouver une tentative et rejeter les reprises incompatibles. | string | Validation : Identité d’opération normalisée et stable. |
return_pathFacultatifDestination relative de retour sur le site actuel vérifié après paiement centralisé. | string | Validation : Chemin relatif de même origine ; sans // ni barre oblique inverse. |
Requête
Les exemples décrivent le contrat et ne sont pas exécutés. Utilisez des données de test autorisées ; ne saisissez jamais de secret réel ici.
POST /api/public/tickets/purchase HTTP/1.1
Host: api.sparkglim.net
Content-Type: application/json
{
"campaign_id": "11111111-1111-4111-8111-111111111111",
"ticket_id": "22222222-2222-4222-8222-222222222222",
"quantity": 1,
"phone_number": "+233200000000",
"web_abuse_context": {
"device_id": "<EXISTING_DEVICE_ID>",
"device_fingerprint": "<EXISTING_DEVICE_FINGERPRINT>"
},
"client_attempt_id": "example_stable_attempt_0001"
}Réponse
{
"success": true,
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"status": "pending"
}
}{
"success": false,
"error": "<ERROR_MESSAGE>"
}Validation, permissions, données indisponibles et pannes utilisent le statut HTTP et l’erreur du gestionnaire.
Limites et tentatives
Limite serveur par défaut : 100 requêtes par IP sur 60 secondes. Des contrôles spécifiques s’appliquent.
Compatibilité du code
Les opérations autorisées nécessitent des tests propres au compte.
server/src/api/router.tsserver/src/api/routes/public.ts