Conoce tu tarjeta de credito

Hace unos días en un grupo de desarrolladores locales, un miembro estaba buscando una solución a como validar si una tarjeta de crédito es valida, conocer el tipo de tarjeta de crédito, etc.

El “PAN” se compone de una longitud de 14 a 16 dígitos numéricos, los primeros 6 dígitos corresponden al “IIN” que pertenece al banco emisor (anteriormente se conocían como BIN, así que si ven este termino pueden imaginarse que se trata del IIN) y estos 6 dígitos están bajo un estándar internacional y estricto llamado ISO/IEC 7812y estos dígitos normalmente son utilizados para conocer el tipo de tarjeta que tienes.

Por desgracia la base de datos real “ISO/IEC 7812” no esta disponible para el publico pero hay listas que no son completamente oficiales, hay que son de pago y gratuitas (en Wikipedia creo que hay 2).

De todos modos, hay maneras de conocer el tipo de tarjeta que tienes:

Visa: siempre empiezan por el numero 4.
Mastercard: normalmente empiezan con 2 números que van desde el 51 al 55 (pero esto solo son las tarjetas mastercard, hay otras tarjetas emitidas que no caen en ese rango).
American Express (AMEX): siempre empiezan con 2 números que van desde el 34 al 37.
Diners Club: estas empiezan desde 300 a 500, 36 a 38 (hay tarjetas que empiezan con un numero 5 y contienen 16 dígitos, estas son de empresas unidas entre diners y mastercard y normalmente son procesadas como mastercard).
Discover: siempre empiezan por 6011 o 65.
JBC: empiezan con 2131, 1800 o 35.

Importante

Los números de tarjeta de crédito varían en su longitud, poniendo un ejemplo, la VISA hace unos años emitía tarjetas de 13 y 16 dígitos, por lo tanto no se puede comprobar una tarjeta de crédito por la longitud del numero .

El numero de la tarjeta de crédito lo dividiremos en 4 secciones

Sección 1: El primer numero corresponde a el Major industry identifier (MII) que define la siguiente tabla:

1 - Corresponde a aerolineas.
2 - Corresponde a aerolineas y a instituciones financieras.
3 - Corresponse a viajes y entretenimeiento.
4 - Corresponse a Bancos y instituciones financieras.
5 - Corresponse a Bancos y instituciones financieras.
6 - Corresponse a Bancos y instituciones financieras.
7 - Corresponse a petroleos y otras asignaciones por parte del MII.
8 - Cuidado de la salud, telecomunicaciones y otras asignaciones por parte del MII.
Referencia: Wikipedia

Sección 2: Los primeros 6 dígitos corresponden al IIN y identifican cual institución financiera en que país emitió el numero de tarjeta.

Visa:             4xxxxx
Mastercard: 51xxxx - 55xxxx
Discover: 6011xx - 644xxx - 65xxxx
American Express: 34xxxx - 37xxxx

Sección 3: Desde el 7mo dígito del numero de la tarjeta hasta el final (a excepción del ultimo) pertenecen a la asignación del numero de cuenta de la persona , con estos números se pueden hacer un trillón de combinaciones.

Sección 4: El ultimo dígito se usa para validar si el numero de tarjeta de crédito esta usando el Algoritmo de Luhn (mayormente conocido como algoritmo de modulo 10, el mismo que “supuestamente” usa la JCE para la validación de los números de cédula del gobierno).

Definición: Algoritmo de Luhn

Este algoritmo es de dominio público y es ampliamente usado en la actualidad. Su especificación está contenida en la norma ISO/IEC 7812–1.1 Su propósito no es de ser una función hash criptográfica segura contra ataques maliciosos, sino que fue diseñada para protección contra errores accidentales. La gran mayoría de tarjetas de crédito y otros números de identificación usan este algoritmo como un método simple de distinguir números válidos a partir de una entrada de números al azar.

Como puedo validar una tarjeta de crédito para saber si es numero es valido?

Es muy fácil, vamos a tomar una tarjeta de crédito cualquiera de prueba:
Ej: 4417 1234 5678 9113
Empezamos desde el principio y obtenemos los números de dos en dos y lo multiplicamos por 2:
Ej: 4  4  1  7    1  2  3  4    5  6  7  8    9  1  1  3
x2 x2 x2 x2 x2 x2 x2 x2
----------------------------------------------------
8 2 2 6 10 14 18 2
Entonces por debajo de la tabla ponemos los numeros restantes de arriba que nos sobraron
Ej: 4  4  1  7    1  2  3  4    5  6  7  8    9  1  1  3
x2 x2 x2 x2 x2 x2 x2 x2
----------------------------------------------------
8 4 2 7 2 2 6 4 10 6 14 8 18 1 2 3
Esto nos daría la siguiente resultado:
Ej: 8+4+2+7 + 2+2+6+4 + 1+0+6+1+4+8 + 1+8+1+2+3 = 70
Nota: En el resultado de la multiplicación, si el numero es de 2 dígitos (14) entonces se sumarían ambos dígitos (1+4)
Si la suma final es divisible por 10 entonces el numero es valido, si no es divisible por 10 entonces el numero es falso o invalido, intentalo.

Esta imagen no me pertenece, la tome de https://blog.mint.com/

Referencias

  • Stripe (Sistema de autorización de pagos en linea)
  • Authorize.net (Sistema de autorización de pagos en linea)
  • Wikipedia
  • StackOverflow (por las imágenes)
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.