node-creditcard
Version:
Utilities functions for credit cards treatment
71 lines (60 loc) • 1.5 kB
JavaScript
;
const generator = require('creditcard-generator'),
decorator = require('./decorator');
generator.Schemes.Diners = {
prefixList: ['301', '305', '36', '38'],
digitCount: 14,
};
generator.Schemes.Hipercard = {
prefixList: ['60'],
digitCount: 16,
};
generator.Schemes.ELO = {
prefixList: ['504175', '504175', '636368'],
digitCount: 16,
};
/**
* Gera números de cartão de crédito válidos.
*
* @param {String} brand Bandeira desejada.
* @param {Bool} masked Flag que indica se o número será gerado com máscara.
* @param {Int} count Quantidade de números a serem gerados.
*
* @return {Array}
*/
exports.generate = function(brand, masked, count)
{
const sanitized = sanitizeBrand(brand);
if (!sanitized) { return []; }
const numbers = generator.GenCC(sanitized, count || 1);
if (!masked) { return numbers; }
for (var i in numbers) {
numbers[i] = decorator.mask(numbers[i]);
}
return numbers;
};
/**
* @param {String} brand
*
* @return {String|False}
*/
function sanitizeBrand(brand)
{
switch(String(brand).toLowerCase())
{
case 'visa':
return 'VISA';
case 'master':
case 'mastercard':
return 'MasterCard';
case 'amex':
return 'Amex';
case 'diners':
return 'Diners';
case 'hipercard':
return 'Hipercard';
case 'elo':
return 'ELO';
}
return false;
}