Credit Card Type | Acceptable integer argument for CreditCardType |
---|---|
MasterCard | 1 |
Visa | 2 |
American Express | 3 |
Diner's Club / Carte Blanche | 4 |
Discover | 5 |
En Route | 6 |
JCB | 7 |
boolean = IsWorthy(CreditCardType,
CreditCardNumber, ExpirationDate)
Example Usage:
ASP Source Code:<% Const MasterCard = 1, Visa = 2, Amex = 3, DC_CB = 4 Const Discover = 5, EnRoute = 6, JCB = 7 %> <% = IsWorthy(MasterCard, "5400000000000000", "10/03") %> IsWorthy returns True. <% = IsWorthy(Amex, "123456789", "10/03") %> IsWorthy returns False.
<% Private Function IsWorthy(byVal strCardType, _ byVal strCCNumber, byVal dExpDate) Dim strCCFirstFour, RequiredDigits, strCCFirstTwo, i, dMonth Dim bBadDigits, strCCFirstThree, iRequiredLength, TodaysDate Dim bNumberVerified, bVisaPresent, AbsoluteCCExpirationDate, dYear strCCNumber = CSTR(strCCNumber) : strCCNumber = _ replace(strCCNumber, " ", "") strCCNumber = replace(strCCNumber, "-", "") if isNumeric(strCCNumber) = False Then _ IsWorthy = False : Exit Function strCardType = CINT(strCardType) : strCCFirstFour = Left(strCCNumber, 4) Select Case strCardType Case 1 RequiredDigits = Array("51", "52", "53", _ "54", "55") strCCFirstTwo = Left(strCCFirstFour, 2) For i = 0 to Ubound(RequiredDigits) if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstTwo) then bBadDigits = False Exit For else bBadDigits = True end if Next Case 2 RequiredDigits = 4 if CSTR(RequiredDigits) = _ CSTR(Left(strCCFirstFour, 1)) then bBadDigits = False else bBadDigits = True end if Case 3 RequiredDigits = Array("34", "37") strCCFirstTwo = Left(strCCFirstFour, 2) For i = 0 to Ubound(RequiredDigits) if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstTwo) then bBadDigits = False Exit For else bBadDigits = True end if Next Case 4 RequiredDigits = Array("300", "301", "302", "303", _ "304", "305", "36", "38") strCCFirstThree = Left(strCCFirstFour, 3) For i = 0 to 5 if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstThree) then bBadDigits = False Exit For else bBadDigits = True end if Next If bBadDigits = True then strCCFirstTwo = Left(strCCFirstFour, 2) For i = 6 to Ubound(RequiredDigits) if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstTwo) then bBadDigits = False Exit For else bBadDigits = True end if Next End If Case 5 RequiredDigits = 6011 if CSTR(RequiredDigits) = _ CSTR(strCCFirstFour) then bBadDigits = False else bBadDigits = True end if Case 6 RequiredDigits = Array("2014", "2149") For i = 0 to Ubound(RequiredDigits) if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstFour) then bBadDigits = False Exit For else bBadDigits = True end if Next Case 7 RequiredDigits = Array("3", "2131", "1800") if CSTR(Left(strCCFirstFour, 1)) = _ CSTR(RequiredDigits(0)) then bBadDigits = False else For i = 1 to Ubound(RequiredDigits) if CSTR(RequiredDigits(i)) = _ CSTR(strCCFirstFour) then bBadDigits = False Exit For else bBadDigits = True end if Next end if Case Else bBadDigits = True End Select if bBadDigits Then IsWorthy = False : Exit Function end if bVisaPresent = False Select Case strCardType Case 1 iRequiredLength = 16 Case 2 bVisaPresent = True if Int(Len(strCCNumber)) = Int(16) _ OR Int(Len(strCCNumber)) = Int(13) then bNumberVerified = True else IsWorthy = False : Exit Function end if Case 3 iRequiredLength = 15 Case 4 iRequiredLength = 14 Case 5 iRequiredLength = 16 Case 6 iRequiredLength = 15 Case 7 if Int(Left(strCCNumber,1)) = Int(3) then iRequiredLength = 16 else iRequiredLength = 15 end if Case Else IsWorthy = False : Exit Function End Select if bVisaPresent = False then if Int(Len(strCCNumber)) = Int(iRequiredLength) then bNumberVerified = True else bNumberVerified = False end if end if if bNumberVerified = False then _ IsWorthy = False : Exit Function dExpDate = Trim(dExpDate) if instr(dExpDate,"/") Then AbsoluteCCExpirationDate = Split(dExpDate, "/") elseif instr(dExpDate,"-") Then AbsoluteCCExpirationDate = Split(dExpDate, "-") elseif instr(dExpDate," ") Then AbsoluteCCExpirationDate = Split(dExpDate, " ") else IsWorthy = False : Exit Function end if if Ubound(AbsoluteCCExpirationDate) > 1 then _ IsWorthy = False : Exit Function TodaysDate = split(formatdatetime(date(),2), "/") dMonth = Int(TodaysDate(0)) : dYear = Int(TodaysDate(2)) if Int(dYear) = Int(AbsoluteCCExpirationDate(1)) then if Int(dMonth) > Int(AbsoluteCCExpirationDate(0)) then IsWorthy = False : Exit Function else IsWorthy = True : Exit Function end if else if Int(dYear) > Int(AbsoluteCCExpirationDate(1)) then IsWorthy = False : Exit Function else IsWorthy = True : Exit Function end if end if End Function %>