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>

Reply via email to