nps_sdk
Version:
A Node.Js SDK for Ingenico ePayments - NPS LatAm Services
164 lines (133 loc) • 4.13 kB
JavaScript
var constants = require('./constants')
var Utils = function(){
}
Utils.prototype.getWSDL = function(env){
return __dirname + '/wsdl/' + env;
}
Utils.prototype.sanitize = function(params, is_root, nodo){
if (is_root){
var result_params = {}
}else{
result_params = params
}
for(var k in params) {
var v = params[k];
if (typeof(v) == 'object'){
if (v.length == undefined){
result_params[k] = this.sanitize(v, false, k);
}else{
result_params[k] = this.sanitizeArray(v, k);
}
}else{
result_params[k] = this.validateSize(v, k, nodo);
}
}
return result_params
}
Utils.prototype.validateSize = function(value, k, nodo){
if (nodo != null){
key_name = nodo + "." + k + ".max_length"
}else{
key_name = k + ".max_length"
}
size = constants.SANITIZE_STRUC[key_name];
if (size != undefined){
value = value.slice(0, size);
}
return value
}
Utils.prototype.sanitizeArray = function(v, nodo){
var result_params = [];
for (var x in v){
result_params.push(this.sanitize(x, false, nodo));
}
return result_params
}
Utils.prototype.ofuscateCardNumber = function(data){
var replacedData = data.replace(
/>\d{13,19}<\/psp_CardNumber>/g,
function wrapCardNumberlabel(cNumberWLabel)
{
return cNumberWLabel.replace(/\d{13,19}/, function wrapCardNumber(cNumber){
var cNumberBegin = cNumber.slice(0,6);
var cNumberEnd = cNumber.slice(-4);
var cNumberLen = cNumber.length;
return cNumberBegin + "*".repeat(cNumberLen-10) + cNumberEnd;
})
}
);
return replacedData;
}
Utils.prototype.ofuscateExpDate = function(data){
var replacedData = data.replace(
/>\d{4}<\/psp_CardExpDate>/g,
function wrapExpDatelabel(expDateLabel)
{
return expDateLabel.replace(/\d{4}/, function wrapExpDate(expDate){
return "*".repeat(expDate.length);
})
}
);
return replacedData;
}
Utils.prototype.ofuscateCVC = function (data){
var replacedData = data.replace(
/>\d{3,4}<\/psp_CardSecurityCode>/g,
function wrapCardSecCodeLabel(cardSecCodeLabel)
{
return cardSecCodeLabel.replace(/\d{3,4}/, function wrapCardSecCode(secCode){
return "*".repeat(secCode.length);
})
}
);
return replacedData;
}
Utils.prototype.ofuscateTokenCardNumber = function(data){
var replacedData = data.replace(
/>\d{13,19}<\/Number>/g,
function wrapCardNumberlabel(cNumberWLabel)
{
return cNumberWLabel.replace(/\d{13,19}/, function wrapCardNumber(cNumber){
var cNumberBegin = cNumber.slice(0,6);
var cNumberEnd = cNumber.slice(-4);
var cNumberLen = cNumber.length;
return cNumberBegin + "*".repeat(cNumberLen-10) + cNumberEnd;
})
}
);
return replacedData;
}
Utils.prototype.ofuscateTokenExpDate = function(data){
var replacedData = data.replace(
/>\d{4}<\/ExpirationDate>/g,
function wrapExpDatelabel(expDateLabel)
{
return expDateLabel.replace(/\d{4}/, function wrapExpDate(expDate){
return "*".repeat(expDate.length);
})
}
);
return replacedData;
}
Utils.prototype.ofuscateTokenCVC = function (data){
var replacedData = data.replace(
/>\d{3,4}<\/SecurityCode>/g,
function wrapCardSecCodeLabel(cardSecCodeLabel)
{
return cardSecCodeLabel.replace(/\d{3,4}/, function wrapCardSecCode(secCode){
return "*".repeat(secCode.length);
})
}
);
return replacedData;
}
Utils.prototype.ofuscate = function(data){
data = this.ofuscateCVC(data)
data = this.ofuscateCardNumber(data)
data = this.ofuscateExpDate(data)
data = this.ofuscateTokenCVC(data)
data = this.ofuscateTokenCardNumber(data)
data = this.ofuscateTokenExpDate(data)
return data;
}
module.exports = Utils;