Accueil > > > VALIDATION DE CARTE DE CREDIT
VALIDATION DE CARTE DE CREDIT
Information sur la source
Description
Entrer le numero de carte de credit et le type de carte de credit et ce code vous diras si il est possible qu'une carte de credit d'un certain type est possible pour le numero donné. Input: type, numero Output: True ou False
Source
- function cc_validate($cc_num, $cc_type) {
- $mc_mask = array(1 => '51', 2 => '52', 3 => '53', 4 => '54', 5 => '55');
- $mc_len = array(1 => 16);
- $visa_mask = array(1 => '4');
- $visa_len = array(1 => 13, 2 => 16);
- $amex_mask = array(1 => '34', 2 => '37');
- $amex_len = array(1 => 15);
- $disc_mask = array(1 => '6001');
- $disc_len = array(1 => 16);
- $jcb_mask = array(1 => '3', 2 => '1800', 3 => '2131');
- $jcb_len = array(1 => 15, 2 => 16);
-
- $cc_mask = array();
- $cc_len = array();
- $cc_valid = false;
-
- /* STEP 1 VALIDER LEN + PREFIX */
- switch ($cc_type) {
- case 'mc':
- $cc_mask = $mc_mask;
- $cc_len = $mc_len;
- break;
- case 'visa':
- $cc_mask = $visa_mask;
- $cc_len = $visa_len;
- break;
- case 'amex':
- $cc_mask = $amex_mask;
- $cc_len = $amex_len;
- break;
- case 'disc':
- $cc_mask = $disc_mask;
- $cc_len = $disc_len;
- break;
- case 'jcb':
- $cc_mask = $jcb_mask;
- $cc_len = $jcb_len;
- break;
- default:
- die('Error, please go back');
- }
- $i = 1;
- while ((isset($cc_mask[$i]))&&(!empty($cc_mask[$i]))&&(!$cc_valid)) {
- $l = strlen($cc_mask[$i]);
- $cc_valid = (substr($cc_num, 0, $l)==$cc_mask[$i]);
- $i++;
- }
- if (!$cc_valid) { return false; }
- $i = 1; $cc_valid = false;
- while ((isset($cc_len[$i]))&&(!empty($cc_len[$i]))&&(!$cc_valid)) {
- $cc_valid = (strlen($cc_num)==$cc_len[$i]);
- $i++;
- }
- if (!$cc_valid) { return false; }
- $cc_valid = false;
-
- /* STEP 2 DOUBLE CHAQUES 2 DE 2 ET CHECK MOD 10 */
- $cc_num = strrev($cc_num);
-
- $num_sum = "";
- for($i = 0; $i < strlen($cc_num); $i++) {
- $cur_num = substr($cc_num, $i, 1);
-
- if($i % 2 == 1) {
- $cur_num *= 2;
- } if($cur_num > 9) {
- $f_num = $cur_num % 10;
- $s_num = ($cur_num - $f_num) / 10;
- $cur_num = $f_num + $s_num;
- }
- $num_sum += $cur_num;
- }
- $cc_valid = ($num_sum % 10 == 0);
- return $cc_valid;
- }
- ?>
function cc_validate($cc_num, $cc_type) {
$mc_mask = array(1 => '51', 2 => '52', 3 => '53', 4 => '54', 5 => '55');
$mc_len = array(1 => 16);
$visa_mask = array(1 => '4');
$visa_len = array(1 => 13, 2 => 16);
$amex_mask = array(1 => '34', 2 => '37');
$amex_len = array(1 => 15);
$disc_mask = array(1 => '6001');
$disc_len = array(1 => 16);
$jcb_mask = array(1 => '3', 2 => '1800', 3 => '2131');
$jcb_len = array(1 => 15, 2 => 16);
$cc_mask = array();
$cc_len = array();
$cc_valid = false;
/* STEP 1 VALIDER LEN + PREFIX */
switch ($cc_type) {
case 'mc':
$cc_mask = $mc_mask;
$cc_len = $mc_len;
break;
case 'visa':
$cc_mask = $visa_mask;
$cc_len = $visa_len;
break;
case 'amex':
$cc_mask = $amex_mask;
$cc_len = $amex_len;
break;
case 'disc':
$cc_mask = $disc_mask;
$cc_len = $disc_len;
break;
case 'jcb':
$cc_mask = $jcb_mask;
$cc_len = $jcb_len;
break;
default:
die('Error, please go back');
}
$i = 1;
while ((isset($cc_mask[$i]))&&(!empty($cc_mask[$i]))&&(!$cc_valid)) {
$l = strlen($cc_mask[$i]);
$cc_valid = (substr($cc_num, 0, $l)==$cc_mask[$i]);
$i++;
}
if (!$cc_valid) { return false; }
$i = 1; $cc_valid = false;
while ((isset($cc_len[$i]))&&(!empty($cc_len[$i]))&&(!$cc_valid)) {
$cc_valid = (strlen($cc_num)==$cc_len[$i]);
$i++;
}
if (!$cc_valid) { return false; }
$cc_valid = false;
/* STEP 2 DOUBLE CHAQUES 2 DE 2 ET CHECK MOD 10 */
$cc_num = strrev($cc_num);
$num_sum = "";
for($i = 0; $i < strlen($cc_num); $i++) {
$cur_num = substr($cc_num, $i, 1);
if($i % 2 == 1) {
$cur_num *= 2;
} if($cur_num > 9) {
$f_num = $cur_num % 10;
$s_num = ($cur_num - $f_num) / 10;
$cur_num = $f_num + $s_num;
}
$num_sum += $cur_num;
}
$cc_valid = ($num_sum % 10 == 0);
return $cc_valid;
}
?>
Conclusion
Ce code fonctionne pour Master Card, Visa, American Express, Discovery, JCB (japon).
Il est relativement facile d'ajouter d'autre type de cartes, mais pour ce faire il est important de comprendre le code.
J'espere que vous aimerez.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
CARTE-MERE.COM RECRUTE UN PROGRAMMEUR PHP [ par uSeSoAp ]
Bonjour,Tout est dans le titre du topic... Le topic principal de cette appel se trouve <a href="http://www.presence-pc.com/sqlforum/forum2.php3?post=4
Validation de données [ par must ]
Salut,j'ai une idée,mais comment la realiserVoudrais faire un livre d'or,mais controle des messages entrésComment faire pour controler les données sai
Prob de redirection et validation [ par LeManchot ]
Voila jai encoren un souci:jai un formulaire que je valide via un bouton (pr linstant ok) mais par ce meme bouton je dois rediriger la page ou se toru
Systeme de carte virtuelle [ par must ]
Salut aimerais faire un systeme de carte virtuelle,c'est a dire,prposer images de ma collection,qu'on puisse envoyer message persoCréer un numero d'id
2 petits problemes de formulaire [ par doxid ]
voila mon code<select name="carte"><?phpinclude('connectbase.php');$cartelist = mysql_query('SELECT carte FROM essaie WHERE site = 1;') or di
validation de courriel [ par luciano12 ]
Bonjour,J'aurais besoin de votre aide pour m'aider à faire la chose suivante:Je voudrais que les visiteurs qui visitent mon site Intenret puissent rem
Prob Debutant - Validation d'1 formulaire par Menu Déroulant . [ par marcooo ]
Bonjour a tous .J'esplique le problème ... Tout d'abord je tien a dire ke je débute dans le PHP/MySQL.Alors voila, je voudrai créer une sorte de moteu
validation mail [ par meth06 ]
Bonjour, je cherche a faire une validation d'un mail mais pas la simple validation avec la verif du @ et du . Je voudrais verifier si l'adresse mail e
menu déroulant sans bouton de validation [ par scoder ]
bonjour,je cherche à faire un menu déroulant que je pourrai utiliser sans bouton de validation, autrement dit simplement en choisissant une valeur de
Probleme de formulaire et de variable a reccuperer ds un case [ par Fantomas33 ]
Bonjour,Sur ma page j'ai un case. L'action par défaut est de valider le formulaire, l'autre cas est l'action voulue. Voici mon code :<? switch($v
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : IMPORT CSVRE : IMPORT CSV par ykhider
Cliquez pour lire la suite par ykhider
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|