mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
33 lines
1.5 KiB
Plaintext
33 lines
1.5 KiB
Plaintext
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).
|