Maison  >  Article  >  développement back-end  >  PHP implémente les principes de tous les types de vérification de carte de crédit

PHP implémente les principes de tous les types de vérification de carte de crédit

墨辰丷
墨辰丷original
2018-06-12 10:01:402201parcourir

Cet article présente principalement l'implémentation PHP pour vérifier tous les types de classes de cartes de crédit. Il analyse les principes de mise en œuvre et les techniques d'utilisation associées des classes de cartes de crédit avec des exemples. Il a une certaine valeur de référence. >

L'exemple de cet article décrit l'implémentation PHP pour vérifier tous les types de classes de cartes de crédit. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Cette classe php est relativement complète et peut être utilisée pour vérifier diverses cartes de crédit. Elle vérifie les règles générales des numéros de carte de crédit et effectue également une identification ciblée des différents types de cartes de crédit.

Le code accepte un numéro de carte de crédit et une date d'expiration, et renvoie VRAI si les deux sont valides, sinon il renvoie FAUX.

Ce plug-in accepte les paramètres suivants :

$number représente une chaîne de numéros de carte bancaire
$expiry La date d'expiration de la carte bancaire, au format 07/12 ou 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(&#39;/[^\d]/&#39;, &#39;&#39;, $number);
  $expiry = preg_replace(&#39;/[^\d]/&#39;, &#39;&#39;, $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;
}
?>

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Définition et utilisation de la fonction curl_setopt en PHP

Brève description de la base de données de requêtes php pour renvoyer des données json

Brève description des classes PHP pour faire fonctionner la base de données MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn