bp-creditcards
v1.3.0
Published
Utility methods for formatting and validating credit cards
Downloads
11
Maintainers
Readme
creditcards
Utility methods for formatting and validating credit cards. With a minimal footprint and a flexible API, it's suitable for both Node and the browser.
Install
# npm
$ npm install creditcards
# bower
$ bower install creditcards
API
validate(card)
- Arguments:
card
(object)number
(string)expirationMonth
(number)expirationYear
(number)cvc
(string)
- Returns:
- object
card
type
(string) - the type of the provided cardnumber
(string)expirationMonth
(number)expirationYear
(number)cvc
(string)
validCardNumber
(boolean)validExpirationMonth
(boolean)validExpirationYear
(boolean)validCvc
(boolean)expired
(boolean) - whether the expiration date has passed
- object
card
card.parse(number)
-> String
Removes all non-numeric characters from a card number, including punctuation and spacing. If a non-string is provided, it returns an empty string.
card.type(number)
-> String
Returns the matched card type, or undefined
if there was no match. Valid card types are:
- Visa
- MasterCard
- American Express
- Diners Club
- Discover
- JCB
card.luhn(number)
-> Boolean
Checks the card number's validity using the Luhn algorithm.
card.isValid(number [, type])
-> Boolean
Validates the number using card.luhn
and checks that it matches any type
(or a specific type
if provided).
cvc
isValid(cvc [, type])
-> Boolean
Checks whether a card verification code is a valid 3-4 digit numeric string. If a type
is provided, the length will be validated for the card type (4 for American Express, 3 for others).
expiration
isPast(month, year)
-> Boolean
Checks whether a given month and year pair (both Number
) are in the past.
expiration.month
expiration.month.parse(month)
-> Number
Casts the provided month
value to a Number
. All of the following will be 5
after parsing:
5
'05'
'5'
Returns undefined
for non-numeric values.
expiration.month.isValid(month)
-> Boolean
Checks whether the provided month (Number
) is valid (between 1 and 12).
expiration.year
expiration.year.parse(year [, pad])
-> Number
Casts the provided year value to a Number
. If pad
is true
, year
is assumed to be a two digit number or numeric string. All of the following are equivalent:
expiration.year.parse(2014)
expiration.year.parse('2014')
expiration.year.parse('14', true)
expiration.year.parse(14, true)
Returns undefined
for non-numeric values.
expiration.year.format(year [, strip])
-> Number
Casts the provided year (Number
) to a String
. If strip
is true
, year
is assumed to be a four digit number and will be converted to a two digit number.
expiration.year.format(2014) === '2014'
expiration.year.format(2014, true) === '14'
expiration.year.isValid(year)
-> Boolean
Checks whether the provided year (Number
) is valid (> 0).
expiration.year.isPast(year)
-> Boolean
Checks whether a given year (Number
) is in the past.
Why Another Library?
There are lots of other useful credit card validation and parsing modules. creditcards specifically takes inspiration from credit-card, but there are many others, including the popular jQuery.payment. creditcards was specifically designed for browser use for handling payment forms. That means:
- Browserified, it's only a few kilobytes, even before minification.
- It provides an API for parsing user inputs.
- It has no DOM-related code. You can use it in Node and in the browser you get full control over how your card inputs are handled.
- The card type is optional.
Clients
- angular-credit-cards: A set of Angular directives for building credit card forms powered by creditcards