The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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()).