The example in this article describes the php implementation used to verify all types of credit card classes. Share it with everyone for your reference. The details are as follows:
This php class is relatively complete and can be used to verify various credit cards. It verifies the general rules of credit card numbers and also performs targeted identification of different types of credit cards.
The code accepts a credit card number and expiration date and returns TRUE if both are valid, otherwise it returns FALSE.
This plug-in accepts the following parameters:
$number represents a string of credit card numbers
$expiry Credit card expiration date, in the format of 07/12 or 0712
<?php // Plug-in 32: Validate Credit Card // This is an executable example with additional code supplied // To obtain just the plug-ins please click on the Download link $card = "4567 1234 5678 9101"; $exp = "06/11"; echo "Validating: $card : $exp<br>"; $result = PIPHP_ValidateCC($card, $exp); if ($result != FALSE) echo "Card Validated"; else echo "Card did not validate"; function PIPHP_ValidateCC($number, $expiry) { // Plug-in 32: Validate Credit Card // // This plug-in accepts a credit card number and // an expiry date and returns TRUE or FALSE, // depending on whether the details pass date // and checksum validation. The arguments required // are: // // $number: Credit Card Number // $expiry: Expiry date in the form: // 07/12 or 0712 (for July, 2012) $number = preg_replace('/[^\d]/', '', $number); $expiry = preg_replace('/[^\d]/', '', $expiry); $left = substr($number, 0, 4); $cclen = strlen($number); $chksum = 0; // Diners Club if (($left >= 3000) && ($left <= 3059) || ($left >= 3600) && ($left <= 3699) || ($left >= 3800) && ($left <= 3889)) if ($cclen != 14) return FALSE; // JCB if (($left >= 3088) && ($left <= 3094) || ($left >= 3096) && ($left <= 3102) || ($left >= 3112) && ($left <= 3120) || ($left >= 3158) && ($left <= 3159) || ($left >= 3337) && ($left <= 3349) || ($left >= 3528) && ($left <= 3589)) if ($cclen != 16) return FALSE; // American Express elseif (($left >= 3400) && ($left <= 3499) || ($left >= 3700) && ($left <= 3799)) if ($cclen != 15) return FALSE; // Carte Blanche elseif (($left >= 3890) && ($left <= 3899)) if ($cclen != 14) return FALSE; // Visa elseif (($left >= 4000) && ($left <= 4999)) if ($cclen != 13 && $cclen != 16) return FALSE; // MasterCard elseif (($left >= 5100) && ($left <= 5599)) if ($cclen != 16) return FALSE; // Australian BankCard elseif ($left == 5610) if ($cclen != 16) return FALSE; // Discover elseif ($left == 6011) if ($cclen != 16) return FALSE; // Unknown else return FALSE; for ($j = 1 - ($cclen % 2); $j < $cclen; $j += 2) $chksum += substr($number, $j, 1); for ($j = $cclen % 2; $j < $cclen; $j += 2) { $d = substr($number, $j, 1) * 2; $chksum += $d < 10 ? $d : $d - 9; } if ($chksum % 10 != 0) return FALSE; if (mktime(0, 0, 0, substr($expiry, 0, 2), date("t"), substr($expiry, 2, 2)) < time()) return FALSE; return TRUE; } ?>
I hope this article will be helpful to everyone’s PHP programming design.