‘
‘ Usage: Returns Boolean indicating whether or not credit card
‘ number given passes the Luhn Formula (as described in
‘ ISO/IEC 7812-1:1993). Only numbers and numerical strings
‘ accepted, remove any spaces and dashes in strings.
‘ Example:
‘ booAcceptCard = CheckCC("4000000000000002")
‘
Function CheckCC(CCNo)
Dim I, w, x, y
‘
y = 0
CCNo = CStr(CCNo)
‘
‘Process digits from right to left, drop last digit if total
‘length is even
‘
w = 2 * (len(CCNo) Mod 2)
‘
for I = len(CCNo) – 1 to 1 step -1
x = mid(CCNo, I, 1)
‘
If IsNumeric(x) then
Select Case (I Mod 2) + w
Case 0, 3
‘
‘Even Digit – Odd where total length is odd
‘(eg. Visa vs. Amx)
‘
y = y + CInt(x)
Case 1, 2
‘
‘Odd Digit – Even where total length is odd
‘ (eg. Visa vs. Amx)
‘
x = CInt(x) * 2
If x > 9 then
‘
‘Break the digits (eg. 19 becomes 1 + 9)
‘
y = y + (x 10) + (x – 10)
else
y = y + x
End If
End Select
End If
next
‘
‘Return the 10’s complement of the total
y = 10 – (y Mod 10)
‘
If y > 9 then y = 0
CheckCC = (CStr(y) = Right$(CCNo, 1))
End Function