generate-payment-card
v1.0.8
Published
This package generates valid payment card (credit, debit or otherwise) numbers.
Downloads
360
Maintainers
Readme
Generate payment card
This package generates a valid payment card number. A payment card can either be a credit, debit or otherwise.
🚀 Getting started
Install the package from npm.
npm install generate-payment-card
.
🧰 Basic usage
var generatePaymentCard = require('generate-payment-card')
var payment_card_details = generatePaymentCard.generate({
"card_brand": "american express",
"user_digits": {
"status": true,
"digits": 2345678991,
"position": "endswith"
}
})
console.log(payment_card_details)
/* outputs:
{
"valid_card_number": "374692345678991"
"cvv": 591
"expiry_date": Fri Apr 24 2026 17:44:00 GMT+0100 (West Africa Standard Time)
"balance: 0
"issuer": "AMERICAN EXPRESS"
"card_brand": "american express"
}
*/
P.S: If testing with the exact values used above, output for some of the properties may differ slightly due to time difference and randomization used in creation some of the values.
Request payload
The generate
function takes in one argument which is an object. This can contain a couple of properties including a card_brand
(string), user_digits
(object) and issuer
(string).
The only required property is user_digits
. This allows the user to specify a sequence of strictly ten digits which they want to be a part of the payment card number. They can also specify where they want this sequence to be placed by setting position
to startswith
, contains
, or endswith
. The user_digits
value consists of three properties:
status
: which shows if the user will be specifying their own sequence of digits. This key's property can either betrue
,false
,yes
, orno
. If set tofalse
, and no other property is provided, a visa payment card will be created and the other fields will have default values. Also, if it is set to false, every other property in theuser_digits
object will be disregarded.digits
: This is the sequence of 10 digits that the user provides.position
: This indicates where the user wants the digits to be placed in the the generated card numbers. If the value isstartswith
and the user also passes acard_brand
value, the digits will be prioritised over the value.
Response payload
Once a payment card number has been generated successfully, it returns an object consisting of the following:
valid_card_number
: This is the valid card number created.cvv
: This is the card verification value usually found at the back of a payment card. Here, it is generated randomly.expiry_date
: The user can pass their prefered length of years between 1 and 5 after which the card should expire. The default value is 5.balance
: The user can also pass their prefered balance amount between ten thousand and five million. The default value is 0.issuer
: This is the specific organization that the card was generated from.card_brand
: This refers to the brand of the payment card. Currently, this package is only able to generate Mastercard, Visa, American Express and Discover cards.
Sample requests
- Sending a payload without specifying card_brand:
{
"user_digits": {
"status": true,
"digits": 2345678991,
"position": "endswith"
}
}
Output:
{
"valid_card_number": "4381392345678991"
"cvv": 604
"expiry_date": Fri Apr 24 2026 16:31:11 GMT+0100 (West Africa Standard Time)
"balance": 0
"issuer": "UNICREDIT BANK SERBIA JSC BELGRAD"
"card_brand": "visa"
}
If no card brand is passed, the default is Visa
.
- Sending a payload with card_brand:
{
"user_digits": {
"status": true,
"digits": 2345678991,
"position": "endswith"
}
}
Output:
{
"valid_card_number": "6011322345678991",
"cvv": 993,
"expiry_date": Fri Apr 24 2026 17:58:01 GMT+0100 (West Africa Standard Time),
"balance": 0,
"issuer": "BANK OF AMERICA",
"card_brand": "discover"
}
Error messages
Each key in the object parameter goes through a joi
validator before a payment card number can be created. Errors could also arise due to other limitations.
Sample invalid request
- The database being used in this package is limited so there is a limit to the number of issuers supported.
{
"card_brand": "mastercard",
"user_digits": {
"status": true,
"digits": 3745678991,
"position": "startswith"
},
"issuer": "access bank"
};
Outputs:
Error: This card brand is not available for this company or company does not exist in our database.
- Expiry date higher than 5 years
{
"card_brand": "american express",
"user_digits": {
"status": true,
"digits": 2345678991,
"position": "endswith"
},
"expires_in": 10
}
Outputs: Error: ValidationError: Expiry year must be between 1 and 5.
- Balance higher than 5million
{
"card_brand": "visa",
"user_digits": {
"status": true,
"digits": 3745678991,
"position": "contains"
},
"issuer": "bank of america",
"balance": 200000000,
};
Outputs: Error: ValidationError: Balance must be between 10000 and 5000000.
- Card brand not
Visa
,Mastercard
,American Express
orDiscover
.
{
"card_brand": "Maestro",
"user_digits": {
"status": true,
"digits": 3745678991,
"position": "contains"
},
"issuer": "bank of america",
"balance": 2000,
};
Outputs: Error: ValidationError: card brand is not currently supported. [available: 'visa', 'mastercard', 'discover', 'american express'].