Here's a credit card checksum tester to make sure that
the CC number is valid.
Stefan
At 09:42 AM 7/3/2002 -0400, you wrote:
>Right forgot that the Authorize net will do the final validation. But we
>want to catch as many mistakes as we can before that so If JS can be
>fudged guess I ll use server side Witango.
>
>Dan
>
>on 7/3/02 9:02 AM, Henning Sittler at [EMAIL PROTECTED] wrote:
>For any kind of reliable validation, I always check things on the server
>with Witango. Javascript can work too, but it can't be trusted, because
>it can be fudged.
>Of course if you're using live payment validation and processing, that
>service will respond 'invalid account' or some such thing if the number is
>badly formed.
>
>Henning Sittler
>www.inscriber.com
>
>
>
>
>
>-----Original Message-----
>From: Dan Stein [mailto:[EMAIL PROTECTED]]
>Sent: Wednesday, July 03, 2002 8:56 AM
>To: Multiple recipients of list witango-talk
>Subject: Witango-Talk: Credit Card Validation
>
>
>
>What do people use. I have a few JavaScript's I've grabbed from Java sites
>and a snippet from the component zone that has validation of all sorts all
>JavaScript based.
>
>I'm looking to just make sure it is well formed and matches the card type. I
>was thinking of using Witango to check that the expiration date has not
>passed.
>
>Dan
>
>
>
>--
>Dan Stein
>Digital Software Solutions
>799 Evergreen Circle
>Telford PA 18969
>Land: 215-799-0192
>Mobile: 610-256-2843
>Fax 413-410-9682
>FMP, WiTango, EDI,SQL 2000
>[EMAIL PROTECTED]
>www.dss-db.com
========================================================
Database WebWorks: Dynamic web sites through database integration
http://www.DatabaseWebWorks.com
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE TCF SYSTEM "tango.dtd" >
<TCF Version="0x02000002">
<Comments />
<!--Defined Classes-->
<Classes>
<ClassDef>
<Name>CC_Checksum</Name>
<!--Class constructor-->
<On_Create>
<Implementation />
</On_Create>
<!--Class destructor-->
<On_Destroy>
<Implementation />
</On_Destroy>
<!--Methods of this class-->
<Methods>
<MethodDef>
<Name>CC_Checksum_Tester</Name>
<MethodParameterList>
<MethodParameterItem DataType="Text"
Direction="In">
<Name>CC_Number</Name>
</MethodParameterItem>
<MethodParameterItem DataType="Text"
Direction="In">
<Name>CC_Type</Name>
</MethodParameterItem>
</MethodParameterList>
<Implementation>
<ActionRef
Ref="CC_Checksum.CC_Checksum_Tester.CC_Checksum_Tester" />
</Implementation>
<ReturnValueName>Error_Found</ReturnValueName>
<ReturnValueType>Text</ReturnValueType>
</MethodDef>
</Methods>
<!--Instance variables for this class-->
<Variables />
</ClassDef>
</Classes>
<!--Program actions-->
<Actions>
<ResultAction ID="CC_Checksum.CC_Checksum_Tester.CC_Checksum_Tester"
Sig="null">
<ResultsOutput
Ref="CC_Checksum.CC_Checksum_Tester.CC_Checksum_Tester.Results" />
</ResultAction>
</Actions>
<!--Data sources-->
<DataSources />
<!--Output blocks-->
<Outputs>
<Output ID="CC_Checksum.CC_Checksum_Tester.CC_Checksum_Tester.Results"
Type="HTML"><![CDATA[<@ASSIGN NAME="num" VALUE="<@KEEP STR='<@VAR method$CC_Number>'
CHARS='0123456789'>" SCOPE=instance>
<@IF "'@@num'='0'">
<@ASSIGN NAME="precheck" VALUE="bad" SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="precheck" VALUE="good" SCOPE=instance>
</@IF>
<@IF "'<@VAR method$CC_Type>'='VS'">
<@IF "'<@LENGTH STR=@@num>'='16'">
<@ASSIGN NAME="precheck" VALUE="good" SCOPE=instance>
<@ELSEIF "'<@LENGTH STR=@@num>'='13'">
<@ASSIGN NAME="precheck" VALUE="good" SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="precheck" VALUE="bad" SCOPE=instance>
</@IF>
<@ELSEIF "'<@VAR method$CC_Type>'='MC'">
<@IF "'<@LENGTH STR=@@num>'='16'">
<@ASSIGN NAME="precheck" VALUE="good" SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="precheck" VALUE="bad" SCOPE=instance>
</@IF>
<@ELSEIF "'<@VAR method$CC_Type>'='X'">
<@IF "'<@LENGTH STR=@@num>'='15'">
<@ASSIGN NAME="precheck" VALUE="good" SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="precheck" VALUE="bad" SCOPE=instance>
</@IF>
</@IF>
<@IF "'@@precheck'='good'">
<@ASSIGN NAME="numLen" VALUE="<@LENGTH STR='@@num'>" SCOPE=instance>
<@ASSIGN NAME="lastChar" VALUE="<@SUBSTRING STR='@@num' START='@@numLen'
NUMCHARS='1'>" SCOPE=instance>
<@ASSIGN NAME="checksum" VALUE="0" SCOPE=instance>
<@ASSIGN NAME="num" VALUE="<@SUBSTRING STR='@@num' START='<@CALC EXPR="1">'
NUMCHARS='@@numLen-1'>" SCOPE=instance>
<@ASSIGN NAME="numLen" VALUE="<@CALC EXPR='@@numLen-1'>" SCOPE=instance>
<@FOR START=1 STOP=@@numLen>
<@ASSIGN NAME="digit"
VALUE="<@SUBSTRING STR='@@num'
START='<@CALC
EXPR="@@numLen-<@CURROW>+1">' NUMCHARS='1'>"
SCOPE=instance>
<@ASSIGN NAME="temp" VALUE="<@CALC EXPR='@@digit*(1+(<@CURROW>%2))'>"
SCOPE=instance>
<@IF "'@@temp'<'10'">
<@ASSIGN NAME="checksum" VALUE="<@CALC EXPR='@@checksum+@@temp'>"
SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="checksum" VALUE="<@CALC EXPR='@@checksum+(@@temp-9)'>"
SCOPE=instance>
</@IF>
</@FOR>
<@ASSIGN NAME="checksum" VALUE="<@CALC EXPR='(10-(@@checksum%10))%10'>"
SCOPE=instance>
<@IF "'@@lastChar'='@@checksum'">
<@ASSIGN NAME="Invalid_Credit_Card_Number" VALUE="0" SCOPE=instance>
<@ELSE>
<@ASSIGN NAME="Invalid_Credit_Card_Number" VALUE="1" SCOPE=instance>
<@ASSIGN method$Error_Found 1>
</@IF>
<@ELSE>
<@ASSIGN NAME="Invalid_Credit_Card_Number" VALUE="1" SCOPE=instance>
<@ASSIGN method$Error_Found 1>
</@IF>
]]></Output>
</Outputs>
</TCF>