Guías de integración
Conectar la compra de entradas al pago central
Use configuración real y el cliente Web protegido para abrir la sesión creada por el servidor.
Antes de empezar
- Campaña pública aprobada, tipos de entradas reales y formulario específico.
- Entorno de prueba autorizado y repositorio Web SparkGlim; el módulo no es un SDK de navegador publicado.
- Protecciones Storm/Turnstile existentes, origen permitido y retorno relativo del mismo origen.
Leer entradas y requisitos
Elija entrada activa, cantidad permitida y campos obligatorios. Conserve identificadores, moneda, fechas, invitaciones y límites del servidor.
El navegador no calcula cargos ni totales. Las entradas gratuitas mantienen su flujo existente; el ejemplo pagado no lo reemplaza.
Conservar la integración protegida
En el Web aprobado, fetchPublicFlow de lib/server-backend/public-api.ts usa prepareWebCheckoutRequest de lib/security/web-checkout-storm.ts para contexto, intento y retorno.
cURL/Python/PHP externos sin web_abuse_context no son una integración funcional. No invente huellas ni evada controles. Use acceso Organización aprobado o la página real de campaña.
Enviar una vez y abrir el pago
La función no actúa hasta que su formulario validado la llame con una prueba autorizada. Conserve client_attempt_id y bloquee repeticiones si el resultado es incierto. El indicador de prueba no concede permisos.
Abra únicamente authorization_url de checkout.sparkglim.net para un pago. Checkout y Server gestionan resultado y retorno; no añada verificación, consultas periódicas ni entrega en el navegador.
'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;
}Compruebe su integración
- Probar entradas agotadas y campos requeridos con datos autorizados.
- Mantener el rechazo por identidad ausente y comprobar retorno sin cobro real.