Guias de integração
Ligar a compra de bilhetes ao pagamento central
Use configuração real e o cliente Web protegido para abrir a sessão criada pelo servidor.
Antes de começar
- Campanha pública aprovada, tipos de bilhete reais e formulário próprio do evento.
- Ambiente de teste autorizado e repositório Web SparkGlim; o módulo não é um SDK de navegador publicado.
- Proteções Storm/Turnstile existentes, origem permitida e regresso relativo da mesma origem.
Ler bilhetes e requisitos
Escolha bilhete ativo, quantidade permitida e campos obrigatórios. Preserve identificadores, moeda, datas, convites e limites do servidor.
O navegador não calcula encargos nem totais. Bilhetes gratuitos mantêm o percurso existente; o exemplo pago não o substitui.
Manter a integração protegida
No Web aprovado, fetchPublicFlow de lib/server-backend/public-api.ts usa prepareWebCheckoutRequest de lib/security/web-checkout-storm.ts para contexto, tentativa e regresso.
cURL/Python/PHP externos sem web_abuse_context não são uma integração funcional. Não invente impressões digitais nem contorne controlos. Use acesso Organização aprovado ou a página real da campanha.
Enviar uma vez e abrir o pagamento
A função não atua até o formulário validado a chamar com teste autorizado. Preserve client_attempt_id e bloqueie repetições se houver incerteza. O indicador de teste não concede permissões.
Abra apenas authorization_url de checkout.sparkglim.net num pagamento. Checkout e Server gerem resultado e regresso; não acrescente verificação, consultas periódicas ou entrega no 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;
}Verifique a sua integração
- Testar bilhetes esgotados e campos obrigatórios com dados autorizados.
- Manter recusa de identidade ausente e verificar regresso sem cobrança real.