开发者网络 动网主机 支持论坛 邮局 帮助
当前位置:网络学院ASP技术客户端相关 → 验证信用卡函数(字符串处理)
验证信用卡函数(字符串处理)
日期:2000年10月6日 作者: 人气:     [ ]
验证还取决于信用卡的类型。

    '**************************************
    ' 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

(出处:)

相关文章:
 
·SQL Server 2000 SP4发布
·Sql Server 2005最新CTP简介及截图
·微软发布数据库新测试版 最终版明夏登场
·网络社区论坛即将成为互联网下一热点
·SET NOCOUNT的用法和注意事项
·全正则的检测IP是否合法的函数
·判断一个access数据库中某个表是否存在的方法
·用Asp生成条形码
·数字小写到英文大写的转换
·在不支持FSO的服务器上使用XMLDOM创建HTML文件
相关软件:
 
·拓域会员核心系统 v1.02
·深博贴吧(仿百度)双数据库版 v1.5
·通用草稿自动保存系统SipoAutoSaver v2.0
·BJXSHOP网上开店专家 v6.0 SP1 Build 20060118
·企业网站智能管理系统(TZIMS) v1.5
·bzmtv v1.0 正式版
·宜兴二级域名申请系统SQL版
·Mslove交友系统 v3.0
·亿人通讯录 v3.0
·深博贴吧(仿百度)双数据库版 v1.0
说明:本站部分内容收集于网络,如有侵犯您的权益请来信告知,我们会第一时间进行处理,谢谢
 → 特别推荐
 → 热点TOP10

关于本站 | 诚聘英才 | 业务合作 | 联系我们 | 广告合作 | 收藏本站

海口动网先锋网络科技有限公司版权所有
Copyright ? 2000 - 2003 AspSky.Net
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077