Casos borde
Colisiones de RUT, tokens expirados, conversión de leads y otras esquinas del flujo.
Colisiones de RUT: RUT_OTHER_EMAIL
Cuando un RUT ya está registrado en Skip bajo otro correo, GET /api/spot/widget/{token} devuelve:
- HTTP
409 - Un payload de recuperación que incluye el correo enmascarado en archivo.
El widget renderiza una pantalla "este RUT pertenece a otra cuenta" y le ofrece al paciente un flujo de recuperación (iniciar sesión con el correo original o contactar soporte). Tu página no necesita gestionar esto — aparece como SPOT_WIDGET_ERROR si el paciente no puede completar.
Para la matriz completa de combinaciones email/RUT — qué combinaciones permite Skip y cuáles bloquea — el documento autoritativo es interno. Pídele al equipo Skip la matriz email/RUT si estás diseñando un flujo que necesita gestionar estos casos explícitamente.
Tokens expirados
Los tokens estándar expiran 1 hora después del minteo. Si el paciente vuelve después (ej. desde un link guardado), el iframe recibe 410 Gone. Dos opciones:
- Mintear long-term token. Pasa
long_term_token=trueenPOST /api/spot/widget. El TTL pasa a 30 días. - Mintear on demand. Que la URL de recuperación que pongas en
metadata.retry_urlmintee un token nuevo.
Estado de suscripción
Si necesitas saber si un paciente ya es Skip Pro antes de decidir si renderear el widget:
GET /api/spot/is_user_subscribed?public_key={tu_public_key}&rut=12345678-9Respuesta:
{
"is_subscribed": true,
"is_free_trial": false
}Lógica que aplica Skip:
- Plan activo (sin
ended_at) →is_subscribed=true, is_free_trial=false. - Sin plan activo, menos de 2 boletas enviadas →
is_subscribed=true, is_free_trial=true. - Sin plan activo, 2+ boletas →
is_subscribed=false, is_free_trial=false.
Verificación de conversión de lead (partners de referidos)
Si refieres pacientes a Skip y necesitas confirmar que efectivamente empezaron a usar el producto (no solo se registraron):
GET /api/spot/user/{user_id}/check-if-successful-leadRespuesta:
{
"is_successful_lead": true,
"message": "El usuario envió al menos un reembolso."
}"Lead exitoso" significa que el usuario envió al menos una boleta — i.e., cruzó de registrado a activo.
Por qué el widget AAPD hace un POST /payment temprano
Si embebes Spot dentro de un flujo AAPD (con order_token seteado), notarás que el widget llama POST /orders/{order_hash}/payment antes de la pantalla de captura final. Es intencional: esa llamada también funciona como probe de readiness además de creación del pago.
Si vuelve un 400 con processor_customer_identity_not_validated o processor_payment_method_not_found, el widget interpreta la respuesta como señal de control de flujo y renderiza la pantalla apropiada (validación de identidad o setup de pago). Un 400 de esa llamada temprana no indica integración rota. No tienes que gestionarlo.