Contrôle de la validité d’une carte de crédit

By | December 9, 2005

Pour un cours de java, j’ai du programmer un analyseur de carte de crédit, le plus compliqué est de vérifier si les numéros correspondent. Comme il fallait que je me detende un peu en le faisant, j’en ai fait une copie en ActionScript.
Je donne ici qu’une petite partie qui correspond à l’analyse du numéro de la carte pour savoir si le numéro est correct. L’algorithme est assez simple : Les numéros en position impaire sont multipliés par 2, si le total vaut plus que 9 alors on soustrait 9. Pour les numéros en position paire, il suffit de les multiplier par 2. Si je peux diviser la somme des résultats paire et impaire par 10 alors le numéro est bon :

var numCarteEntree:String = "4928335378946323"; // entree votre numero de carte de crédit
var longueurChaine = numCarteEntree.length ;
var numAtraite:Array = new Array (  ) ;
var chiffrePair:Number = 0; // somme des pairs
var chiffreImpair:Number = 0; //somme des impair <9
var chiffreTotal:Number = 0;
for  ( y=0; y<longueurChaine; y++ )   {
    //X %2 = 1 si impaire,  0 si paire
    trace ( y+" =y : "+y%2 ) ;
    //mettre dans le tableau
    numAtraite[y] = Number ( numCarteEntree.charAt ( y )  ) ;
    //verifier si le nombre est pair ou impair
    //impair
    if (  ( y+1 ) %2 =="1" )  {
        //si le chiffre est ¬à une position impaire,  je le multiplie par 2 mais si il est sup¬érieur ¬à 9 je lui soustrait 9. Ensuite je fais la somme de tous les résultats
        var chiffreImpairATraite:Number = 0;
        //je multiplie par 2
        chiffreImpairATraite += Number ( numCarteEntree.charAt ( y )  ) *2;
        //si supérieur à 9 ,  -9.
        if ( chiffreImpairATraite>9 )  {
            chiffreImpairATraite -=9;
         }
        chiffreImpair += chiffreImpairATraite;
        trace ( "chiffreImpair ="+chiffreImpair ) ;
        
     }
    //pair
    if (  ( y+1 ) %2 =="0" )  {
        //si le chiffre est ¬à une position pair je l'additione ¬à chiffrePair.
        chiffrePair +=Number ( numCarteEntree.charAt ( y )  ) ;
     }
// je fais la somme des chiffres impairs et pairs et si %10 = 0 alors c'est bon.
 }
chiffreTotal = chiffrePair + chiffreImpair;
if (  ( chiffreTotal % 10 )  == 0 )  {
    trace ( "c'est bon" ) ;
 }
else {
    trace ( "pas bon" ) ;
 }

Pendant que j’y suis voilà la méthode pour verifier que le numero de la carte correspond à une “Visa” ou à une “MasterCard”. Là aussi l’algorithme est tout simple : si le numéro commence par 4 alors c’est une visa. Si le numéro commence par 51,52,53,54,55 alors c’est une mastercard :

var resultat:String; // visa ou master ou fausse
var numCarteEntree:String = "5101970004963592";
var checkVisa:Number = Number ( numCarteEntree.charAt ( 0 )  ) ;
var checkMaster:Number = number ( numCarteEntree.slice ( 0, 2 )  ) ;
typeCarte = function (  )  {
if  (  ( numCarteEntree.charAt ( 0 )  )  == 4 )  {
    resultat = "Visa";
 }
if  (  ( numCarteEntree.charAt ( 0 )  ) == 5 )  {
    switch ( checkMaster )  {
        case 51 : resultat = "Master"; break;
        case 52 : resultat = "Master"; break;
        case 53 : resultat = "Master"; break;
        case 54 : resultat = "Master"; break;
        case 55 : resultat = "Master"; break;
        default : resultat = "Fausse"; break;
     }
 }
else {
    resultat = "Fausse";
 }
trace ( "resultat :"+resultat ) ;
 }
//fonction type de carte.
typeCarte (  ) ;

Voilà, avec ça on peut facilement validé une carte de crédit. Il suffit aussi de comparer si la date est à jour. Evidement cette méthode n’est pas l’unique securité des cartes de crédit, dommage !

 
0 Kudos
Don't
move!

One thought on “Contrôle de la validité d’une carte de crédit

  1. Pingback: Metah Blog

Thoughts?