NAME

Data::Transpose::Validator::CreditCard - Validator for CC numbers

SYNOPSIS

From inside Data::Transpose::Validator

$dtv->prepare(
              cc_number => {
                            validator => {
                                          class => 'CreditCard',
                                          options => {
                                                      types => [ "visa card",
                                                                "mastercard",
                                                                "American Express card",
                                                                "Discover card" ],
                                                      country => 'DE',
                                                     },
                                         },
                            required => 1,
                           },
              cc_month => {
                           validator => {
                                         class => 'NumericRange',
                                         options => {
                                                     min => 1,
                                                     max => 12,
                                                    },
                                        },
                           required => 1,
                          },
              cc_year => {
                          validator => {
                                        class => 'NumericRange',
                                        options => {
                                                    min => 2013,
                                                    max => 2023,
                                                   },
                                       },
                          required => 1,
                         }
             );
my $form = {
            cc_number => ' 4111111111111111 ',
            cc_month => '12',
            cc_year => '2014',
           };

my $clean = $dtv->transpose($form);

ok($clean, "validation ok");

Or, as stand-alone module:

my $v = Data::Transpose::Validator::CreditCard->new(country => 'DE',
                                                    types => ["visa card",
                                                              "mastercard"]);
ok($v->is_valid("4111111111111111"));
ok(!$v->is_valid("4111111111111112"));

DESCRIPTION

This module wraps Business::CreditCard to validate a credit card number.

new(country => 'de', types => ['VISA card', 'MasterCard', ... ])

Constructor. The options as the following:

country

Two letters country code (for card type detection purposes). Defaults to "US" (as per Business::CreditCard defaults).

types

List of accepted CC type. The string is case insensitive, but must match the following recognized types. It's unclear how much reliable is this, so use with caution. Recognized types:

American Express card
BankCard
China Union Pay
Discover card
Isracard
JCB
Laser
MasterCard
Solo
Switch
VISA card

is_valid

Check with ref if the argument is a valid credit card and return it on success (without whitespace).

test_cc_numbers

For testing (and validation) purposes, this method returns an hashref with the test credit card numbers for each provider (as listed by Business::CreditCard::cardtype()).