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



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

'**************************************
' 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:
相关日志:

评论: 8071 | 引用: 0 | 查看次数: 73107
回复回复Elva[2019-02-13 08:13 AM | del]
A lot of people today say this is the easiest of the Trophy games (I have to disagree with this) but most of the men and women who say it got the platinum for this when there were only two games with platinum trophies (Uncharted and Buzz) and they did not have any other trophy game to distract them.
回复回复Sophie[2019-01-27 04:11 PM | del]
Great looking site. Think you did a bunch of your own coding.
回复回复Gustavo[2019-01-24 12:45 AM | del]
You're a very valuable web site; couldn't make it without ya!
回复回复Kathrin[2019-01-16 12:58 AM | del]
Thanks, this site is very helpful.
回复回复Susanne[2019-01-15 05:33 PM | del]
You've the most effective sites.
回复回复Merry[2019-01-15 04:35 AM | del]
You've terrific stuff right.
回复回复Meri[2018-02-14 10:20 PM | del]
I enjoy this website - its so usefull and helpfull.
回复回复Todd[2018-02-14 07:56 PM | del]
Many thanks, this website is extremely valuable.
回复回复Kazuko[2016-01-27 09:13 AM | del]
Very good website you have got here.
回复回复Stephen[2016-01-19 11:46 AM | del]
Keep up the helpful work and generating the crowd!
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