Sollte ich das CreditCardAttribute zur Validierung von Kreditkartennummern verwenden?

8

Sollte ich Microsofts CreditCardAttribute um Kreditkartennummern wie folgt zu validieren?

%Vor%

Oder sollte ich das Zahlungsgateway damit umgehen lassen oder etwas anderes tun? Ich frage dies nach der Entdeckung einige Kunden waren nicht in der Lage, Zahlung mit ihren Kreditkarteninformationen vorzulegen. Glücklicherweise konnte ich mit einem dieser Kunden zusammenarbeiten und stellte fest, dass die Visa-Karte nach dem Entfernen von CreditCardAttribute problemlos verarbeitet wurde.

Teilweise ist diese Frage rhetorisch, aber ich würde gern von den Gedanken und Erfahrungen anderer Entwickler profitieren und andere Entwickler auf die Risiken der Verwendung von CreditCardAttribute aufmerksam machen, indem ich die Frage stelle.

    
Jeremy Cook 27.04.2015, 15:20
quelle

2 Antworten

3

Ich denke, der beste Weg, dies herauszufinden, besteht darin, es einfach zu testen:

%Vor%

Die IsValid-Methode stammt aus der ursprünglichen Klasse C # CreditCardAttribute . 1 von 12 Nummern ist fehlgeschlagen:

%Vor%

Also, sollten Sie es benutzen? Nein, offensichtlich erkennt es nicht alle Nummern. Obwohl Sie ihren Code nehmen und verbessern können!

    
Jevgeni Geurtsen 27.04.2015 15:38
quelle
1

Im Code hinter der Kreditkarte attribute , es führt einfach ein Luhn überprüfen.

Alle Zahlungskarten (*) folgen derzeit dem Standard ISO / IEC / 7812 mit einer Prüfziffer als letzte Ziffer.

Dieser Luhn-Check wird einfach dazu verwendet, um Transpositionsfehler zu vermeiden. Es ist nützlich, um eine Plausibilitätsprüfung durchzuführen, bevor Kartennummern an ein Zahlungs-Gateway gesendet werden, aber nicht geeignet, um absolut zu überprüfen, ob eine Nummer eine gültige Kartennummer ist.

Gültige Kartennummernbereiche ändern sich monatlich, und die einzige Möglichkeit, eine Nummer absolut zu verifizieren, besteht darin, sie über ein Zahlungsgateway zu validieren. Wenn nur versucht wird, eine Karte zu validieren (anstatt sie zu laden), sollte dies mit einer Null-Wert-Prüfung nur für Autorisierung durchgeführt werden.

(*) Die einzige Ausnahme ist ein Kartentyp in China, der als China UnionPay bekannt ist  (Historisch gab es auch eine Diners Club 'enRoute' Marke, die 1992 zurückgezogen wurde)

    
PaulG 27.04.2015 16:31
quelle