<%
' Credit Card check routine for ASP (c) 1998 by Click Online
' http://www.click-online.de info@click-online.de
function trimtodigits(tstring)
'removes all chars except of 0-9
s=""
ts=tstring
for x=1 to len(ts)
ch=mid(ts,x,1)
if asc(ch)>=48 and asc(ch)<=57 then
s=s & ch
end if
next
trimtodigits=s
end function
function checkcc(ccnumber,cctype)
'checks credit card number for checksum,length and type
'ccnumber= credit card number
' (all useless characters are being removed before check)
'cctype: (ประเภทบัตร)
' [V]ISA [M]astercard/Eurocard [A]merican Express
' [D]iners Club / Carte Blanche [D]iscover [E]nRoute [J]CB
'returns: (ผลการตรวจสอบ)
' checkcc=0 (Bit0) : card valid
' checkcc=1 (Bit1) : wrong type
' checkcc=2 (Bit2) : wrong length
' checkcc=4 (Bit3) : wrong checksum (MOD10-Test)
' checkcc=8 (Bit4) : cardtype unknown
ctype=ucase(cctype)
' เก็บค่าเงื่อนไขไว้ ตรวจสอบตามประเภทบัตร
select case ctype
case "V"
cclength="13;16"
ccprefix="4"
case "M"
cclength="16"
ccprefix="51;52;53;54;55"
case "A"
cclength="15"
ccprefix="34;37"
case "C"
cclength="14"
ccprefix="300;301;302;303;304;305;36;38"
case "D"
cclength="16"
ccprefix="6011"
case "E"
cclength="15"
ccprefix="2014;2149"
case "J"
cclength="15;16"
ccprefix="3;2131;1800"
case else
cclength=""
ccprefix=""
end select
prefixes=split(ccprefix,";",-1)
lengths=split(cclength,";",-1)
number=trimtodigits(ccnumber)
prefixvalid=false
lengthvalid=false
' ตรวจประเภทบัตร
for each prefix in prefixes
if instr(number,prefix)=1 then
prefixvalid=true
end if
next
' ตรวจความยาว เช่น visa ต้องได้ 13
for each length in lengths
if cstr(len(number))=length then
lengthvalid=true
end if
next
result=0
if not prefixvalid then
result=result+1
end if
if not lengthvalid then
result=result+2
end if
' ตรวจ gsum การนำเลขทั้งหมดมาคำนวณ ว่ารูปแบบถูกต้องหรือไม่
qsum=0
for x=1 to len(number)
ch=mid(number,len(number)-x+1,1)
if x mod 2=0 then
sum=2*cint(ch)
qsum=qsum+(sum mod 10)
if sum>9 then
qsum=qsum+1
end if
else
qsum=qsum+cint(ch)
end if
next
if qsum mod 10<>0 then
result=result+4
end if
if cclength="" then
result=result+8
end if
checkcc=result
end function
%>
จำนวน : 103 บรรทัด