'
' 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
IT Offers
Comments
There are no comments yet. Be the first to comment!
You must have javascript enabled in order to post comments.
Comments
There are no comments yet. Be the first to comment!