Mega Code Archive

 
Categories / VB.Net Tutorial / Data Type
 

Check a Credit card number

' Quote  from 'Visual Basic 2005 Cookbook Solutions for VB 2005 Programmers 'by Tim Patrick (Author), John Craig (Author) '# Publisher: O'Reilly Media, Inc. (September 21, 2006) '# Language: English '# ISBN-10: 0596101775 '# ISBN-13: 978-0596101770 Public Class Tester     Public Shared Sub Main      Console.WriteLine(VerifyCreditCard("123123123123123123"))     End Sub     Private Shared Function VerifyCreditCard(ByVal cardNumber As String) As Boolean         ' ----- Given a card number, make sure it is valid. This method         '       uses the Luhn algorithm to verify the number. This routine         '       assumes that cardNumber contains only digits.         Dim counter As Integer         Dim digitTotal As Integer         Dim holdValue As Integer         Dim checkDigit As Integer         Dim calcDigit As Integer         Dim useCard As String         ' ----- Perform some initial checks.         useCard = Trim(cardNumber)         If (IsNumeric(useCard) = False) Then Return False         ' ----- Separate out the last digit, the check digit. For cards with         '       an odd number of digits, prepend with a zero.         If ((Len(useCard) Mod 2) <> 0) Then useCard = "0" & useCard         checkDigit = useCard.Substring(Len(useCard) - 1, 1)         useCard = useCard.Substring(0, Len(useCard) - 1)         ' ----- Process each digit.         digitTotal = 0         For counter = 1 To Len(useCard)             If ((counter Mod 2) = 1) Then                 ' ----- This is an odd digit position. Double the number.                 holdValue = CInt(Mid(useCard, counter, 1)) * 2                 If (holdValue > 9) Then                     ' ----- Break the digits (e.g., 19 becomes 1+9).                     digitTotal += (holdValue \ 10) + (holdValue - 10)                 Else                     digitTotal += holdValue                 End If             Else                 ' ----- This is an even digit position. Simply add it.                 digitTotal += CInt(Mid(useCard, counter, 1))             End If         Next counter         ' ----- Calculate the 10's complement of both values.         calcDigit = 10 - (digitTotal Mod 10)         If (calcDigit = 10) Then calcDigit = 0         If (checkDigit = calcDigit) Then Return True Else Return False     End Function End Class False