$verifcard() - vérificateur de carte bancaire

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

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.