yo construyo Toolz.dev, y antes de eso pasé años enviando complementos de WordPress y API de Laravel, varias de las cuales tenían que aceptar pagos. El primer formulario de pago que escribí envió todos los números de tarjeta mal escritos directamente a la pasarela de pago y esperé a que rebotara. Funcionó técnicamente, pero fue lento y se quemó a través de solicitudes de pasarela en números que nunca podrían haber sido válidos en primer lugar. La solución fue vergonzosamente pequeña: ejecute la suma de verificación de Luhn en el navegador antes de enviarla. Ese cambio captó la mayoría de los errores tipográficos instantáneamente y detuvo un flujo de llamadas API inútiles. Esta guía trata sobre esa verificación, las reglas de prefijo que se encuentran al lado y el Validador de tarjetas de crédito Construí para que nunca tengas que volver a implementar ninguno de los dos de memoria.
TL;Dr: Un validador de tarjetas de crédito confirma que un número es estructuralmente correcto, no que pertenezca a una cuenta real. Ejecuta dos pruebas independientes: la suma de verificación de Luhn de ISO/IEC 7812-1, que detecta casi todos los errores tipográficos de un solo dígito y la transposición adyacente, y una verificación de longitud y prefijo con cada red y #39; rangos de emisores publicados. Un número puede pasar uno y fallar el otro, por lo que los dos resultados se informan por separado. Se ejecuta completamente en su navegador, por lo que nunca se carga ningún número de tarjeta y nunca puede indicarle si una tarjeta tiene dinero. Sólo el emisor lo sabe.
¿Qué significa que un número de tarjeta sea válido?
Un número de tarjeta de pago, formalmente un número de cuenta principal o PAN, no es una cadena aleatoria de dígitos. Su estructura está definida por ISO/IEC 7812. Los primeros seis a ocho dígitos son el Número de identificación del emisor, o IIN, que solía denominarse Número de identificación bancaria (BIN). Esos dígitos identifican la red y el banco emisor. Los dígitos posteriores hasta el penúltimo son el identificador de cuenta individual, y el último dígito es un dígito de control calculado con el algoritmo de Luhn.
Entonces "valid" tiene dos significados separados y ayuda a mantenerlos separados. La primera es que el número obedece a la suma de verificación de Luhn, lo que significa que el dígito de control es consistente con el resto del número. La segunda es que el número tiene la longitud y el prefijo correctos para una red de tarjetas real. Un número puede satisfacer una condición y no la otra. 4111 1111 1111 1112 tiene un prefijo Visa y una longitud Visa pero falla Luhn. Una cadena aleatoria de dieciséis dígitos que termina en el dígito de control derecho pasa por Luhn pero puede comenzar con un prefijo que no posee la red. Un buen validador le indica cuál de los dos falló, porque la solución es diferente en cada caso.
Lo que ninguna de las cheques puede hacer es decirle que la tarjeta es real. La validez estructural se refiere a la forma del número, no al estado de la cuenta detrás de ella. Es posible que la cuenta no exista, que esté congelada, que esté por encima de su límite o que haya estado cerrada hace años. El único sistema que conoce es el banco emisor, y responde exactamente una vez, durante una solicitud de autorización en una transacción en vivo. Todo lo que hace un validador del lado del navegador es un prefiltro económico que se ejecuta antes de llegar a ese punto.
¿cómo funciona el algoritmo de Luhn?
El algoritmo Luhn, también llamado algoritmo mod-10, fue patentado por Hans Peter Luhn en IBM en 1960 y ahora es de dominio público. Es una suma de comprobación, lo que significa que su único propósito es detectar errores accidentales, no proporcionar ninguna seguridad. Funciona así. Comenzando desde el dígito más a la derecha y moviéndose hacia la izquierda, se duplica cada segundo dígito. Si duplicar produce un número mayor que nueve, le restas nueve (lo cual es lo mismo que sumar sus dos dígitos). Luego se suman todos los dígitos, los duplicados y los intactos. Si el total es divisible por diez, el número pasa.
Aquí está el chequeo 4111 1111 1111 1111, trabajando de derecha a izquierda. El dígito más a la derecha es la posición uno y no se duplica. Duplicar cada segundo dígito da un conjunto de unos y dos, los dos provienen de las posiciones duplicadas. Súmelos todos y el total cae en un múltiplo de diez, por lo que el número pasa. Cambie cualquier dígito y la suma casi siempre dejará de ser múltiplo de diez, que es exactamente lo que hace que el cheque sea útil.
El valor de Luhn está en lo que capta. Detecta cada error de un solo dígito, lo que significa que cualquier dígito escrito mal. También capta casi todas las transposiciones de dos dígitos adyacentes, el clásico " Escribí 21 en lugar de 12" error, con una excepción conocida: no detecta un intercambio de 09 y 90, porque ambos se asignan a la misma suma ponderada. Ese es un verdadero punto ciego, pero es raro, y es la razón por la que Luhn es una suma de verificación en lugar de una garantía criptográfica. Para la validación de formularios es más que suficiente y es por eso que se ubica detrás de los campos de tarjetas de prácticamente todos los pagos en Internet.
¿Cómo se detecta la red de tarjetas?
La red se lee a partir de los dígitos principales, el IIN. Cada red posee rangos de prefijos específicos y la mayoría también restringe la longitud total. El validador coincide primero con el prefijo más largo y específico, porque algunos rangos se superponen. Aquí están los rangos que verifica:
| hacer redde | Comienza con | Longitudes válidas | Código de seguridad |
|---|---|---|---|
| Visa | 4 | 13, 16, 19 | 3 |
| Tarjeta maestra | 51-55, 2221-2720 | 16 | 3 |
| Expreso americano | 34, 37 | 15 | 4 |
| Descubrir | 6011, 65, 644-649, 622126-622925 | 16, 19 | 3 |
| Club de comensales | 300-305, 309, 36, 38-39 | 14, 16, 19 | 3 |
| JCB | 3528-3589 | 16-19 | 3 |
| Pago sindical | 62 | 16-19 | 3 |
| Maestro | 50, 56-69 (selecționat) | 12-19 | 3 |
Las superposiciones son la parte interesante, y equivocarse es cómo fallan los detectores ingenuos. Mastercard añadió el 2221-2720 rango en 2017, por lo que un detector escrito antes informa que esas tarjetas son desconocidas. Discover posee una porción estrecha del 62 espacio, 622126 hasta 622925, mientras que UnionPay posee el resto 62, entonces el orden en el que los pruebas decide si a 6221 la tarjeta se lee como Discover o UnionPay. El validador prueba la ventana Discover específica antes del prefijo amplio UnionPay para que ambos aterricen correctamente. American Express es el que activa el formato del código, porque utiliza quince dígitos agrupados 4-6-5 en lugar de los cuatro grupos habituales de cuatro, y utiliza un código de seguridad de cuatro dígitos (el CID impreso en el frente) en lugar del CVV de tres dígitos en la parte posterior.
Cómo utilizar el validador de tarjetas de crédito
La herramienta es deliberadamente sencilla. Pegas un número y lees el resultado. No hay ningún botón de envío ni nada que configurar.
Paso 1: Ingrese el número
Escriba o pegue el número de tarjeta en el campo. Los espacios y guiones se ignoran, por lo que 4111-1111-1111-1111, 4111 1111 1111 1111y 4111111111111111 todos validan de manera idéntica. Esto es importante porque la entrada real llega en todos los formatos: copiada de una hoja de cálculo, leída de una tarjeta o extraída de un dispositivo de prueba.
Paso 2: lea el veredicto
La parte superior del resultado le indica claramente si el número es válido y, si no, menciona el motivo. A continuación, las dos comprobaciones se muestran por separado: si se pasó la suma de comprobación de Luhn y si la longitud coincide con la red detectada. Verlos separados es el punto. Un número que pasa por Luhn pero falla en longitud casi siempre significa que se eliminó o agregó un dígito, mientras que un número que falla en Luhn pero tiene la longitud correcta generalmente significa que un dígito simplemente está mal.
Paso 3: verifique la red detectada
La herramienta muestra la red que identificó a partir del prefijo, las longitudes que permite la red y cuánto tiempo debe tener su código de seguridad. Esto es útil por sí solo cuando está creando un formulario y desea mostrar el logotipo de la tarjeta correcto, o cuando necesita saber si espera un CVV de tres o cuatro dígitos.
Paso 4: Copie el número formateado o enmascarado
Puede copiar el número agrupado de la forma en que lo imprime su red o copiar una versión enmascarada que oculta todos los dígitos excepto los últimos cuatro. El formulario enmascarado es el que desea en registros, capturas de pantalla y tickets de soporte, porque almacenar o mostrar un PAN completo es exactamente el tipo de cosas que meten a las personas en problemas con el cumplimiento.
¿Dónde encaja la validación y dónde se detiene?
El encuadre honesto es que un validador es un filtro, no una puerta. Pertenece al frente de un proceso para rechazar basura obvia a bajo precio, y nunca se debe confiar en él como prueba de nada posterior. En un formulario de pago, ejecutar el lado del cliente de Luhn le permite marcar un error tipográfico en el momento en que el usuario termina de escribir, antes de pagar, lo cual es una mejor experiencia y ahorra un viaje de ida y vuelta condenado a la puerta de enlace. En una canalización de datos, la validación de campos en forma de tarjeta detecta filas corruptas antes de que lleguen a un sistema que las ahogará. En los conjuntos de pruebas, se necesitan números que pasen la validación para que el formulario se comporte como lo hará en producción, que es para lo que sirven los números de prueba publicados.
Lo que no hace es autorizar, y vale la pena ser directo. Un número válido no es una tarjeta de trabajo. La herramienta no puede verificar un saldo, no puede confirmar que la cuenta exista y no tiene conexión con ningún banco. Tampoco puede ni debe generar números vinculados a cuentas reales. Los números de muestra que ofrece son los valores de prueba estándar publicados por los proveedores de pagos, que son válidos para Luhn y pasan comprobaciones de red precisamente para que los desarrolladores puedan ejercer sus formularios, pero que no se asignan a nada cobrable. Si está creando algo que afecte a los pagos reales, la validación real de si se puede cargar una tarjeta ocurre en el lado del servidor a través de su procesador de pagos, y los datos de la tarjeta en sí deben tokenizarse para que sus propios sistemas nunca almacenen un PAN sin formato. La validación del lado del cliente es la puerta principal educada, no la bóveda.
¿Cómo se compara esto con la validación en el servidor?
Ambos tienen un lugar y responden diferentes preguntas. La validación del lado del cliente con Luhn y las comprobaciones de prefijos es instantánea y privada, brinda comentarios al usuario antes de enviarlos y no le cuesta nada. Su límite es que solo conoce la estructura. La validación del lado del servidor a través de un procesador de pagos es lo único que puede confirmar que una tarjeta es real y cobrable, pero cuesta una solicitud de red, puede costar dinero por intento de autorización y ocurre después de que el usuario se ha comprometido a enviarla. El diseño sensato utiliza ambos: el navegador detecta los errores tipográficos y de forma de forma de forma gratuita, y el servidor realiza la verificación que importa cuando el usuario paga. Saltarse la verificación del cliente hace que el formulario parezca lento; Saltarse la verificación del servidor significa que nunca validó nada. Si está montando un kit más amplio para este tipo de trabajo, el Herramientas de productividad para desarrolladores roundup cubre las otras empresas de servicios públicos que tienden a vivir junto a él.
Herramientas relacionadas y lecturas adicionales
Un validador de tarjetas rara vez viaja solo. Cuando endurece un formulario o una canalización de datos, generalmente también genera identificadores, valores hash y verifica otros tipos de entrada. El generador hash es lo que buscas cuando necesitas tomar una huella digital de un valor en lugar de validar su forma, y el comprobador de fuerza de contraseña aplica lo mismo "médalo en el navegador, nunca lo envíe a ningún lado" principio a las credenciales. Del lado de la red, el Calculadora de subred IP es la herramienta complementaria para cualquiera que construya la infraestructura en la que se ejecuta una caja.
Para el contexto más amplio, el Privacidad de datos y herramientas en línea la guía explica por qué es importante realizar controles confidenciales del lado del cliente y el Guía de herramientas de codificación coloca el validador en el contexto del resto del kit diario de desarrollador '. Todo en Toolz.dev se ejecuta en su navegador, que es la razón por la que es seguro pegar un número de tarjeta en él: nunca sale de su dispositivo.
Preguntas frecuentes
¿qué comprueba el algoritmo de Luhn?
El algoritmo de Luhn es una suma de comprobación mod-10 que verifica que un número no haya sido mal escrito. Duplica cada segundo dígito desde la derecha, resta nueve de cualquier resultado superior a nueve, suma todos los dígitos y confirma que el total es divisible por diez. Capta cada error de un solo dígito y casi cada intercambio de dos dígitos adyacentes, pero es una suma de verificación, no una característica de seguridad, y no puede demostrar que una tarjeta sea real.
¿Un número válido significa que la tarjeta funciona?
No. Un número válido solo significa que los dígitos son estructuralmente correctos, por lo que la suma de verificación pasa y la longitud coincide con la red. Si la cuenta existe, tiene saldo o sigue activa sólo puede ser confirmada por el emisor de la tarjeta durante una autorización real. La validez estructural es un prefiltro, no una prueba de una tarjeta utilizable.
¿Cómo se detecta la marca de la tarjeta a partir del número?
La marca se lee desde los primeros dígitos, el Número de Identificación del Emisor. Visa comienza con 4, Mastercard con 51-55 o 2221-2720, American Express con 34 o 37, etc. Cada red también permite solo ciertas longitudes totales, por lo que el validador verifica el prefijo y la longitud juntos e informa la red que coincide.
¿Es seguro ingresar un número de tarjeta en esta herramienta?
Sí. El número se procesa íntegramente en su navegador y nunca se carga, registra ni transmite. Puede confirmarlo desconectándose de Internet, porque el validador sigue funcionando sin conexión. Dicho esto, aún debe evitar pegar un número de tarjeta real en cualquier lugar que no necesite y preferir los números de prueba publicados para su desarrollo.
¿por qué mi tarjeta real pasa por Luhn pero no pasa la verificación de longitud?
Eso generalmente significa que se eliminó o agregó un dígito mientras se escribe. La suma de verificación de Luhn puede pasar por coincidencia en un número de longitud incorrecta, por lo que la herramienta verifica la longitud de forma independiente con la red detectada. Vuelva a ingresar el número completo y ambas verificaciones deben pasar juntas.
¿Cuáles son los números de tarjetas de prueba y por qué existen?
Números de tarjetas de prueba como 4111 1111 1111 1111 son publicados por proveedores de pagos para que los desarrolladores puedan realizar formularios de pago. Son válidos para Luhn y pasan cheques de red para que el formulario se comporte exactamente como lo hará en producción, pero no se asignan a ninguna cuenta real y nunca se pueden cobrar. Son lo correcto para usar en cualquier lugar donde de otro modo te verías tentado a escribir una tarjeta real.
¿cuál es la diferencia entre el CVV y el número de tarjeta?
El número de tarjeta es el número de cuenta principal largo que identifica la cuenta. El CVV, CVC o CID es el código de seguridad corto, de tres dígitos para la mayoría de las redes y de cuatro para American Express, impreso por separado del número. Esta herramienta valida únicamente el número de tarjeta; no verifica el código de seguridad, que es verificado por el emisor durante una transacción.
¿puede este validador generar tarjetas de crédito que funcionen?
No. Solo verifica los números que ingresa y no tiene forma de producir un número vinculado a una cuenta activa. Los números de muestra que ofrece son los valores de prueba estándar publicados que no llegan a ninguna cuenta real. Generar números para una tarjeta real no es algo que un validador estructural pueda hacer, y no es algo que intente esta herramienta.



