Returns credit card type and whether it is valid or not.
Found it in my old code library and enhanced it to be presentable.
Function CreditCardType(CardNo)
' Returns the type of a credit card number, pass number as string, no spaces, no dashes
' using below to build this function
' Needs Luhn()
Rett = 0 ' Not valid, Not defined, not found
' Card Type Prefix Length
ccMaster = 1 ' MasterCard 51-55 16
ccVISA = 2 ' VISA 4 13, 16
ccAmex = 3 ' American Express 34, 37 15
ccDiners = 4 ' Diner's Club 300-305, 36, 38 14
ccCarteB = 5 ' Carte Blanche 300-305, 36, 38 14 ' < < < Not functioning now
ccDiscover = 6 ' Discover 6011 16
ccenRoute = 7 ' enRoute 2014, 2049 15
ccJCB = 8 ' JCB 3 16
' JCB 2131, 1800 15
If Not Luhn(CardNo) Then
' CardNo is not valid, do not do any other calculations
ElseIf Len(CardNo) = 16 And (Left(CardNo, 2) = "51" Or Left(CardNo, 2) = "52" Or Left(CardNo, 2) = "53" Or Left(CardNo, 2) = "54" Or Left(CardNo, 2) = "55") Then
Rett = ccMaster ' IsMaster = IsLen(s, 16) and IInside(CLng(Left(s, 2)), 51, 55)
ElseIf (Len(CardNo) = 13 Or Len(CardNo) = 16) And Left(CardNo, 1) = "4" Then
Rett = ccVISA ' IsVisa = IsPrefix(s, "4") and (IsLen(s, 13) or IsLen(s, 16))
ElseIf Len(CardNo) = 15 And (Left(CardNo, 2) = "34" Or Left(CardNo, 2) = "37") Then
Rett = ccAmex ' IsAmex = IsLen(s, 15) and (IsPrefix(s, "34") or IsPrefix(s, "37"))
ElseIf Len(CardNo) = 14 And (Left(CardNo, 2) = "36" Or Left(CardNo, 2) = "38" Or Left(CardNo, 2) = "30") Then
Rett = ccDiners ' IsDiners = IsLen(s, 14) and (IsPrefix(s, "36") or IsPrefix(s, "38") or IInside(CLng(Left(s, 3)), 300, 305))
ElseIf Len(CardNo) = 16 And Left(CardNo, 4) = "6011" Then
Rett = ccDiscover ' IsDiscover = IsLen(s, 16) and IsPrefix(s, "6011")
ElseIf Len(CardNo) = 15 And (Left(CardNo, 4) = "2014" Or Left(CardNo, 4) = "2049") Then
Rett = ccenRoute ' IsRoute = IsLen(s, 15) and (IsPrefix(s, "2014") or IsPrefix(s, "2049"))
ElseIf (Len(CardNo) = 16 And Left(CardNo, 1) = "3") Or (Len(CardNo) = 15 And (Left(CardNo, 4) = "1800" Or Left(CardNo, 4) = "2131")) Then
Rett = ccJCB ' IsJCB = (IsLen(s, 15) and (IsPrefix(s, "2131") or IsPrefix(s, "1800")) or (IsLen(s, 16) and IsPrefix(s, "3")))
Else
Rett = 0
End If
CreditCardType = Rett
End Function
' Returns the type of a credit card number, pass number as string, no spaces, no dashes
' using below to build this function
' Needs Luhn()
Rett = 0 ' Not valid, Not defined, not found
' Card Type Prefix Length
ccMaster = 1 ' MasterCard 51-55 16
ccVISA = 2 ' VISA 4 13, 16
ccAmex = 3 ' American Express 34, 37 15
ccDiners = 4 ' Diner's Club 300-305, 36, 38 14
ccCarteB = 5 ' Carte Blanche 300-305, 36, 38 14 ' < < < Not functioning now
ccDiscover = 6 ' Discover 6011 16
ccenRoute = 7 ' enRoute 2014, 2049 15
ccJCB = 8 ' JCB 3 16
' JCB 2131, 1800 15
If Not Luhn(CardNo) Then
' CardNo is not valid, do not do any other calculations
ElseIf Len(CardNo) = 16 And (Left(CardNo, 2) = "51" Or Left(CardNo, 2) = "52" Or Left(CardNo, 2) = "53" Or Left(CardNo, 2) = "54" Or Left(CardNo, 2) = "55") Then
Rett = ccMaster ' IsMaster = IsLen(s, 16) and IInside(CLng(Left(s, 2)), 51, 55)
ElseIf (Len(CardNo) = 13 Or Len(CardNo) = 16) And Left(CardNo, 1) = "4" Then
Rett = ccVISA ' IsVisa = IsPrefix(s, "4") and (IsLen(s, 13) or IsLen(s, 16))
ElseIf Len(CardNo) = 15 And (Left(CardNo, 2) = "34" Or Left(CardNo, 2) = "37") Then
Rett = ccAmex ' IsAmex = IsLen(s, 15) and (IsPrefix(s, "34") or IsPrefix(s, "37"))
ElseIf Len(CardNo) = 14 And (Left(CardNo, 2) = "36" Or Left(CardNo, 2) = "38" Or Left(CardNo, 2) = "30") Then
Rett = ccDiners ' IsDiners = IsLen(s, 14) and (IsPrefix(s, "36") or IsPrefix(s, "38") or IInside(CLng(Left(s, 3)), 300, 305))
ElseIf Len(CardNo) = 16 And Left(CardNo, 4) = "6011" Then
Rett = ccDiscover ' IsDiscover = IsLen(s, 16) and IsPrefix(s, "6011")
ElseIf Len(CardNo) = 15 And (Left(CardNo, 4) = "2014" Or Left(CardNo, 4) = "2049") Then
Rett = ccenRoute ' IsRoute = IsLen(s, 15) and (IsPrefix(s, "2014") or IsPrefix(s, "2049"))
ElseIf (Len(CardNo) = 16 And Left(CardNo, 1) = "3") Or (Len(CardNo) = 15 And (Left(CardNo, 4) = "1800" Or Left(CardNo, 4) = "2131")) Then
Rett = ccJCB ' IsJCB = (IsLen(s, 15) and (IsPrefix(s, "2131") or IsPrefix(s, "1800")) or (IsLen(s, 16) and IsPrefix(s, "3")))
Else
Rett = 0
End If
CreditCardType = Rett
End Function
CardNo
Views 101
Downloads 39
CodeID
DB ID