Ir a la documentación
SparkGlimSparkGlim Desarrolladores
Buscar en toda la documentación

Prueba un tema en tu idioma o una ruta API exacta.

    Guías de integración

    Enviar un voto real al pago central

    Elegibilidad, cantidades y registro permanecen bajo la autoridad de SparkGlim Server.

    Antes de empezar

    • Campaña pública, categoría activa y nominado con status y application_status aprobados.
    • Fechas, cantidades, precios, moneda y visibilidad de la configuración real.
    • Cliente Web protegido existente y autorización de pruebas controladas.
    01

    Respetar las reglas del programa

    Use campaign_id y participant_id realmente seleccionados, vote_count entero permitido y contactos requeridos. La validación local no concede acceso.

    Respete fechas, actividad de categoría y aprobación. Nunca muestre recuentos ocultos.

    02

    Mantener la frontera protegida

    El cliente llama fetchPublicFlow("/vote", ...) para POST /api/public/vote. Storm prepara el contexto de navegador exigido por Server.

    Este import pertenece al repositorio, no a un SDK universal. Un sitio externo sin protección aprobada debe usar el enlace real o una integración Organización aprobada, sin identificadores de dispositivo falsos.

    03

    Transferir sin registrar votos en el navegador

    La función inactiva recibe una petición inmutable y el mismo client_attempt_id. Mostrarla no envía votos ni otorga permisos de prueba.

    Abra la URL central devuelta. Server confirma pago y votos; una consulta, retorno o sesión inicializada no incrementa recuentos. No añada verificación ni consultas periódicas del navegador.

    Solicitud ilustrativa con valores de ejemplo
    typescript
    'use client';
    import { fetchPublicFlow } from '@/lib/server-backend/public-api';
    type Input = { campaign_id: string; participant_id: string; vote_count: number; phone_number: string; email?: 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('/vote', {
          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

    • Comprobar elegibilidad, fechas y cantidades con registros controlados.
    • Mantener recuentos privados y el intento incierto sin otro pago ni voto anunciado.