94 lines
1.8 KiB
JavaScript
94 lines
1.8 KiB
JavaScript
/**
|
||
* Card Generator Configuration
|
||
* 卡类型配置
|
||
*/
|
||
|
||
const CARD_TYPES = {
|
||
unionpay: {
|
||
name: '中国银联 (UnionPay)',
|
||
// 支持多个前缀,避免短时间内重复使用同一BIN触发风控
|
||
prefixes: [
|
||
'622836754', // 原始BIN(已验证可用)
|
||
'622836740', '622836741', '622836742', '622836743',
|
||
'622836744', '622836745', '622836746', '622836747',
|
||
'622836748', '622836749', '622836750', '622836751',
|
||
'622836752', '622836753', '622836755', '622836756',
|
||
'622836757', '622836758', '622836759'
|
||
],
|
||
length: 16,
|
||
cvvLength: 3,
|
||
useLuhn: true // 使用Luhn算法校验
|
||
},
|
||
visa: {
|
||
name: 'Visa',
|
||
prefix: '4',
|
||
length: 16,
|
||
cvvLength: 3,
|
||
useLuhn: true
|
||
},
|
||
mastercard: {
|
||
name: 'MasterCard',
|
||
prefix: '5',
|
||
length: 16,
|
||
cvvLength: 3,
|
||
useLuhn: true
|
||
},
|
||
amex: {
|
||
name: 'American Express',
|
||
prefix: '34',
|
||
length: 15,
|
||
cvvLength: 4,
|
||
useLuhn: true
|
||
},
|
||
discover: {
|
||
name: 'Discover',
|
||
prefix: '6011',
|
||
length: 16,
|
||
cvvLength: 3,
|
||
useLuhn: true
|
||
}
|
||
};
|
||
|
||
/**
|
||
* 有效期配置
|
||
*/
|
||
const EXPIRY_CONFIG = {
|
||
minYear: 26, // 2026
|
||
maxYear: 30, // 2030
|
||
minMonth: 1,
|
||
maxMonth: 12
|
||
};
|
||
|
||
/**
|
||
* 输出格式配置
|
||
*/
|
||
const OUTPUT_FORMATS = {
|
||
pipe: {
|
||
name: 'Pipe分隔 (|)',
|
||
formatter: (card) => `${card.number}|${card.month}|${card.year}|${card.cvv}`
|
||
},
|
||
json: {
|
||
name: 'JSON格式',
|
||
formatter: (card) => JSON.stringify(card, null, 2)
|
||
},
|
||
csv: {
|
||
name: 'CSV格式',
|
||
formatter: (card) => `${card.number},${card.month},${card.year},${card.cvv}`
|
||
},
|
||
pretty: {
|
||
name: '美化格式',
|
||
formatter: (card) => `
|
||
Card Number: ${card.number}
|
||
Expiry Date: ${card.month}/${card.year}
|
||
CVV: ${card.cvv}
|
||
Type: ${card.type}
|
||
`.trim()
|
||
}
|
||
};
|
||
|
||
module.exports = {
|
||
CARD_TYPES,
|
||
EXPIRY_CONFIG,
|
||
OUTPUT_FORMATS
|
||
};
|