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;
});