Credit card validation using client script

This script will help you validate credit cards using client script. we have covered different card type validation here.( American express. master card, visa, discover )

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/currentRecord', 'N/search', 'N/https', 'N/url', 'N/ui/message', 'N/runtime'], function (record, currentRecord, search, https, url, message, runtime) {

    function checkForParameter(parameter) {
        if (parameter != "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== 'false' && parameter != " ")
            return parameter;
        else {
            return false;
        }
    }
    var main = {
        pageInit: function (context) {

        },

        creditCardContinue: function () {
            var cardDetails = currentRecord.get();
            console.log("cardDetails", cardDetails)
            var cardtype = cardDetails.getValue({ fieldId: 'custpage_credit_option_field' })
            var cardNumber = cardDetails.getValue({ fieldId: 'custpage_credit_number_field' })
            var cardexpireMonth = cardDetails.getValue({ fieldId: 'custpage_credit_ex_month_field' })
            var cardExipireYear = cardDetails.getValue({ fieldId: 'custpage_credit_ex_year_field' })
            var cardHolderName = cardDetails.getValue({ fieldId: 'custpage_credit_holder_name_field' })
            var cardupdateCheck = cardDetails.getValue({ fieldId: 'custpage_credit_card_chk_field' })

            var userRole = runtime.getCurrentUser().id;
            console.log("userRole", userRole);
            if (checkForParameter(cardtype) == false) {

            }
            if (checkForParameter(cardtype) == false) {
                alert("Please select a payment method");
                return false;
            }
            if (checkForParameter(cardNumber) == false) {
                alert("Please enter credit card number");
                return false;
            }
            if (checkForParameter(cardexpireMonth) == false) {
                alert("Please select a month for expiry");
                return false;
            }
            if (checkForParameter(cardExipireYear) == false) {
                alert("Please select a year for expiry");
                return false;
            }
            if (checkForParameter(cardHolderName) == false) {
                alert("please select card holder name");
                return false;
            }
            if (cardexpireMonth && cardExipireYear) {
                var currentYear = new Date().getFullYear();
                var currentMonth = new Date().getMonth() + 1;
                console.log("validation check")
                console.log("currentYear", currentYear)
                console.log("currentMonth", currentMonth)
                console.log("cardexpireMonth", Number(cardexpireMonth))
                console.log("cardExipireYear", Number(cardExipireYear))

                if (currentYear > Number(cardExipireYear)) {
                    console.log("validation check 11")
                    alert("please Enter a valid year");
                    return false;
                } else if (currentYear == Number(cardExipireYear)) {
                    console.log("validation check 12")
                    if (Number(cardexpireMonth) < currentMonth) {
                        alert("please Enter a valid month");
                        return false;
                    }

                }
            }

            var validData = main.creditCardvalidate(cardtype, cardNumber);

            if (validData == true) {
                var recIdData = main.createCreditCardRec(cardtype, cardNumber, cardexpireMonth, cardExipireYear, cardHolderName, cardupdateCheck, validData, userRole);
                if (checkForParameter(recIdData) == false) {
                    alert("Invalid credit card number");
                }
            } 
            window.onbeforeunload = function () { };
            location.reload();
        },

        creditCardvalidate: function (cardtype, cardNumber) {
            console.log("cardtype", cardtype)
            console.log("cardNumber", cardNumber)
            if (cardtype == "american" && cardNumber) {
                console.log("enter")
                var cardno = /^(?:3[47][0-9]{13})$/;
                if (('' + cardNumber).match(cardno)) {
                    return true;
                } else {
                    return false;
                }

            } else if (cardtype == "visa" && cardNumber) {
                var cardno = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
                if (('' + cardNumber).match(cardno)) {
                    return true;
                } else {
                    return false;
                }

            } else if (cardtype == "master" && cardNumber) {
                var cardno = /^(?:5[1-5][0-9]{14})$/;
                if (('' + cardNumber).match(cardno)) {
                    return true;
                } else {
                    return false;
                }

            } else if (cardtype == "discover" && cardNumber) {
                var cardno = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
                if (('' + cardNumber).match(cardno)) {
                    return true;
                } else {
                    return false;
                }

            }

        }, 
            };
            for (var key in main) {
                if (typeof main[key] === 'function') {
                    main[key] = trycatch(main[key], key);
                }
            }

            function trycatch(myfunction, key) {
                return function() {
                    try {
                        return myfunction.apply(this, arguments);
                    } catch (e) {
                        log.debug("e in  " + key, e);
                    }
                }
            };
            return main;
        });

Leave a comment

Your email address will not be published. Required fields are marked *