Estudio de campañas
Diseña y exporta una ruleta, tarjeta para rascar o caja sorpresa. Demostración local o API propia; sin premios alojados.
- Componente: Ruleta / Rasca y gana / Cajas sorpresa
- Tema: Minimalista costero / Caramelo pop / Arcade retro / Oro nocturno / Papel festivo / Boceto de jardín
Origen del resultado
El sorteo local es modificable y no asigna premios de forma segura. Las ofertas del código son públicas. Sin control de stock, identidad ni repetición.
Tu servidor gestiona autenticación, probabilidades, stock, elegibilidad e idempotencia. No introduzcas claves secretas. La vista previa no llama a la API.
Guía de integración de la API
Es un contrato de interfaz, no un servicio de sorteos de Elysia. Implementa POST /api/draw en tu servidor con los mismos IDs de campaña y premios, e introduce el endpoint. Descarga y aloja los archivos en HTTPS para probar sorteos reales; el editor solo los simula.
Solicitud · POST application/json
El widget solo envía version, campaignId y un requestId hexadecimal aleatorio de 32 caracteres. No envía identidad, probabilidades ni claves API. El servidor debe identificar al participante; requestId no es una credencial.
{
"version": 1,
"campaignId": "summer-boutique",
"requestId": "0123456789abcdef0123456789abcdef"
}
Éxito · 200 application/json
Devuelve el mismo requestId. prizeId debe existir en la lista, también para resultados sin premio. Opcionales: receiptId (≤200 caracteres), claim.code (≤300), claim.url (HTTPS, ≤2048). Omite campos sin usar, no envíes null. Sin envoltorio data/result y máximo 16 KiB. Un fallo no equivale a no ganar.
{
"requestId": "0123456789abcdef0123456789abcdef",
"prizeId": "p1",
"receiptId": "draw_2026_001",
"claim": {
"code": "SAMPLE-ONLY",
"url": "https://shop.example/redeem"
}
}
IDs de premios configurados:
p1: 10% de descuento
p2: Envío gratis
p3: Regalo sorpresa
p4: Otra vez será
Aloja el widget y /api/draw en el mismo origen (protocolo, host y puerto), con proxy inverso si hace falta. Las rutas se resuelven desde el widget, no desde la tienda contenedora. credentials: same-origin solo envía cookies del mismo origen. No admite Authorization ni cabeceras personalizadas. Otro origen requiere CORS para el widget y OPTIONS para POST + Content-Type; no recibe cookies entre orígenes. Un HTML estático no basta para sorteos autenticados; los iframes pueden sufrir bloqueo de cookies.
El servidor autentica, valida Origin/CSRF y elegibilidad, limita participaciones y frecuencia, decide con sus propias probabilidades y reserva stock junto con el resultado en una transacción. Guarda idempotencia por participante + campaignId + requestId y devuelve el mismo resultado al reintentar. Canje y caducidad se controlan en servidor. No confíes en datos del navegador como prueba ni publiques secretos.
Rechaza solicitudes con un estado no 2xx (p. ej., 401/403/409/429/503). El widget muestra un mensaje genérico, no el error del servidor. Expira a los 15 segundos y rechaza redirecciones, JSON inválido, requestId distinto, premios desconocidos o enlaces inseguros. Reintentar conserva el ID pendiente solo en esta página; recargar crea otro, por lo que los límites deben persistir. No hay reintento automático ni premio local de respaldo.
La vista previa sigue activa con API o alojamiento incompletos. Corrige los campos marcados para exportar; errores de premios o estilo conservan la última vista válida.
Exportar e insertar
HTML / CSS / JavaScript / JSON. Aloja los archivos en tu sitio HTTPS y pega la URL. Esta herramienta no publica ni aloja campañas.
Las imágenes opcionales se cargan desde sus sitios HTTPS. El editor no guarda imágenes ni claves API.
Los sectores iguales son visuales; las probabilidades rigen la demo. En modo API decide el servidor.