NAME¶
"Business::CreditCard" - Validate/generate credit card checksums/names
SYNOPSIS¶
use Business::CreditCard;
print validate("5276 4400 6542 1319");
print cardtype("5276 4400 6542 1319");
print generate_last_digit("5276 4400 6542 131");
Business::CreditCard is available at a CPAN site near you.
DESCRIPTION¶
These subroutines tell you whether a credit card number is self-consistent --
whether the last digit of the number is a valid checksum for the preceding
digits.
The
validate() subroutine returns 1 if the card number provided passes
the checksum test, and 0 otherwise.
The
cardtype() subroutine returns a string containing the type of card.
The list of possible return values is more comprehensive than it used to be,
but additions are still most welcome.
Possible return values are:
VISA card
MasterCard
Discover card
American Express card
enRoute
JCB
BankCard
Switch
Solo
China Union Pay
Laser
Unknown
"Not a credit card" is returned on obviously invalid data values.
Versions before 0.31 may also have returned "Diner's Club/Carte
Blanche" (these cards are now recognized as "Discover card").
As of 0.30,
cardtype() will accept a partial card masked with
"x", "X', ".", "*" or "_". Only
the first 2-6 digits and the length are significant; whitespace and dashes are
removed. To recognize just Visa, MasterCard and Amex, you only need the first
two digits; to recognize almost all cards except some Switch cards, you need
the first four digits, and to recognize all cards including the remaining
Switch cards, you need the first six digits.
The
generate_last_digit() subroutine computes and returns the last digit
of the card given the preceding digits. With a 16-digit card, you provide the
first 15 digits; the subroutine returns the sixteenth.
This module does
not tell you whether the number is on an actual card,
only whether it might conceivably be on a real card. To verify whether a card
is real, or whether it's been stolen, or to actually process charges, you need
a Merchant account. See Business::OnlinePayment.
These subroutines will also work if you provide the arguments as numbers instead
of strings, e.g. "validate(5276440065421319)".
PROCESSING AGREEMENTS¶
Credit card issuers have recently been forming agreements to process cards on
other networks, in which one type of card is processed as another card type.
By default, Business::CreditCard returns the type the card should be treated as
in the US and Canada. You can change this to return the type the card should
be treated as in a different country by setting $Business::CreditCard::Country
to your two-letter country code. This is probably what you want to determine
if you accept the card, or which merchant agreement it is processed through.
You can also set $Business::CreditCard::Country to a false value such as the
empty string to return the "base" card type. This is probably only
useful for informational purposes when used along with the default type.
Here are the currently known agreements:
- Most Diner's club is now identified as Discover. (This
supercedes the earlier identification of some Diner's club cards as
MasterCard inside the US and Canada.)
- JCB cards in the 3528-3589 range are identified as Discover
inside the US and Canada.
- China Union Pay cards are identified as Discover cards
outside China.
NOTE ON INTENDED PURPOSE¶
This module is for verifying
real world credit cards. It is
NOT a pedantic implementation of the ISO 7812 standard, a
general-purpose LUHN implementation, or intended for use with
"creditcard-like account numbers".
AUTHOR¶
Jon Orwant
The Perl Journal and MIT Media Lab
orwant@tpj.com
Current maintainer is Ivan Kohler <ivan-business-creditcard@420.am>.
Please don't bother Jon with emails about this module.
Lee Lawrence <LeeL@aspin.co.uk>, Neale Banks
<neale@lowendale.com.au> and Max Becker <Max.Becker@firstgate.com>
contributed support for additional card types. Lee also contributed a working
test.pl. Alexandr Ciornii <alexchorny@gmail.com> contributed code
cleanups.
COPYRIGHT AND LICENSE¶
Copyright (C) 1995,1996,1997 Jon Orwant Copyright (C) 2001-2006 Ivan Kohler
Copyright (C) 2007-2009 Freeside Internet Services, Inc.
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself, either Perl version 5.8.8 or, at your option,
any later version of Perl 5 you may have available.
SEE ALSO¶
Business::CreditCard::Object is a wrapper around Business::CreditCard providing
an OO interface. Assistance integrating this into the base
Business::CreditCard distribution is welcome.
Business::OnlinePayment is a framework for processing online payments including
modules for various payment gateways.