2011-10-22 46 views
18

Referencia: Luhn Algorithm¿Funciona el algoritmo de Luhn para todas las tarjetas de crédito convencionales? (Discover, Visa, Mastercard, Amex)

El Luhn algoritmo es una gran manera de verificar rápidamente que el usuario escribió su CC# correctamente.

Sin embargo, me preocupa que pueda haber un subconjunto de tarjetas de crédito convencionales que no utilicen números compatibles con Luhn-Algorithm.

Tengo registro en su lugar en nuestra aplicación para detectar un patrón en todos los rechazos del algoritmo de Luhn, pero prefiero saberlo definitivamente.

Respuesta

11

Casi.

China UnionPay y un tipo de tarjeta Diners Club (enRoute) no utilizan la validación de Luhn. (LazyOne’s answer es incorrecto sobre Diners Club.)

Casi todos los demás lo hacen.

Citando Wikipedia's 'Bank card' page:

no validan en absoluto:

  • Diners Club enRoute
  • China UnionPay

Validar con Luhn 2:

  • Americana mi xpress
  • Bankcard
  • American Express Diners Club Carte Blanche
  • Diners Club International
  • Diners Club Estados Unidos & Canadá
  • Discover Card
  • InstaPayment
  • JCB
  • láser
  • Maestro
  • Dankort
  • MasterCard
  • Solo
  • Interruptor
  • Visa
  • Visa Electron
+1

La frase clave de la pregunta inicial son "cartas principales" ... el subconjunto impar de China Unionpay y Diners Club enRoute parece estar fuera de la "corriente principal" y por lo tanto, LUHN validará "tarjetas convencionales"/ –

+0

Sí, y esas son dos tarjetas de crédito muy comunes, ciertamente no en los Estados Unidos. Gracias por tu contribución; por favor ten un buen día. –

+0

La página Wiki ha cambiado desde su respuesta. Parece que UnionPay también usa el algoritmo Luhn para validar números de tarjeta. No tengo otra fuente que el artículo de Wikipedia, donde esto se cambió en marzo de 2015. – reSPAWNed

5

- que funciona para todos los tipos de tarjetas de comunicación.

Tengo una clase de PHP personalizada para manejar los datos de la tarjeta que se compiló desde varios "validar el número de tarjeta" y funciones similares desde algunos lenguajes de programación + información de Wikipedia & algunos sistemas de procesamiento de pagos. Se valida correctamente los números de tarjetas de prueba (cada sistema de pago tiene pocas de tales números) para estos tipos de tarjetas:

  • VISA de débito/crédito
  • VISA Electron
  • VISA Delta
  • MasterCard
  • AMEX
  • Maestro
  • Interruptor
  • Solo
  • Diners Club
  • Descubrir
  • JCB
+2

Esto no es correcto. Diners Club enRoute no usa Luhn. –

3

El cheque LUN funciona en la mayoría de las tarjetas de crédito. Es un sistema de dígito de control del módulo 10 para garantizar que el número de tarjeta se haya leído/grabado con precisión (banda magnética, terminal virtual o entrada manual en los viejos tiempos de la impresora de tarjetas manual).

En los días de ingreso manual de datos, estos sistemas de verificación se utilizaban para garantizar que las claves como el sistema de numeración de la libreta de UPS se ingresaran con precisión (dígito de control del módulo 7).

Incluso se usa en sistemas de códigos de barra como el código 128 que necesita un módulo de 103 dígitos agregado a la cadena de datos codificados para verificar que el código se haya leído correctamente.

+0

Si las otras dos respuestas coinciden en que no funciona para todas las tarjetas, es probable que deba cambiar la primera. –

Cuestiones relacionadas