Obtenir un Carte de Crédit Visa Gratuits 2019
Obtenir un Carte de Crédit Visa Gratuits 2019

Comment Détecter le Type de Carte de Crédit

Posted on

La plupart des commerçants font des erreurs en détectant le type de carte de crédit. Il existe de nombreuses bibliothèques de détection de type de carte de crédit disponibles en ligne. Mais ils n’ont aucune référence ou guide qui leur soit attaché. Ainsi, les personnes mal maîtrisées en codage ne peuvent pas utiliser ces bibliothèques.

Dans cet article, nous vous parlerons de la bibliothèque et du processus de détection du type de carte de crédit. Nous discuterons également de l’algorithme de détection de carte, des structures de données et vous fournirons d’autres références.

Comment Détecter le Type de Carte de Crédit

Comment Détecter le Type de Carte de Crédit
Comment Détecter le Type de Carte de Crédit

L’algorithme utilise les six premiers chiffres de votre numéro de carte pour vérifier l’émetteur de carte de crédit ou le type de carte. Vous trouverez ci-dessous une règle simple pour commencer par vérifier le type de carte de crédit.

  • Les numéros de carte de crédit American Express commencent toujours par 3.
  • Les numéros de carte de crédit Visa commencent toujours par le chiffre 4.
  • Les numéros de carte de crédit Diners Club commencent toujours par 3.
  • Les numéros de carte de crédit Discover commencent toujours par 6.
  • Les numéros de cartes de crédit JCB commencent toujours par 3.
  • Les numéros de carte de crédit principale peuvent commencer à 5 ou 2.

Pour les autres émetteurs de cartes de crédit, l’algorithme n’est pas simple. Le deuxième chiffre de la carte de crédit peut dépendre du premier chiffre. La plupart du temps, ces chiffres proviennent d’une plage de nombres disjoints. Par conséquent, il est difficile d’écrire un algorithme général.

Ces règles peuvent également changer si l’émetteur de carte de crédit commence à libérer de nouvelles cartes de crédit. Parfois, les sociétés de cartes de crédit s’associent à d’autres banques. De ce fait, le chiffre de départ du type de carte change avec le temps.

En mettant en œuvre correctement le système de détection, votre formulaire de paiement deviendra plus utilisable. Il deviendra facile pour vous de traiter les paiements. Vous pouvez supprimer le champ du type de carte de crédit à partir de votre site Web. Par conséquent, votre site Web deviendra plus lisse. Si votre site Web dispose d’une excellente interface utilisateur, la détection du type de carte fonctionnera mieux.

Votre site Web indiquera immédiatement les types de cartes de crédit reconnus. Si la carte n’est pas prise en charge, votre site Web enverra une demande négative. Ainsi, votre client apprendra que la carte n’est pas utilisable sur votre site Web. Cela permettra à votre client de gagner du temps car il ne perdra pas de temps à saisir les détails de la carte.

Liste complète des types de cartes de crédit

Vous trouverez ci-dessous la liste complète des types de cartes de crédit et leurs préfixes de numéros de cartes. Vous pouvez mettre cette page en favori en raison de ses mises à jour fréquentes:

Réseau émetteurPréfixe du numéro de carteStatut
American Express (AmEx) 34, 37 Active
China T-Union 31Active
China UnionPay 62, 88 Active
Dankort5019Active
Diners Club International (DCI) 300-305, 309, 36, 38-39 Active
Discover Card 6011, 622126-622925, 644-649, 65 Active
InterPayment 636 Active
InstaPayment 637-639 Active
Japan Credit Bureau (JCB) 3528-3589 Active
Maestro 5018, 5020, 5038, 5612, 5893, 6304, 6759, 6761, 6762, 6763, 0604, 6390 Active
MasterCard 2221-2720, 51-55 Active
RuPay60, 6521, 6522 Active
UATP1Active
Verve506099–506198, 650002–650027 Active
Visa Electron 4026, 417500, 4405, 4508, 4844, 4913, 4917 Active
Visa4Active
Bankcard5610, 560221–560225 Inactive
enRoute2014, 2149 Inactive
Laser 6304, 6706, 6771, 6709 Inactive
Solo6334, 6767 Inactive
Switch4903, 4905, 4911, 4936, 564182, 633110, 6333, 6759 Inactive

Vérifiez (Voici Comment Vérifier si la Carte de Crédit est Active en Ligne 2019) si vous souhaitez valider certaines cartes de crédit. C’est gratuit pour l’instant. N’hésitez pas à créditer cette page si vous utilisez la date récente ci-dessus. Le lien ci-dessous

Carte de crédit Expressions régulières

