CreditCardRules
in package
Class CreditCardRules
Provides validation methods for common credit-card inputs.
Tags
Table of Contents
Properties
- $cards : array<string|int, mixed>
- The cards that we support, with the defining details:
Methods
- valid_cc_number() : bool
- Verifies that a credit card number is valid and matches the known formats for a wide number of credit card types. This does not verify that the card is a valid card, only that the number is formatted correctly.
- isValidLuhn() : bool
- Checks the given number to see if the number passing a Luhn check.
Properties
$cards
The cards that we support, with the defining details:
protected
array<string|int, mixed>
$cards
= [
'American Express' => ['name' => 'amex', 'length' => '15', 'prefixes' => '34,37', 'checkdigit' => true],
'China UnionPay' => ['name' => 'unionpay', 'length' => '16,17,18,19', 'prefixes' => '62', 'checkdigit' => true],
'Dankort' => ['name' => 'dankort', 'length' => '16', 'prefixes' => '5019,4175,4571,4', 'checkdigit' => true],
'DinersClub' => ['name' => 'dinersclub', 'length' => '14,16', 'prefixes' => '300,301,302,303,304,305,309,36,38,39,54,55', 'checkdigit' => true],
'DinersClub CarteBlanche' => ['name' => 'carteblanche', 'length' => '14', 'prefixes' => '300,301,302,303,304,305', 'checkdigit' => true],
'Discover Card' => ['name' => 'discover', 'length' => '16,19', 'prefixes' => '6011,622,644,645,656,647,648,649,65', 'checkdigit' => true],
'InterPayment' => ['name' => 'interpayment', 'length' => '16,17,18,19', 'prefixes' => '4', 'checkdigit' => true],
'JCB' => ['name' => 'jcb', 'length' => '16,17,18,19', 'prefixes' => '352,353,354,355,356,357,358', 'checkdigit' => true],
'Maestro' => ['name' => 'maestro', 'length' => '12,13,14,15,16,18,19', 'prefixes' => '50,56,57,58,59,60,61,62,63,64,65,66,67,68,69', 'checkdigit' => true],
'MasterCard' => ['name' => 'mastercard', 'length' => '16', 'prefixes' => '51,52,53,54,55,22,23,24,25,26,27', 'checkdigit' => true],
'NSPK MIR' => ['name' => 'mir', 'length' => '16', 'prefixes' => '2200,2201,2202,2203,2204', 'checkdigit' => true],
'Troy' => ['name' => 'troy', 'length' => '16', 'prefixes' => '979200,979289', 'checkdigit' => true],
'UATP' => ['name' => 'uatp', 'length' => '15', 'prefixes' => '1', 'checkdigit' => true],
'Verve' => ['name' => 'verve', 'length' => '16,19', 'prefixes' => '506,650', 'checkdigit' => true],
'Visa' => ['name' => 'visa', 'length' => '13,16,19', 'prefixes' => '4', 'checkdigit' => true],
// Canadian Cards
'BMO ABM Card' => ['name' => 'bmoabm', 'length' => '16', 'prefixes' => '500', 'checkdigit' => false],
'CIBC Convenience Card' => ['name' => 'cibc', 'length' => '16', 'prefixes' => '4506', 'checkdigit' => false],
'HSBC Canada Card' => ['name' => 'hsbc', 'length' => '16', 'prefixes' => '56', 'checkdigit' => false],
'Royal Bank of Canada Client Card' => ['name' => 'rbc', 'length' => '16', 'prefixes' => '45', 'checkdigit' => false],
'Scotiabank Scotia Card' => ['name' => 'scotia', 'length' => '16', 'prefixes' => '4536', 'checkdigit' => false],
'TD Canada Trust Access Card' => ['name' => 'tdtrust', 'length' => '16', 'prefixes' => '589297', 'checkdigit' => false],
]
name - The type of card as found in the form. Must match the user's value length - List of possible lengths for the card number prefixes - List of possible prefixes for the card checkdigit - Boolean on whether we should do a modulus10 check on the numbers.
Methods
valid_cc_number()
Verifies that a credit card number is valid and matches the known formats for a wide number of credit card types. This does not verify that the card is a valid card, only that the number is formatted correctly.
public
valid_cc_number(string|null $ccNumber, string $type) : bool
Example: $rules = [ 'cc_num' => 'valid_cc_number[visa]' ];
Parameters
- $ccNumber : string|null
- $type : string
Return values
boolisValidLuhn()
Checks the given number to see if the number passing a Luhn check.
protected
isValidLuhn([string|null $number = null ]) : bool
Parameters
- $number : string|null = null