Verificación por SMS en el alta de usuarios: OTP sin agujeros
· 3 min de lectura
Un número de teléfono verificado vale oro: es recuperación de cuenta, segundo factor y filtro de bots, todo en uno. Verificarlo es aparentemente trivial —mandar un código y compararlo— y por eso casi todas las implementaciones caseras cometen los mismos tres errores. Los contamos, porque nuestra API existe para que no tengas que resolverlos tú.
Los tres errores clásicos
- Guardar el código en claro. El código acaba en la base de datos, en los logs o en el historial de mensajes del panel — y quien vea cualquiera de los tres puede verificar un teléfono ajeno. En nuestra plataforma el código no se almacena jamás en claro: solo su huella criptográfica, y el texto del SMS queda redactado en el historial.
- Códigos eternos. Sin caducidad ni límite de intentos, un código de 6 cifras se prueba por fuerza bruta. Los nuestros caducan y bloquean tras pocos intentos fallidos.
- Ignorar el fraude de tráfico. El SMS pumping —bots que piden miles de verificaciones hacia rangos con tarifas infladas— se paga de tu bolsillo. Límites por origen y control por destino, de serie.
Cómo se integra
Dos llamadas: verify/start con el número, verify/check con el código que
tecleó el usuario. Un código equivocado responde estado invalid — no un
error HTTP — para que tu formulario distinga «se equivocó» de «algo falló».
Idempotencia en el envío: si tu servidor reintenta, no se duplica el SMS ni el
cobro.
¿El usuario prefiere WhatsApp? El mismo flujo funciona por los dos canales, y tu código decide el reintento por el otro con una llamada más.
El detalle que casi nadie mira: el acuse
Un OTP que «se envió» pero no llegó es un usuario perdido en el peor momento: el registro. En España el acuse confirma entrega en el terminal; en otros destinos solo que la red lo aceptó — lo tenemos medido país por país y te avisamos antes de enviar, no después de facturar.
Documentación de la API · Precio por país · Modo prueba al crear cuenta, sin tarjeta.
El coste de hacerlo mal, en números que ya habrás visto
Un formulario de alta que pierde usuarios en el paso del código es dinero tirado en captación: cada clic que llegó hasta ahí ya se pagó. Las tres fugas típicas y su remedio:
«No me llega el código». A veces es cobertura; a menudo es un acuse que mintió. Reenvío visible tras unos segundos —con ventana mínima entre envíos para no quemar saldo— y reintento por el otro canal resuelven la mayoría.
«Lo escribí mal». Respuesta invalid clara y campo listo para reintentar,
sin recargar la página ni invalidar el código restante hasta agotar intentos.
«Me llegó tarde». La caducidad corta es seguridad, pero el usuario debe verla: un contador visible evita que teclee un código ya muerto.
Todo esto viene resuelto en la API: caducidad, intentos, ventanas de reenvío y estados que tu interfaz puede traducir a mensajes útiles.