Documentos que se utilizan en la contabilidadFull description
<% '----------------------------------------------------'Funcao: IsCartaoCredito(ByVal IsCartaoCred ito(ByVal strNumeroCartao, strNumeroCart ao, strTipoCartao) 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: strNumeroCartao: Numero do cartão (somente número) ' strTipoCartao: strTipoCartao: Pode assumir os seguintes valores: ' MASTERCARD, VISA, AMEX, DINERSCLUB 'Retorno: Booleano 'Autor: Gabriel Fróes - www.codigofonte.com.br '----------------------------------------------------Function IsCartaoCredito(ByVal IsCartaoCredito(ByVal strNumeroCartao, strTipoCartao) 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 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 Objeto Expressão regEx.Pattern regEx.Patter n = strExpressaoRegular strExpressao Regular Expressão Regular regEx.IgnoreCase regEx.IgnoreCase = True ou não regEx.Global 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 intVerificaSoma = 0 blnFlagDigito blnFlagDigito = False For Cont = Len(strNumeroCartao) Len(strNumeroCartao) To 1 Step -1
' Cria o ' ' Sensitivo
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 %>