2009-09-22 35 views

Respuesta

0

- Editar:

De hecho, voy a discrepar un poco de mí mismo y de acuerdo con Cletus. Valide todo lo que pueda (sin entrar en detalles de tipos específicos de tarjetas de crédito [IMHO]) antes de enviarlo. Y no hace falta decir (con suerte), que esta validación debe hacerse en JavaScript, para hacerlo rápido, luego en el servidor, para verificar (y para las personas con JavaScript deshabilitado).

- Respuesta anterior:

No se moleste; simplemente deje que el proveedor lo verifique cuando realmente intente el pago. No hay razón legítima para intentar verificarlo usted mismo. Puede usar this, si realmente lo desea.

+6

No podría estar más en desacuerdo. Las pasarelas de pago toman tiempo. Debe hacer todo lo posible para asegurarse de que sea válido antes de intentar usarlo. – cletus

+1

cletus: Luego haga una verificación superficial usando el sistema Luhn, y obviamente asegúrese de que se le envíen todos los datos requeridos antes de enviarlos. –

1

Creo que está buscando Luhn Algorithm. Es una fórmula de suma de comprobación simple utilizada para validar una variedad de números de identificación.

0

Eso depende de la precisión con la que desee que sea su validación previa. Para validar todo lo que pueda, debe calcular cuál debe ser el último dígito de la tarjeta y comparar con lo que se ingresa, lo que un RegEx no puede hacer.

Para el algoritmo y otros detalles, vea this link, que también proporciona una lista de prefijos de números comunes contra los que puede validar.

13

Vea este enlace Finding or Verifying Credit Card Numbers de clientes habituales expresiones

  • Visa:^4 [0-9] {12} (?: [0-9] {3})? $ Todos los números de tarjetas Visa empezar con una 4. Las nuevas tarjetas tienen 16 dígitos. Las cartas antiguas tienen 13.
  • MasterCard:^5 [1-5] [0-9] {14} $ Todos los números de MasterCard comienzan con los números 51 a 55. Todos tienen 16 dígitos.
  • American Express:^3 [47] [0-9] {13} $ Los números de tarjeta American Express comienzan con 34 o 37 y tienen 15 dígitos.
  • Diners Club:^3 (?: 0 [0-5] | [68] [0-9]) [0-9] {11} $ Los números de tarjetas de Diners Club comienzan con 300 a través de 305, 36 o 38. Todos tienen 14 dígitos. Hay tarjetas Diners Club que comienzan con 5 y tienen 16 dígitos. Se trata de una empresa conjunta entre Diners Club y MasterCard, y debe procesarse como una MasterCard.
  • Descubre:^6 (?: 011 | 5 [0-9] {2}) [0-9] {12} $ Descubre los números de tarjeta que comienzan con 6011 o 65. Todos tienen 16 dígitos.
  • JCB:^(?: 2131 | 1800 | 35 \ d {3}) \ d {11} $ Las tarjetas JCB que comienzan con 2131 o 1800 tienen 15 dígitos. Las tarjetas JCB que comienzan con 35 tienen 16 dígitos.

Adiós.

+1

Las tarjetas Discover han agregado algunos rangos nuevos, aquí hay una expresión regular actualizada para las tarjetas Discover '^ 6 (?: 0110 [0-9] | 011 [2-4] [0-9] | 01174 | 0117 [7-9 ] | 0118 [6-9] | 0119 [0-9] | 4 [4-9] [0-9] {3} | 5 [0-9] {4}) [0-9] {10} $ ' – realgt

+0

¿Qué tal China UNion Pay? –

Cuestiones relacionadas