Tester la validité d'un numéro de carte de crédit

Soyez le premier à donner votre avis sur cette source.

Snippet vu 90 248 fois - Téléchargée 35 fois

Contenu du snippet

Lors de vos transactions si votre client doit donner son numéro de crédit il faut bien pouvoir vérifier si il est valide un minimum... C'est pourquoi voici une fonction qui utilise la clé de Luhn (pour les connaisseurs).

Pour plus d'infos sur la clé de Luhn allez voir cette URL:
http://parodie.com/monetique/verifcle.htm

Source / Exemple :


Function CheckNCB(wNCB)
    Dim Total
    Dim ThisN
    
    Dim I
    For I = 1 To Len(wNCB)
        ThisN = Mid(wNCB, I, 1)
    
        If I / 2 = Int(I / 2) Then
            Total = Total + ThisN
            
            
        Else
            
            If ThisN * 2 > 9 Then
                Total = Total + (ThisN * 2 - 9)
            Else
                Total = Total + ThisN * 2
            End If
        End If
    
    Next I
    
    If Total / 10 = Int(Total / 10) Then
        CheckNCB=1
    Else
        CheckNCB=0
    End If

End Function

Conclusion :


C'est aussi cours que ca!
C'est un algorythme super simple!
Cette fonction ne vérifie que la validité du numéro mais ne vérifie pas si le numéro est bien attribuer à quelqu'un ;)

A#
vBt0m.

PS: ca renvoie 1 si le num est correct sinon 0

A voir également

Ajouter un commentaire

Commentaires

Romaric120
Messages postés
2
Date d'inscription
dimanche 8 octobre 2006
Statut
Membre
Dernière intervention
8 octobre 2006
-
ou peut t'on verifie les numero de carte de credit sur se site et
coment calcul t'on les numero de carte de credit .
boogna
Messages postés
1
Date d'inscription
vendredi 30 juin 2006
Statut
Membre
Dernière intervention
29 avril 2007
-
Bonjour et merci pour ce code.

Il fonctionne bien pour les n° de CB et tous le numéros qui ont un nombre pair de chiffres (CB = 16 chiffres, n°SIRET=14 chiffres, etc...)

ATTENTION : il y a un bug pour les numéros qui ont un nombre impair de chiffres (exemple : N°SIREN=9 chiffres).

Je propose de remplacer la ligne n°9 par :
If (I + Len(Numero)) / 2 = Int((I + Len(Numero)) / 2) Then

On teste en même temps la parité du I de la boucle et celle de la longueur du N°.

Qu'en pensez-vous ?

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.