La plupart des bibliothèques Javascript en ligne utilisent uniquement des expressions régulières pour vérifier les préfixes des numéros de carte de crédit (Gratuits). Les didacticiels en ligne ne parlent également que d’expressions régulières. Ces expressions ne sont pas bonnes pour vérifier les numéros de cartes qui ont des préfixes dans des plages de numéros.

Si vous souhaitez également inclure les tranches de numéros, le code deviendra très difficile à écrire. La complexité temporelle du programme sera trop longue pour certains vieux ordinateurs. En outre, il est difficile d’écrire et de conserver de tels codes.

Vous trouverez ci-dessous un exemple de code Javascript que vous pouvez utiliser pour détecter les cartes de crédit Discover. Découvrez les cartes de crédit commencent par 65, 622126-622925, 6011 et 644-649.

Code javascript
/^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/

Ce code prend trop de temps lorsque le numéro de carte correspond aux plages 644-649 ou 622126-622925. Ces tranches de numéros sont principalement représentées par des jeux de caractères en Javascript, par exemple. / [1-10] / pour faire correspondre les chiffres de 1 à 10.

Les jeux de caractères ne fonctionnent que pour les plages comportant des variations à un chiffre. Si vous souhaitez comparer un numéro de carte à une plage comprenant plusieurs chiffres, comme 120-920, vous devez le diviser.

Par exemple, vous devez diviser 120-920 en plages telles que 120-129, 130-199, 200-799, 800-899, 900-909 et 910-920. Après cela, vous devez faire correspondre chaque gamme individuellement. En raison de cette division, le code devient très difficile à écrire et à lire.

En raison de ce problème, de nombreux scripts et bibliothèques Javascript n’incluent pas les cartes Discover dans leur code. Ils évitent également les types de cartes de crédit populaires tels que MasterCard et Visa. Si vous ignorez ces types de cartes, votre code sera alors réduit à:

Code javascript
/^(6011|65|64[4-9]|622)/

Ces expressions régulières ont diverses limitations. En raison de ces limitations, il n’est pas facile de détecter tous les types de cartes de crédit. Vous devez écrire un long code difficile à gérer. Le code sans tranches de numéros a l’air très propre. Ainsi, la plupart des gens le copient et le collent sans aucune vérification.

En conséquence, la plupart des structures de données et des algorithmes de détection du type de carte sont incomplets, incorrects et obsolètes.

Meilleur mécanisme de détection de cartes de crédit

Comme nous l’avons déjà vu, l’algorithme de détection de carte n’est pas très optimisé. Au lieu d’utiliser des expressions régulières, vous pouvez utiliser une structure de données spéciale appelée «inversionMap». InversionMap est une structure de données spéciale que vous pouvez vérifier dans la bibliothèque Google Closure.

InversionMap est idéal pour mapper des plages int (entier) à des valeurs int. Ainsi, cette structure de données est parfaite pour le système de détection de carte. Vous pouvez utiliser le même code de détection du type de carte de crédit avec cette structure de données. Le code précédent ressemble à ceci dans la structure de données inversionMap:

Code javascript
var cardTypes = { mastercard: [ [2221, 2720], [51, 55] ], visa: […] }

Vous pouvez utiliser ce code pour vérifier les plages de numéros de cartes de crédit Mastercard, VISA, etc. Comparé au code précédent, ce code est très facile à vérifier et à lire. Il est très facile de gérer ce code. Vous pouvez facilement mettre à jour les tranches de numéros dans ce code. Parfois, les plages de numéros de la carte de crédit peuvent changer.

Par exemple, la plage de numéros des cartes de crédit Discover et China UnionPay ont obtenu une nouvelle plage de numéros après leur partenariat. Beaucoup de vieilles bibliothèques n’ont pas mis à jour la nouvelle gamme de cartes de crédit Discover. Il est très difficile d’écrire et de mettre à jour des expressions régulières. Ainsi, la plupart des codeurs ne modifient pas les codes d’expression régulière.

Vous pouvez facilement convertir ces codes en un système complet de détection de carte de crédit. Tout ce que vous avez à faire est de combiner ce code avec la structure de données de carte d’inversion. Tout d’abord, vous devez créer une carte d’inversion vide. Après cela, vous devez insérer des plages individuelles dans votre carte d’inversion.

Vous pouvez insérer de nouvelles plages à l’aide de la méthode SpliceInversion. Après avoir ajouté toutes les plages dans InversionMap, vous pouvez l’interroger avec les numéros de carte. Vous devez utiliser la méthode at pour effectuer toute requête.

L’utilisation de la structure de données de carte d’inversion dans votre code présente un inconvénient. Vous devez écrire plus de code par rapport au code des expressions régulières. Après avoir compressé tout le code, la taille du fichier ne sera que de 1,2 ko.

Pour atteindre une taille aussi petite, vous pouvez utiliser le mode de compilation avancé de Google que vous pouvez trouver dans la bibliothèque Google Closure. Cet outil supprimera automatiquement le code inaccessible.

