Guides d’intégration
Relier l’achat de billets au paiement central
Utilisez la configuration réelle et le client Web protégé pour ouvrir la session créée par le serveur.
Avant de commencer
- Campagne publique approuvée, types de billets réels et formulaire propre à l’événement.
- Environnement de test autorisé et dépôt Web SparkGlim ; le module n’est pas un SDK navigateur publié.
- Protections Storm/Turnstile existantes, origine permise et retour relatif de même origine.
Lire les billets et le formulaire
Choisissez un billet actif, une quantité permise et les champs obligatoires. Préservez identifiants, devise, dates, invitations et limites du serveur.
Le navigateur ne calcule ni frais ni total facturé. Les billets gratuits gardent leur parcours existant ; l’exemple de paiement ne le remplace pas.
Conserver le client protégé réel
Dans le Web approuvé, fetchPublicFlow de lib/server-backend/public-api.ts appelle prepareWebCheckoutRequest de lib/security/web-checkout-storm.ts pour le contexte navigateur, la tentative et le retour.
Un appel externe cURL/Python/PHP sans web_abuse_context n’est pas une intégration fonctionnelle. Ne fabriquez pas d’empreintes et ne contournez pas les protections. Utilisez l’accès Organisation approuvé ou le lien réel de campagne.
Envoyer une fois et ouvrir le paiement
La fonction exportée est inactive tant que votre formulaire validé ne l’appelle pas avec un test autorisé. Gardez le même client_attempt_id et bloquez les répétitions en cas d’incertitude. Le drapeau de test ne donne aucune autorisation serveur.
Ouvrez uniquement authorization_url sur checkout.sparkglim.net pour un paiement. Server et Checkout gèrent résultat et retour ; n’ajoutez ni vérification, ni interrogation périodique, ni délivrance dans le navigateur.
'use client';
import { fetchPublicFlow } from '@/lib/server-backend/public-api';
type Input = { campaign_id: string; ticket_id: string; quantity: number; phone_number: string; email?: string; attendee_information?: Record<string, string>; invite_code?: string; discount_code?: string; client_attempt_id: string; return_path: string };
let requestStarted = false;
export async function initializeApprovedTest(input: Input, approvedTest: boolean) {
if (!approvedTest || requestStarted) return null;
requestStarted = true;
const response = await fetchPublicFlow('/tickets/purchase', {
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(input)
});
const result = await response.json();
if (!response.ok || result.success !== true) throw new Error(result.error || 'Checkout unavailable');
if (typeof result.data?.authorization_url !== 'string') throw new Error('No paid checkout URL returned');
const target = new URL(result.data.authorization_url);
if (target.origin !== 'https://checkout.sparkglim.net' || target.username || target.password) throw new Error('Invalid checkout URL');
window.location.assign(target.href);
return target.href;
}Vérifier votre intégration
- Tester billets épuisés et champs requis avec des données de test autorisées.
- Conserver le refus d’identité absente et le blocage navigateur ; vérifier le retour sans paiement réel.