Página 1 de 1

Função para verificar o número do cartão de credito

Enviado: 10 Ago 2015 22:50
por Paulo_CPV
Boa noite!

Gostaria de saber dos amigos, se alguém tem uma função ou rotina em Harbour / Minigui Extend para validação de cartões de credito.

Desde já agradeço a atenção dos amigos.

Abraços,

Paulo - Jacareí/SP

Função para verificar o número do cartão de credito

Enviado: 19 Out 2015 23:25
por luiz antonio da silva
Boa Noite !

aqui tem os algoritmos.

http://www.devmedia.com.br/validando-ca ... -cnpj/1923

abraço.
Luiz.

Função para verificar o número do cartão de credito

Enviado: 31 Jan 2016 13:54
por JoséQuintas
Nesse link o cara não explica direito nem uma coisa e nem outra.

Este melhor:

https://en.wikipedia.org/wiki/Luhn_algorithm

Tive que fazer um passo a passo. O default é o mesmo número descrito no exemplo.

Código: Selecionar todos

#include "inkey.ch"

PROCEDURE Main

   LOCAL mNumero := Pad( "79927398713", 20 ), GetList := {}

   SetMode( 25, 80 )
   CLS
   DO WHILE .T.
      @ 3, 0 SAY "Cartao:" GET mNumero PICTURE "@K!"
      READ
      IF LastKey() == K_ESC
         EXIT
      ENDIF
      Scroll( 4, 0, MaxRow(), MaxCol(), 0 )
      ValidaCartao( mNumero )
   ENDDO
   RETURN

FUNCTION ValidaCartao( mNumero )

   LOCAL nCont, mSoma := 0, mMultiplica := 2, lReturn, mSingleNumber, mResultado, mAdiciona

   FOR nCont = Len( Trim( mNumero ) ) - 1 TO 1 STEP -1
      mSingleNumber := Val( Substr( mNumero, nCont, 1 ) )
      mResultado    := mSingleNumber * mMultiplica
      mAdiciona     := Val( Right( Str( mResultado, 2 ), 1 ) )
      IF mResultado > 9
         mAdiciona += Val( Left( Str( mResultado, 2 ), 1 ) )
      ENDIF
      mSoma += mAdiciona
      ? Str( mSingleNumber, 5 ), Str( mMultiplica, 5 ), Str( mResultado, 5 ), Str( mAdiciona, 5 ), Str( mSoma, 5 )
      mMultiplica := iif( mMultiplica == 2, 1, 2 )
   NEXT
   mSoma := Mod( mSoma, 10 )
   ? Str( mSoma, 2 )
   mSoma := iif( mSoma == 0, 0, 10 - mSoma )
   ? Str( mSoma, 2 )
   lReturn := Str( mSoma, 1 ) == Substr( mNumero, Len( Trim( mNumero ) ), 1 )
   IF .NOT. lReturn
      ? "Inválido"
   ELSE
      ? "OK      "
   ENDIF
   RETURN .T.

Função para verificar o número do cartão de credito

Enviado: 31 Jan 2016 21:39
por Nascimento
Muito bom não sabia que tinha cod validador