je construis Toolz.dev[TRADUCTION] ?, et avant cela, j'ai passé des années à expédier des plugins WordPress et des API Laravel, dont plusieurs ont dû prendre des paiements Le premier formulaire de paiement que j'ai jamais écrit envoyait chaque numéro de carte mal typé directement à la passerelle de paiement et attendait qu'il rebondisse Cela fonctionnait, techniquement, mais c'était lent et il brûlait les requêtes de la passerelle sur des numéros qui n'auraient jamais pu être valides en premier lieu Le correctif était embarrassant petit : exécutez la somme de contrôle Luhn dans le navigateur avant de soumettre Ce changement a capté la plupart des fautes de frappe instantanément et a arrêté un flux d'appels API inutiles Ce guide concerne ce chèque, les règles de préfixe qui se trouvent à côté, les règles qui se trouvent à côté, et les Validateur de carte de crédit J'ai construit pour que vous n'ayez jamais à réimplémenter non plus de mémoire.
tl;dr : Un validateur de carte de crédit confirme qu'un numéro est structurellement correct, pas qu'il appartient à un compte réel Il exécute deux tests indépendants : la somme de contrôle Luhn de l'ISO/IEC 7812-1, qui capture presque chaque typo à un chiffre et transposition adjacente, et un contrôle de longueur et de préfixe contre chaque réseau' ; les plages d'émetteurs publiées Un numéro peut passer l'un et échouer l'autre, donc les deux résultats sont rapportés séparément Il fonctionne entièrement dans votre navigateur, donc aucun numéro de carte n'est jamais téléchargé, et il ne peut jamais vous dire si une carte a de l'argent dessus Seul l'émetteur sait que.
Que signifie la validité d'un numéro de carte ?
Un numéro de carte de paiement, formellement un numéro de compte principal ou PAN, n'est pas une chaîne aléatoire de chiffres Sa structure est définie par ISO/CEI 7812. Les six à huit premiers chiffres sont le numéro d'identification de l'émetteur, ou IIN, qui était autrefois appelé numéro d'identification bancaire (BIN).Ces chiffres identifient le réseau et la banque émettrice. Les chiffres suivants jusqu'à l'avant-dernier sont l'identifiant du compte individuel, et le tout dernier chiffre est un chiffre de contrôle calculé avec l'algorithme de Luhn.
Donc " ; valid" ; a deux significations distinctes, et il aide à les séparer Le premier est que le nombre obéit à la somme de contrôle de Luhn, ce qui signifie que le chiffre de contrôle est cohérent avec le reste du nombre La seconde est que le nombre a la bonne longueur et le préfixe pour un réseau de cartes réel Un nombre peut satisfaire une condition et pas l'autre. 4111 1111 1111 1112 a un préfixe Visa et une longueur Visa mais échoue Luhn Une chaîne aléatoire à seize chiffres qui se termine par le chiffre de contrôle droit passe Luhn mais peut commencer par un préfixe qu'aucun réseau ne possède Un bon validateur vous indique lequel des deux a échoué, car le correctif est différent dans chaque cas.
Ce qu'aucun des deux chèques ne peut faire, c'est vous dire que la carte est réelle La validité structurelle concerne la forme du numéro, pas l'état du compte derrière lui Le compte pourrait ne pas exister, pourrait être gelé, pourrait dépasser sa limite, ou pourrait avoir été fermé il y a des années Le seul système qui sait est la banque émettrice, et il répond exactement une fois, lors d'une demande d'autorisation dans une transaction en direct Tout ce qu'un validateur côté navigateur fait est un pré-filtre bon marché qui s'exécute avant que vous n'arriviez jamais à ce point.
Comment fonctionne l'algorithme de Luhn ?
L'algorithme de Luhn, aussi appelé algorithme mod-10, a été breveté par Hans Peter Luhn chez IBM en 1960 et est maintenant dans le domaine public C'est une somme de contrôle, ce qui signifie que tout son but est de détecter les erreurs accidentelles, pas de fournir une sécurité Il fonctionne ainsi Partant du chiffre le plus à droite et se déplaçant à gauche, vous doublez un chiffre sur deux Si le doublement produit un nombre supérieur à neuf, vous en soustrayez neuf (ce qui revient à additionner ses deux chiffres).Puis vous additionnez tous les chiffres, les doublés et les intacts Si le total est divisible par dix, le nombre passe.
Voici le chèque sur 4111 1111 1111 1111[traduction], travaillant de droite à gauche Le chiffre le plus à droite est la position un et n'est pas doublé Doubler chaque chiffre de seconde donne un ensemble de un et deux, les deux provenant des positions doublées Ajoutez-les tous et le total atterrit sur un multiple de dix, donc le nombre passe Changez n'importe quel chiffre et la somme cesse presque toujours d'être un multiple de dix, ce qui est exactement ce qui rend le chèque utile.
La valeur de Luhn est dans ce qu'il attrape Il détecte chaque erreur à un chiffre, c'est-à-dire n'importe quel chiffre mal tapé Il attrape également presque chaque transposition de deux chiffres adjacents, le classique " ; J'ai tapé 21 au lieu de 12" ; erreur, avec une exception connue : il ne capture pas un échange de 09 et 90[TRADUCTION], parce que les deux correspondent à la même somme pondérée C'est un véritable angle mort, mais c'est un point rare, et c'est la raison pour laquelle Luhn est une somme de contrôle plutôt qu'une garantie cryptographique Pour la validation de formulaire, c'est plus que suffisant, et c'est pourquoi il se trouve derrière les champs de carte de pratiquement chaque caisse sur internet.
Comment le réseau de cartes est-il détecté ?
Le réseau est lu à partir des chiffres principaux, l'IIN Chaque réseau possède des plages de préfixes spécifiques, et la plupart restreignent également la longueur totale Le validateur correspond d'abord au préfixe le plus long et le plus spécifique, car certaines plages se chevauchent Voici les plages qu'il vérifie :
| réseau | Commence par | Longueurs valides | Code de sécurité |
|---|---|---|---|
| Visa | 4 | 13, 16, 19 | 3 |
| Mastercard | 51-55, 2221-2720 | 16 | 3 |
| American Express | 34, 37 | 15 | 4 |
| Découvrir | 6011, 65, 644-649, 622126-622925 | 16, 19 | 3 |
| Club des convives | 300-305, 309, 36, 38-39 | 14, 16, 19 | 3 |
| JCB | 3528-3589 | 16-19 | 3 |
| UnionPayer | 62 | 16-19 | 3 |
| Maestro | 50, 56-69 (sélectionné) | 12-19 | 3 |
Les chevauchements sont la partie intéressante, et se tromper est comment naïfs détecteurs ratés d'allumage Mastercard a ajouté le 2221-2720 portée en 2017, donc un détecteur écrit avant signale ces cartes comme inconnues Discover possède une tranche étroite du 62 espace, 622126 par 6229251, tandis qu'UnionPay possède le reste de 62« Donc, l'ordre dans lequel vous les testez décide si a » 6221 la carte se lit comme Discover ou UnionPay Le validateur teste la fenêtre spécifique Discover avant le préfixe large UnionPay afin que les deux atterrissent correctement American Express est celui qui déclenche le code de formatage, car il utilise quinze chiffres regroupés 4-6-5 plutôt que les quatre groupes habituels de quatre, et il utilise un code de sécurité à quatre chiffres (le CID imprimé au recto) plutôt que le CVV à trois chiffres au verso.
Comment utiliser le validateur de carte de crédit
L'outil est volontairement simple Vous collez un numéro et lisez le résultat Il n'y a pas de bouton de soumission et rien à configurer.
Étape 1 : Entrez le numéro
Tapez ou collez le numéro de carte dans le champ Les espaces et les tirets sont ignorés, donc 4111-1111-1111-1111, 4111 1111 1111 1111, et 4111111111111111 tous valident de manière identique. Cela est important car la saisie réelle arrive dans tous les formats : copiée à partir d'une feuille de calcul, lue sur une carte ou tirée d'un appareil de test.
Étape 2 : Lisez le verdict
Le haut du résultat vous indique clairement si le nombre est valide, et s'il ne l'est pas, il nomme la raison En dessous, les deux vérifications sont affichées séparément : si la somme de contrôle de Luhn est passée, et si la longueur correspond au réseau détecté Les voir séparés est le point Un nombre qui passe Luhn mais qui échoue en longueur signifie presque toujours qu'un chiffre a été laissé tomber ou ajouté, alors qu'un nombre qui échoue à Luhn mais a la bonne longueur signifie généralement qu'un chiffre est tout simplement faux.
Étape 3 : Vérifiez le réseau détecté
L'outil montre le réseau qu'il a identifié à partir du préfixe, les longueurs que permet le réseau et la durée de son code de sécurité. Ceci est utile en soi lorsque vous créez un formulaire et souhaitez afficher le bon logo de carte, ou lorsque vous devez savoir s'il faut vous attendre à une CVV à trois ou quatre chiffres.
Étape 4 : Copiez le numéro formaté ou masqué
Vous pouvez copier le numéro regroupé de la façon dont son réseau l'imprime, ou copier une version masquée qui cache chaque chiffre sauf les quatre derniers Le formulaire masqué est celui que vous voulez dans les journaux, les captures d'écran et les tickets d'assistance, car stocker ou afficher un PAN complet est exactement le genre de chose qui cause des problèmes de conformité aux gens.
Où s'adapte la validation, et où s'arrête-t-elle ?
Le cadrage honnête est qu'un validateur est un filtre, pas une porte Il appartient à l'avant d'un processus de rejeter les ordures évidentes à moindre coût, et il ne faut jamais se fier à lui comme preuve de quoi que ce soit en aval Dans un formulaire de paiement, exécuter Luhn côté client vous permet d'indiquer une faute de frappe au moment où l'utilisateur finit de taper, avant qu'ils n'atteignent le paiement, ce qui est une meilleure expérience et sauve un aller-retour condamné à la passerelle Dans un pipeline de données, la validation des champs en forme de carte attrape les rangées corrompues avant qu'elles n'atteignent un système qui va s'étouffer sur elles Dans les suites de test, vous avez besoin de numéros qui passent la validation afin que le formulaire se comporte comme il se comporte la manière qu'il va en production, ce qui est le formulaire est pour.
Ce qu'il ne fait pas, c'est autoriser, et cela vaut la peine d'être franc Un numéro valide n'est pas une carte de travail L'outil ne peut pas vérifier un solde, ne peut pas confirmer que le compte existe et n'a aucun lien avec une banque Il ne peut pas non plus, et ne doit pas, générer des numéros liés à des comptes réels Les numéros d'échantillon qu'il propose sont les valeurs de test standard publiées par les fournisseurs de paiement, qui sont valides pour Luhn et passent les contrôles réseau précisément pour que les développeurs puissent exercer leurs formulaires, mais qui mappent à rien facturable Si vous construisez quelque chose qui touche à des paiements réels, la validation réelle de la porte d'une carte peut être facturée se produit côté serveur via votre processeur de paiement, et les données de jeton ne doivent être polies afin que vos propres systèmes ne stockent jamais une validation de porte d'entrée brute.
Comment cela se compare-t-il à la validation sur le serveur ?
Les deux ont une place, et ils répondent à des questions différentes La validation côté client avec Luhn et les contrôles de préfixe est instantanée et privée, elle donne à l'utilisateur un retour avant qu'il ne soumette, et cela ne vous coûte rien Sa limite est qu'il ne connaît que la validation côté serveur par un processeur de paiement est la seule chose qui peut confirmer une carte est réelle et payable, mais cela coûte une demande réseau, cela peut coûter de l'argent par tentative d'autorisation, et cela arrive après que l'utilisateur s'est engagé à soumettre La conception sensée utilise les deux : le navigateur attrape les fautes de frappe et les erreurs de forme gratuitement, et le serveur fait le seul contrôle qui compte lorsque l'utilisateur paie. Sauter le contrôle du client rend le formulaire lent ; sauter le serveur signifie ne jamais le contrôle vous est validé. Outils de productivité des développeurs roundup couvre les autres services publics qui ont tendance à vivre à côté.
Outils connexes et lectures complémentaires
Un validateur de carte voyage rarement seul Lorsque vous durcissez un formulaire ou un pipeline de données, vous générez généralement également des identifiants, des valeurs de hachage et vérifiez d'autres types d'entrées. Le générateur de hachage est-ce que vous recherchez lorsque vous avez besoin d'une valeur d'empreinte digitale plutôt que de valider sa forme, et le vérificateur de force de mot de passe applique le même " ; mesurez-le dans le navigateur, ne l'envoyez jamais nulle part" ; principe aux informations d'identification. Du côté du réseau, le Calculateur de sous-réseaux IP est l'outil complémentaire pour quiconque construit l'infrastructure sur laquelle un paiement fonctionne.
Pour le contexte plus large, le Protection des données et outils en ligne guide explique pourquoi l'exécution de chèques sensibles est importante du côté du client, et le Guide des outils de codage met le validateur dans le contexte du reste d'un kit quotidien de developer' ; S. Tout sur Toolz.dev s'exécute dans votre navigateur, ce qui est la raison pour laquelle un numéro de carte peut être collé en toute sécurité : il ne quitte jamais votre appareil.
Questions fréquentes
Que vérifie l'algorithme de Luhn ?
L'algorithme de Luhn est une somme de contrôle mod-10 qui vérifie qu'un nombre n'a pas été mal typé Il double un chiffre sur deux à partir de la droite, soustrait neuf de tout résultat supérieur à neuf, additionne tous les chiffres et confirme que le total est divisible par dix Il capture chaque erreur à un chiffre et presque chaque échange de deux chiffres adjacents, mais c'est une somme de contrôle, pas une fonction de sécurité, et il ne peut pas prouver qu'une carte est réelle.
Un numéro valide signifie-t-il que la carte fonctionne ?
N° Un numéro valide signifie seulement que les chiffres sont structurellement corrects, donc la somme de contrôle passe et la longueur correspond au réseau Que le compte existe, ait un solde, ou soit encore actif ne peut être confirmé par l'émetteur de la carte que lors d'une autorisation réelle La validité structurelle est un préfiltre, et non la preuve d'une carte utilisable.
Comment la marque de la carte est-elle détectée à partir du numéro ?
La marque est lue à partir des premiers chiffres, le numéro d'identification de l'émetteur Visa commence par 4, Mastercard avec 51-55 ou 2221-2720, American Express avec 34 ou 37, et ainsi de suite Chaque réseau autorise également seulement certaines longueurs totales, de sorte que le validateur vérifie le préfixe et la longueur ensemble et signale le réseau qu'il a apparié.
Est-il sécuritaire d'entrer un numéro de carte dans cet outil ?
Oui. Le numéro est entièrement traité dans votre navigateur et n'est jamais téléchargé, enregistré ou transmis. Vous pouvez le confirmer en vous déconnectant d'Internet, car le validateur continue de fonctionner sans connexion. Cela dit, vous devez toujours éviter de coller un vrai numéro de carte partout où vous n'en avez pas besoin et préférer les numéros de test publiés pour le développement.
Pourquoi ma vraie carte passe Luhn mais échoue-t-elle au contrôle de longueur ?
Cela signifie généralement qu'un chiffre a été déposé ou ajouté lors de la saisie. La somme de contrôle Luhn peut passer par coïncidence sur un nombre de mauvaise longueur, de sorte que l'outil vérifie la longueur indépendamment par rapport au réseau détecté. Re-entrez le nombre complet et les deux contrôles doivent passer ensemble.
Quels sont les numéros de cartes de test et pourquoi existent-ils ?
Numéros de carte de test tels que 4111 1111 1111 1111 sont publiés par les fournisseurs de paiement afin que les développeurs puissent exercer les formulaires de paiement Ils sont valides Luhn et passent les contrôles réseau afin que le formulaire se comporte exactement comme il le fera en production, mais ils ne correspondent à aucun compte réel et ne peuvent jamais être facturés Ils sont la bonne chose à utiliser partout où vous seriez autrement tenté de taper une vraie carte.
Quelle est la différence entre le CVV et le numéro de carte ?
Le numéro de carte est le numéro de compte principal long qui identifie le compte Le CVV, CVC ou CID est le code de sécurité court, trois chiffres pour la plupart des réseaux et quatre pour American Express, imprimés séparément du numéro. Cet outil valide uniquement le numéro de carte ; il ne vérifie pas le code de sécurité, qui est vérifié par l'émetteur lors d'une transaction.
Ce validateur peut-il générer des cartes de crédit fonctionnelles ?
Non. Il vérifie uniquement les numéros que vous saisissez et n'a aucun moyen de produire un numéro lié à un compte en direct. Les exemples de numéros qu'il propose sont les valeurs de test publiées standard qui n'atteignent aucun compte réel. Générer des numéros pour une carte réelle n'est pas quelque chose qu'un validateur structurel peut faire, et ce n'est pas quelque chose que cet outil tente.



