驗證信用卡函數(字符串處理)



驗證還取決於信用卡的類型。

'**************************************
' Name: Credit Card Mod 10 Validation
' Description:This function validates if
' a credit card number "appears" to be val
' id, depending on the type of card, and a
' lso performing a Mod 10 check on the num
' bers.
' By: Lewis Moten
'
'
' Inputs:asCardType - Type of credit car
' d. (American Express, Discover, Visa, Ma
' sterCard)
anCardNumber - The number appearing On the card. Dashes and spaces are ok. Numbers are stripped from
the data provided.
'
' Returns:Returns a boolean (true/false)
' determining if the number appears to be
' valid or not.
'
'Assumes:The user needs to be able to lo
' ok through the code and determine wich s
' trings represent the cards. You can eith
' er type out the entire card name (i.e. "
' American Express") or type in just a let
' ter representing the card name (i.e. "a"
' )
'
'Side Effects:Just because the function
' returns that the card is valid, there ar
' e several other things that are not bein
' g validated.
Date - make sure the card has Not expired
Active Account - This script does Not communicate With any banks To determine If the account number is
active
Authorization - again, this script does Not communicate With any banks To determine If the card has
authorization to purchase a product.
'
'Warranty:
'code provided by Planet Source Code(tm)
' (www.Planet-Source-Code.com) 'as is', wi
' thout warranties as to performance, fitn
' ess, merchantability,and any other warra
' nty (whether expressed or implied).
'Terms of Agreement:
'By using this source code, you agree to
' the following terms...
' 1) You may use this source code in per
' sonal projects and may compile it into a
' n .exe/.dll/.ocx and distribute it in bi
' nary format freely and with no charge.
' 2) You MAY NOT redistribute this sourc
' e code (for example to a web site) witho
' ut written permission from the original
' author.Failure to do so is a violation o
' f copyright laws.
' 3) You may link to this code from anot
' her website, provided it is not wrapped
' in a frame.
' 4) The author of this code may have re
' tained certain additional copyright righ
' ts.If so, this is indicated in the autho
' r's description.
'**************************************

Function IsCreditCard(ByRef asCardType, ByRef anCardNumber)
' Performs a Mod 10 check To make sure the credit card number
' appears valid
' Developers may use the following numbers as dummy data:
' Visa: 430-00000-00000
' American Express: 372-00000-00000
' Mastercard: 521-00000-00000
' Discover: 620-00000-00000

Dim lsNumber ' Credit card number stripped of all spaces, dashes,
etc.
Dim lsChar ' an individual character
Dim lnTotal ' Sum of all calculations
Dim lnDigit ' A digit found within a credit card number
Dim lnPosition ' identifies a character position In a String
Dim lnSum ' Sum of calculations For a specific Set

' Default result is False
IsCreditCard = False

' ====
' Strip all characters that are Not numbers.
' ====

' Loop through Each character inthe card number submited
For lnPosition = 1 To Len(anCardNumber)
' Grab the current character
lsChar = Mid(anCardNumber, lnPosition, 1)
' If the character is a number, append it To our new number
If IsNumeric(lsChar) Then lsNumber = lsNumber & lsChar

Next ' lnPosition

' ====
' The credit card number must be between 13 and 16 digits.
' ====
' If the length of the number is less Then 13 digits, then Exit the routine
If Len(lsNumber) < 13 Then Exit Function

' If the length of the number is more Then 16 digits, then Exit the routine
If Len(lsNumber) > 16 Then Exit Function


' ====
' The credit card number must start with:
' 4 For Visa Cards
' 37 For American Express Cards
' 5 For MasterCards
' 6 For Discover Cards
' ====

' Choose action based on Type of card
Select Case LCase(asCardType)
' VISA
Case "visa", "v"
' If first digit Not 4, Exit Function
If Not Left(lsNumber, 1) = "4" Then Exit Function
' American Express
Case "american express", "americanexpress", "american", "ax", "a"
' If first 2 digits Not 37, Exit Function
If Not Left(lsNumber, 2) = "37" Then Exit Function
' Mastercard
Case "mastercard", "master card", "master", "m"
' If first digit Not 5, Exit Function
If Not Left(lsNumber, 1) = "5" Then Exit Function
' Discover
Case "discover", "discovercard", "discover card", "d"
' If first digit Not 6, Exit Function
If Not Left(lsNumber, 1) = "6" Then Exit Function

Case Else
End Select ' LCase(asCardType)

' ====
' If the credit card number is less Then 16 digits add zeros
' To the beginning to make it 16 digits.
' ====
' Continue Loop While the length of the number is less Then 16 digits
While Not Len(lsNumber) = 16

' Insert 0 To the beginning of the number
lsNumber = "0" & lsNumber

Wend ' Not Len(lsNumber) = 16

' ====
' Multiply Each digit of the credit card number by the corresponding digit of
' the mask, and sum the results together.
' ====

' Loop through Each digit
For lnPosition = 1 To 16

' Parse a digit from a specified position In the number
lnDigit = Mid(lsNumber, lnPosition, 1)

' Determine If we multiply by:
' 1 (Even)
' 2 (Odd)
' based On the position that we are reading the digit from
lnMultiplier = 1 + (lnPosition Mod 2)

' Calculate the sum by multiplying the digit and the Multiplier
lnSum = lnDigit * lnMultiplier

' (Single digits roll over To remain single. We manually have to Do this.)
' If the Sum is 10 or more, subtract 9
If lnSum > 9 Then lnSum = lnSum - 9

' Add the sum To the total of all sums
lnTotal = lnTotal + lnSum

Next ' lnPosition

' ====
' Once all the results are summed divide
' by 10, If there is no remainder Then the credit card number is valid.
' ====
IsCreditCard = ((lnTotal Mod 10) = 0)

End Function ' IsCreditCard

ASP精品屋 from http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=4&txtCodeId=6267




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:

评论: 8063 | 引用: 0 | 查看次数: 60708
回复回复Ashleigh[2016-01-18 09:28 PM | del]
I adore this website - its so usefull and helpfull.
回复回复Gaston[2016-01-18 09:18 PM | del]
How are you, good websites you've got at this time there.
回复回复Jonna[2016-01-18 08:57 PM | del]
Simply just wished to express I'm thrilled I happened in your website page.
回复回复Warner[2016-01-18 08:40 PM | del]
I love this website - its so usefull and helpfull.
回复回复Aundrea[2016-01-18 08:36 PM | del]
Terrific Web page, Keep up the very good work.
thnx!
回复回复Jeremiah[2016-01-18 08:27 PM | del]
Maintain the helpful work and generating the crowd!
回复回复Arleen[2016-01-18 07:51 PM | del]
Maintain the incredible job !! Lovin' it!
回复回复Trudi[2016-01-18 07:26 PM | del]
You've gotten one of the best sites.
回复回复Bruce[2016-01-18 06:34 PM | del]
thank a lot for your internet site it aids a great deal.
回复回复Fern[2016-01-18 05:54 PM | del]
Thanks intended for providing this type of superb knowledge.
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