The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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: "MasterCard", "VISA", and so on. My list is not complete; I welcome additions.

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 what its balance is, you need a Merchant ID, which gives you access to credit card databases. The Perl Journal (http://work.media.mit.edu/tpj) has a Merchant ID so that I can accept MasterCard and VISA payments; it comes with the little pushbutton/slide-your-card-through device you've seen in restaurants and stores. That device calculates the checksum for you, so I don't actually use this module.

These subroutines will also work if you provide the arguments as numbers instead of strings, e.g. validate(5276440065421319).

To install this module, change directories to wherever your system keeps Perl modules (e.g. /usr/local/lib/perl5) and create a Business directory if there's isn't one already. Then copy this file there. That's it!

AUTHOR

Jon Orwant

MIT Media Lab

orwant@media.mit.edu