2009-09-22 11 views

Répondre

0

- Edit:

Enfait, je vais un peu en désaccord avec moi-même et d'accord avec Cletus. Validez autant que vous le pouvez (sans entrer dans les détails des types spécifiques de cartes de crédit [IMHO]) avant de l'envoyer. Et il va de soi (espérons-le), que cette validation devrait se faire en JavaScript, pour le rendre rapide, puis sur le serveur, pour revérifier (et pour les handicapés JavaScript).

- Réponse précédente:

Ne vous embêtez pas; Laissez simplement le fournisseur vérifier quand vous essayez réellement le paiement. Aucune raison légitime pour essayer de le vérifier vous-même. Vous pouvez cependant utiliser this, si vous en avez vraiment envie.

+6

Pour être en désaccord plus. Les passerelles de paiement prennent du temps. Vous devriez faire tout son possible pour vous assurer que c'est valide avant d'essayer de l'utiliser. – cletus

+1

cletus: Faites ensuite une vérification rapide en utilisant le système Luhn, et assurez-vous évidemment que toutes les données requises vous sont envoyées avant de l'envoyer. –

1

Je pense que vous cherchez le Luhn Algorithm. C'est une formule de contrôle simple utilisée pour valider une variété de numéros d'identification.

0

Cela dépend de la précision que vous souhaitez obtenir pour votre pré-validation. Pour valider tout ce que vous pouvez, vous devez calculer le dernier chiffre de la carte et le comparer à ce qui est entré, ce qu'un RegEx ne peut pas faire.

Pour l'algorithme et d'autres détails, voir this link, qui fournit également une liste de préfixes de nombres communs que vous pourriez valider.

13

Voir ce lien avec Finding or Verifying Credit Card Numbers Réguliers Expressions

  • Visa:^4 [0-9] {12} (: [0-9] {3})? $ Tous les numéros de carte Visa commencent par un 4. Les nouvelles cartes ont 16 chiffres. Les anciennes cartes ont 13.
  • MasterCard:^5 [1-5] [0-9] {14} $ Tous les numéros MasterCard commencent par les numéros 51 à 55. Tous ont 16 chiffres. American Express:^3 [47] [0-9] {13} $ Les numéros de cartes American Express commencent par 34 ou 37 et comportent 15 chiffres.
  • Diners Club:^3 (?: 0 [0-5] | [68] [0-9]) [0-9] {11} $ Les numéros Diners Club commencent par 300 à 305, 36 ou 38. Tous ont 14 chiffres. Il y a des cartes Diners Club qui commencent par 5 et ont 16 chiffres. Il s'agit d'une joint-venture entre Diners Club et MasterCard, et devrait être traitée comme une carte MasterCard.
  • Découvrez:^6 (?: 011 | 5 [0-9] {2}) [0-9] {12} $ Les numéros de cartes Discover commencent par 6011 ou 65. Tous ont 16 chiffres. JCB:^(?: 2131 | 1800 | 35 \ d {3}) \ d {11} $ Les cartes JCB commençant par 2131 ou 1800 ont 15 chiffres. Les cartes JCB commençant par 35 ont 16 chiffres.

Au revoir.

+1

Les cartes Discover ont ajouté de nouvelles gammes, voici une regex mise à jour pour les cartes 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

que diriez-vous de China UNION Pay? –

Questions connexes