Verificar Cartão de Credito: Function - Delphi

Veja nesta Quick, como podemos validar Cartão de Crédito em Delphi


Olá galera, nesta Quick Tips, irei mostra como podemos validar os dígitos de um cartão de crédito, assim como é feito para validação de CNPJ e CPF, uma rotina pronta para uso, vamos à construção da mesma.

 

Criamos uma função chamada ValidarCartaCredito, com os parâmetro pCartao: String, retornando uma valor Integer. Veremos agora a implementação desta função.

 

function TFrmPrincipal.ValidarCartaoCredito(pCartao: string): Integer;

var

xCartao: string[21];

VetCartao: array[0..21] of Byte absolute xCartao;

kCartao: Integer;

Cstr: string[21];

y, x: Integer;

begin

Cstr := '';

FillChar(VetCartao, 22, #0);

xCartao := pCartao;

for x := 1 to 20 do

if (VetCartao[x] in [48..57]) then

Cstr := Cstr + chr(VetCartao[x]);

xCartao := '';

xCartao := Cstr;

kCartao := 0;

if not odd(Length(xCartao)) then

for x := (Length(xCartao) - 1) downto 1 do

begin

if odd(x) then

y := ((VetCartao[x] - 48) * 2)

else

y := (VetCartao[x] - 48);

if (y >= 10) then

y := ((y - 10) + 1);

kCartao := (kCartao + y)

end

else

for x := (Length(xCartao) - 1) downto 1 do

begin

if odd(x) then

y := (VetCartao[x] - 48)

else

y := ((VetCartao[x] - 48) * 2);

if (y >= 10) then

y := ((y - 10) + 1);

kCartao := (kCartao + y)

end;

x := (10 - (kCartao mod 10));

if (x = 10) then

x := 0;

if (x = (VetCartao[Length(xCartao)] - 48)) then

Result := Ord(Cstr[1]) - Ord('2')

else

Result := 0

end;

 

Usando a função.

Vamos adicionar 1 Edit(EdtCartaoCredito), 1 Label(LblResultado), e 1 BitBtn(BtnTestarCartao), e no clique do botão vamos implementar o seguinte :

 

procedure TFrmPrincipal. BtnTestarCartao Click(Sender: TObject);

begin

case ValidarCartaoCredito(EdtCartaoCredito.Text) of

0: LblResultado.Caption := 'Este Cartão é invalido ou desconhecido';

1: LblResultado.Caption := 'Este Cartão é um AmEx';

2: LblResultado.Caption := 'Este Cartão é um Visa';

3: LblResultado.Caption := 'Este Cartão é um MasterCard;

end;

end;

 

Quando incluir o número do seu cartão, caso ele seja AmEx, Visa ou MasterCard, você poderá ver que uma mensagem será passada para o Caption do LblResultado, caso o valor seja inválido também será trato este tipo de erro. Como podemos notar, existe um Calculo assim como é feito no CPF e no CNPJ.

 

Podemos criar uma unit, separada e implementar a mesma para reaproveitarmos esta função.

 

Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

 

Wesley Y

wyamazack@rwsolution.com.br


Artigos relacionados