Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <%'-----------------------------------------------------'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 numericoIf Not IsNumeric(strNumeroCartao) ThenRetorno = FalseElseRetorno = TrueEnd If 'Valor é numéricoIf Retorno Then'Selecionando o prefixo do cartãostrTipoCartao = Ucase(strTipoCartao)Select Case strTipoCartaoCase "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éditoSet regEx = New RegExp ' Cria oObjeto ExpressãoregEx.Pattern = strExpressaoRegular 'Expressão RegularregEx.IgnoreCase = True ' Sensitivoou nãoregEx.Global = TrueRetorno = RegEx.Test(strNumeroCartao)Set regEx = Nothing 'Formato corretoIf Retorno Then'-----------------------------------------'Processo de validação do numero do cartão'-----------------------------------------intVerificaSoma = 0blnFlagDigito = FalseFor Cont = Len(strNumeroCartao) To 1 Step -1
- Digito = Asc(Mid(strNumeroCartao, Cont, 1))'Isola o caracter da vezIf (Digito > 47) And (Digito < 58) Then'Somente se for inteiroDigito = Digito - 48'Converte novamente para numero (-48)If blnFlagDigito ThenDigito = Digito + Digito'Primeiro duplica-oIf Digito > 9 Then'Verifica se o Digito é maior que 9Digito = Digito - 9'Força ser somente um númeroEnd IfEnd IfblnFlagDigito = Not blnFlagDigitointVerificaSoma = intVerificaSoma + DigitoIf intVerificaSoma > 9 ThenintVerificaSoma = intVerificaSoma - 10'Mesmo que MOD 10 só que mais rapidoEnd IfEnd IfNextIf intVerificaSoma <> 0 Then ' Deve totalizar zeroRetorno = FalseElseRetorno = TrueEnd If'-----------------------------------------End IfEnd If'Retornando a funçãoIsCartaoCredito = RetornoEnd Function%>
Advertisement
Add Comment
Please, Sign In to add comment