PUBLICIDADE
Este código tem nota
10

Autor

gabriel

Gabriel Fróes

membro deste junho de 2006

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Você gostou das mudanças no layout aqui do site?

Validar Cartão de Crédito com Expressão Regular


Esta função é muito útil para validação de Cartões de Crédito.

A função verifica, através de Expressão Regular, o formato do cartão de crédito, verifica o dígito verificador e retorna um booleano. True para Cartão Válido e False para Inválido.

Esta função suporta os seguintes cartões:
- MASTERCARD
- VISA
- AMEX
- DINERSCLUB.
<%
'-----------------------------------------------------
'Funcao:    IsCartaoCredito(ByVal strNumeroCartao, strTipoCartao)
'Sinopse:    Verifica se o cartão de crédito passado por parametro 
'            está no formato correto e se o dígito é correto. 
'            Formatos aceitos: 
'            Cartão            Prefixo                    Tamanho
'             MASTERCARD         51-55                     16
'             VISA             4                         13 ou 16
'             AMEX             34 ou 37                 15
'             DINERSCLUB         300-305 ou 36 ou 38     14
'Parametro: strNumeroCartao: Numero do cartão (somente número)
'            strTipoCartao: Pode assumir os seguintes valores: 
'                           MASTERCARD, VISA, AMEX, DINERSCLUB
'Retorno: Booleano
'Autor: Gabriel Fróes - www.codigofonte.com.br
'-----------------------------------------------------
Function IsCartaoCredito(ByVal strNumeroCartao, strTipoCartao)
    'Verificando se o valor passado é todo numerico
    If Not IsNumeric(strNumeroCartao) Then
        Retorno = False
    Else
        Retorno = True
    End If
    
    'Valor é numérico
    If Retorno Then
        'Selecionando o prefixo do cartão
        strTipoCartao    =    Ucase(strTipoCartao)
        Select Case strTipoCartao
            Case "MASTERCARD"
                strExpressaoRegular = "^5[1-5]\d{14}$"
            Case "VISA"
                strExpressaoRegular = "^4(\d{12}|\d{15})$"
            Case "AMEX"
                strExpressaoRegular = "^3(3|7)\d{14}$"
            Case "DINERSCLUB"
                strExpressaoRegular = "^3((6|8)\d{12})|(00|01|02|03|04|05)\d{11})$"
        End Select
            
        'Validando o formato do cartão de crédito
        Set regEx = New RegExp                            ' Cria o Objeto Expressão
        regEx.Pattern = strExpressaoRegular                  ' Expressão Regular
        regEx.IgnoreCase = True                           ' Sensitivo ou não
        regEx.Global = True                               
        Retorno = RegEx.Test(strNumeroCartao)
        Set regEx = Nothing
        
        'Formato correto
        If Retorno Then
            '-----------------------------------------
            'Processo de validação do numero do cartão    
            '-----------------------------------------
            intVerificaSoma        = 0
            blnFlagDigito        = False 
            For Cont = Len(strNumeroCartao) To 1 Step -1
                Digito = Asc(Mid(strNumeroCartao, Cont, 1))        'Isola o caracter da vez
                If (Digito > 47) And (Digito < 58) Then            'Somente se for inteiro
                    Digito = Digito - 48                        'Converte novamente para numero (-48)
                    If blnFlagDigito Then                  
                        Digito = Digito + Digito                'Primeiro duplica-o
                        If Digito > 9 Then                        'Verifica se o Digito é maior que 9
                            Digito = Digito - 9                    'Força ser somente um número
                        End If
                    End If
                    blnFlagDigito = Not blnFlagDigito      
                    intVerificaSoma = intVerificaSoma + Digito   
                    If intVerificaSoma > 9 Then                
                        intVerificaSoma = intVerificaSoma - 10   'Mesmo que MOD 10 só que mais rapido
                    End If
                End If
            Next
            If intVerificaSoma <> 0 Then ' Deve totalizar zero
                Retorno = False
            Else
                Retorno = True
            End If
            '-----------------------------------------
        End If
    End If
    'Retornando a função
    IsCartaoCredito = Retorno
End Function
%>

Sim   Não   Este código foi útil para você?
NotaComentário
10
charlin comentou em 2/8/2008

Perfeito!

Simples e funcional...
Gostaria de saber como validar o CVV (código de verificação do cartão.)
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.