$verifcard() - vérificateur de carte bancaire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 43 712 fois - Téléchargée 26 fois

Contenu du snippet

petit code qui vérifie la validité du code d'une carte bancaire, a titre éducatif bien sur :)

Source / Exemple :


; ### VALIDATEUR DE CARTE BANCAIRES ( BombStrike )
;
; Ce code permet de valider une carte bancaire selon le type et la banque
;
; Utilisation:
;  $verifcard(<16chiffres>,<type>,[banque])
;
; Liste des types:
;  1. Visa
;  2. Mastercard
;  3. Discovery
;  4. Eurocard
;  5. American Express
;
; Liste des banques:
;  Visa:
;   1. La Poste
;   2. Credit Commercial
;   3. Credit Lyonnais
;   4. Societe Generale
;   5. BNP
;   6. Banque Populaire
;   7. Banque Sofinco
;   8. Caisse d'Epargne
;  Mastercard:
;   1. Finedis
;   2. Accord Finances
;   3. Credit Agricole
;
; Donc pour verifier une carte Visa à la banque populaire, il suffit de taper ca:
;  echo -a $verifcard(4975123457834562,1,6)
;
; Et voila, bonne chance :)

alias verifcard {
  ; si aucun parametre, si on l'appelle sous la forme /gencard alors on arrete tout ou si le numero de carte n'est pas valide
  if ($0 < 2 || !$isid || $len($1) != 16 || $1 !isnum) { return ERR_INVPARMS Paramètres manquants ou invalides }

  ; si on est chez visa, generation des 4 premiers chiffres suivant la banque
  if $2 == 1 {
    if ( $3 > 0 && $3 < 8 ) { var %a = 4,%b = 9,%c = 7,%d = $calc($3 - 1) }
    if $3 == 8 { var %a = 4,%b = 9,%c = 7,%d = 8 }
  }

  ; si on est chez mastercard, generation des 4 premiers chiffres suivant la banque
  if $2 == 2 {
    if $3 == 1 { var %a = 5,%b = 0,%c = 1,%d = 6 }
    if $3 == 2 { var %a = 5,%b = 0,%c = 3,%d = 2 }
    if $3 == 3 { var %a = 5,%b = 1,%c = 3,%d = 1 }
  }
  if ( $2 > 2 && $2 <= 5 ) { var %a = $mid($1,1,1),%b = $mid($1,2,1),%c = $mid($1,3,1),%d = $mid($1,4,1) }

  ; si on a choisi une mauvaise carte ou une mauvaise banque, %a est nul donc on arrete tout
  if !%a { halt }

  ; on verifie la validité des quatres premiers chiffres
  if ( $left($1,4) != $+(%a,%b,%c,%d) ) { return ERR_INV Carte Invalide }
  var %e = $mid($1,5,1),%f = $mid($1,6,1),%g = $mid($1,7,1),%h = $mid($1,8,1),%i = $mid($1,9,1),%j = $mid($1,10,1),%k = $mid($1,11,1),%l = $mid($1,12,1),%m = $mid($1,13,1),%n = $mid($1,14,1),%o = $mid($1,15,1),%p = $mid($1,16,1)

  ; algorithme de lhun
  var %aa = %a,%ca = %c,%ea = %e,%ga = %g,%ia = %i,%ka = %k,%ma = %m,%oa = %o
  inc %aa %aa | inc %ca %ca | inc %ea %ea | inc %ga %ga | inc %ia %ia | inc %ka %ka | inc %ma %ma | inc %oa %oa
  var %mpr = $+(%aa,%b,%ca,%d,%ea,%f,%ga,%h,%ia,%j,%ka,%l,%ma,%n,%oa,%p)
  var %r = 1
  var %sb = 0
  while ( %r <= $len(%mpr) ) {
    var %sb = $calc(%sb + $mid(%mpr,%r,1))
    inc %r
  }
  var %lu = $calc(10 - (%sb % 10))
  if %lu == 10 { var %lu = 0 }
  ; %lu est le 16eme chiffre soit le chiffre qui assure la validité de la carte

  ; si %lu != 0 alors la carte n'est pas valide
  if ( %lu != 0 ) { return ERR_INVLUHN Clé de lhun invalide }

  ; on si on atteint cette etape, c'est que la clé est valide
  return S_OK Carte valide
}

A voir également

Ajouter un commentaire

Commentaires

cs_SornDrixer
Messages postés
2087
Date d'inscription
jeudi 12 décembre 2002
Statut
Modérateur
Dernière intervention
30 janvier 2011
2 -
Très bon emploi des algorithmes de vérification, mais je tiens juste à préciser que l'on écrit pas lhun mais Luhn.
Vla @+
arround
Messages postés
39
Date d'inscription
lundi 4 novembre 2002
Statut
Membre
Dernière intervention
22 septembre 2004
-
hehe BombStrike passe moi ton code de CB que je test :P
canard2Wc
Messages postés
13
Date d'inscription
dimanche 25 mai 2003
Statut
Membre
Dernière intervention
26 août 2003
-
lol
cs_thyb
Messages postés
217
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
22 mai 2004
-
c bien, j'aurai jamais penser a faire sa lol tres marrant
GFACTION
Messages postés
199
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 avril 2005
-
tres bien

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.