Verification de la carte bancaire : algorothme de Luhn

Partagez votre expérience de PureBasic avec les autres utilisateurs.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Verification de la carte bancaire : algorothme de Luhn

Message par comtois »

ça ne sert à rien , j'ai juste adapté le code pour purebasic par curiosité.

Code : Tout sélectionner

; Verification de la carte bancaire : algorothme de Luhn
OpenConsole()
ok=#True
Print("Type carte , [1] = Visa , [2] = Mastercard =>")
Type = Val(Input())
PrintN("")
Print("Numero de la carte =>")
NumeroCarte.s=Input()

; test mastercard
If Type=2 
  ; test  de longueur
  If Len(NumeroCarte)<>16 
    PrintN("Votre numero de carte n'est pas valable")
    ok=#False
  EndIf
  ; test le préfixe
  If ok=#True 
    prefix=Val(Mid(NumeroCarte,1,2))
    If prefix<>51 And prefix<>52 And prefix<>53 And prefix<>54 And prefix<>55 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
EndIf ; fin test master card
; test visa
If Type=1  
  ; test la longueur
  If Len(NumeroCarte)>16 Or Len(NumeroCarte)<13 
    PrintN("Votre numero de carte n'est pas valable")
    ok=#False
  EndIf
  ; test le préfixe
  If ok=#True 
    prefix=Val(Mid(NumeroCarte,1,1))
    If prefix<>4 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
EndIf ; fin test visa
            
  ;Algorithme de Luhn
  
If Val(NumeroCarte)  ; si c'est bien un numéro
  If ok=#True  ; si les tests précédents ont été effectués avec succès
    ;debut de l'algo
    totalcarte=0
    increment=0
    For i=Len(NumeroCarte) To -1
      numero=Int(Mid(NumeroCarte,i,1))
      increment+1
      If increment % 2 <> 0  ; nombre impaire
        totalcarte + numero ; ajout normal dans la somme 
      Else ; nombre impaire
        numero=numero*2
        If numero>=10 
          totalcarte=totalcarte+1+numero-10
        Else
          totalcarte=totalcarte+numero
        EndIf
      EndIf
    Next
    ; division du total
    If totalcarte % 10 <>0 
      PrintN("Votre numero de carte n'est pas valable")
      ok=#False
    EndIf
  EndIf
Else
  PrintN("Votre numero de carte n'est pas valable")
  ok=#False
EndIf
; Fin de vérification carte bancaire si ok=true à ce niveau la carte est ok
If ok 
  PrintN("Votre numero de carte est valable")
EndIf
Input()
CloseConsole()