Algorithme de détection du type de carte crédit sans support de bibliothèque externe

Par la définition complète du tableau de type de carte ci-dessus, vous pouvez avoir une structure de données comme celle-ci.

Code javascript

var cardTypeRanges = {
‘American Express’ : « 34,37 »,
‘China T-Union’ : « 31 »,
‘China UnionPay’ : « 62,88 »,
‘Dankort’ : « 5019 »,
‘DCI’ : « 300-305,309,36,38-39 »,
‘Discover’ : « 6011,622126-622925,644-649,65 »,
‘InterPayment’ : « 636 »,
‘InstaPayment’ : « 637-639 »,
‘JCB’ : « 3528-3589 »,
‘Maestro’ : « 5018,5020,5038,5612,5893,6304,6759,6761,6762,6763,0604,6390 »,
‘Mastercard’ : « 2221-2720,51-55 »,
‘RuPay’ : « 60,6521,6522 »,
‘UATP’ : « 1 »,
‘Verve’ : « 506099-506198,650002-650027 »,
‘Visa’ : « 4 »
};

Cette définition de cardTypeRanges est facile à comprendre et correspond au tableau de données HTML des préfixes de type de carte ci-dessus.

L’étape suivante consiste à obtenir une entrée de carte de crédit. Supprime tous les espaces blancs car l’entrée peut avoir des espaces. Et comparez ce numéro de carte d’entrée à cet objet cardTypeRanges pour déterminer le réseau de cartes auquel l’entrée appartient.

Il y a plusieurs façons de le faire. L’un des meilleurs moyens consiste à transformer cardTypeRanges en un tableau trié par ordre décroissant de plages de préfixes à comparer avec le nombre saisi.

Qu’est-il arrivé de ne pas trié? La raison pour laquelle nous devons le trier afin qu’il corresponde correctement. Par exemple, un numéro de carte commençant par 622126 peut appartenir à China UnionPay ou à Discover. Désormais, si notre tableau nouvellement créé n’est pas trié, la fonction peut comparer l’entrée 622126xxx à la définition de la plage China UnionPay et renvoyer China UnionPay en tant que résultat. Cependant, cela est faux, car Discover doit détecter plus de chiffres.

Code javascript

var sortedCardTypeRanges = [];
function transform() {
//load sortedCardTypeRanges
for (var key in cardTypeRanges) {
sortedCardTypeRanges.push(cardTypeRanges[key] + ‘|’ + key);
}
//sort sortedCardTypeRanges
for (var i = 0; i < sortedCardTypeRanges.length – 1; i++) {
for (var j = i + 1; j < sortedCardTypeRanges.length; j++) {
var x = sortedCardTypeRanges[i].split(‘|’)[0]; if (x.indexOf(‘-‘) > 0) x = x.split(‘-‘)[0];
var y = sortedCardTypeRanges[j].split(‘|’)[0]; if (y.indexOf(‘-‘) > 0) y = y.split(‘-‘)[0];
if (y.length > x.length)
[sortedCardTypeRanges[i], sortedCardTypeRanges[j]] = [sortedCardTypeRanges[j], sortedCardTypeRanges[i]];
}
}
}

Le tableau nouvellement créé devrait ressembler à ceci

Code javascript

var sortedCardTypeRanges = [
‘650002-650027|Verve’,
‘622126-622925|Discover’,
‘506099-506198|Verve’,
’31|China T-Union’,
…,
‘1|UATP’
]

Ensuite, il nous suffit de parcourir le tableau ci-dessus pour voir si le numéro de carte fourni correspond à la plage de préfixes (pour Ex: 650002-650027) ou à un préfixe (pour Ex: 31). Nous devrions casser la boucle immédiatement après avoir trouvé et renvoyer le nom du réseau.

Pour comparer avec une plage de préfixes, nous utilisons une comparaison supérieure ou égale et inférieure ou égale, alors que sa fonction consiste seulement à « contenir » ou à une fonction « indexOf (x) == 0 » pour une correspondance de préfixe unique.

La fonction de type de carte obtenir en comparant le numéro de carte de crédit entré avec la liste triée que nous avons

Code javascript

//cc: card number input
function getCardType(cc) {
var cardType;
for (var i = 0; i < sortedCardTypeRanges.length – 1; i++) {
var oAr = sortedCardTypeRanges[i].split(‘|’);
if (oAr[0].indexOf(‘-‘) > 0) {
var arr = oAr[0].split(‘-‘), tmp = cc.substring(0, arr[0].length);
if (tmp >= arr[0] && tmp <= arr[1]) {
cardType = oAr[1];
break;
}
} else {
if (cc.indexOf(oAr[0]) == 0) {
cardType = oAr[1];
break;
}
}
}
return cardType;
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *