2005. szeptember 23., péntek
Credit Card Validation
Problem/Question/Abstract:
Credit Card Validation
Answer:
Are you in need to validate a credit card? The following routine does some basic checking and returns the type of the credit card as a number - or use the const array to get the type of credit card by name. (E.g. 'Mastercard').
This code does not check that the credit card is actually valid, that it is good for a purchase or whether it belongs to a certain person. To accept any kind of orders, you need to do an address verification, combined with checking the expiration date.
The routine is still handy as an input validator on forms. You may download it here.
program CardTest;
uses
Dialogs,
SysUtils;
{$R *.RES}
const
CardType: array[0..4] of string = ('Invalid', 'Amex', 'Visa', 'Mastercard',
'Discover');
function Vc(C: string): Integer;
var
Card: string[21];
VCard: array[0..21] of Byte absolute Card;
XCard: Integer;
Cstr: string[21];
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[1]) - Ord('2')
else
Vc := 0
end;
begin
ShowMessage(CardType[Vc('4479750100222862')]);
end.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése