 Mirror

Yet Another Credit Card Validator (Views: 100)

 Problem/Question/Abstract:A routine to validate and identify Visa/MasterCard/Amex credit cards. Might come handy if you want to perform arbitrary card checking. Original code by Daniel J. Karnes (1990)Answer:{-------------------------------------------------  Credit card validator  Returns:   0  : Card is invalid or unknown   1  : Card is a valid AmEx   2  : Card is a valid Visa   3  : Card is a valid MasterCard-------------------------------------------------}function Vc(c: string): integer;var  card: string;  Vcard: array[0..21] of byte absolute card;  Xcard: integer;  Cstr: string;  y, x: integer;begin  Cstr := '';  fillchar(Vcard, 22, #0);  card := c;  for x := 1 to 20 do    if (Vcard[x] in [48..57]) then      Cstr := Cstr + chr(Vcard[x]);  card := '';  card := Cstr;  Xcard := 0;  if not odd(length(card)) then    for x := (length(card) - 1) downto 1 do    begin      if odd(x) then        y := ((Vcard[x] - 48) * 2)      else        y := (Vcard[x] - 48);      if (y >= 10) then        y := ((y - 10) + 1);      Xcard := (Xcard + y)    end  else    for x := (length(card) - 1) downto 1 do    begin      if odd(x) then        y := (Vcard[x] - 48)      else        y := ((Vcard[x] - 48) * 2);      if (y >= 10) then        y := ((y - 10) + 1);      Xcard := (Xcard + y)    end;  x := (10 - (Xcard mod 10));  if (x = 10) then    x := 0;  if (x = (Vcard[length(card)] - 48)) then    Vc := ord(Cstr) - ord('2')  else    Vc := 0end;

<< Back to main page