Guias de integração
Enviar um voto real para o pagamento central
Elegibilidade, quantidades e registos permanecem sob a autoridade do SparkGlim Server.
Antes de começar
- Campanha pública, categoria ativa e nomeado com status e application_status aprovados.
- Datas, quantidades, preços, moeda e visibilidade da configuração real.
- Cliente Web protegido existente e autorização de testes controlados.
Respeitar as regras do programa
Use campaign_id e participant_id realmente selecionados, vote_count inteiro permitido e contactos exigidos. A validação local não concede acesso.
Respeite datas, atividade da categoria e aprovação. Nunca apresente contagens ocultas.
Manter o limite protegido
O cliente chama fetchPublicFlow("/vote", ...) para POST /api/public/vote. O Storm prepara o contexto do navegador exigido pelo Server.
Este import pertence ao repositório, não a um SDK universal. Um site externo sem proteção aprovada deve usar a página real ou uma integração Organização aprovada, sem identidades de dispositivo falsas.
Transferir sem registar votos no navegador
A função inativa recebe um pedido imutável e o mesmo client_attempt_id. Apresentar o código não envia votos nem concede autorização de teste.
Abra o URL central devolvido. Server confirma pagamento e votos; consulta, regresso ou sessão inicializada não incrementa contagens. Não acrescente verificação nem consultas periódicas do navegador.
'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;
}Verifique a sua integração
- Verificar elegibilidade, datas e quantidades com registos controlados.
- Manter contagens privadas e a tentativa incerta sem outro pagamento nem voto anunciado.