CreditCardZend_Validate_CreditCard erlaubt es zu prüfen ob ein angegebener
Wert eine Kreditkarten Nummer sein könnte.
Eine Kreditkarte enthält verschiedene Elemente an Metadaten, inklusive ein Hologramm, die
Accountnummer, Logo, Ablaufdatum, Sicherheitscode und den Namen des Kreditkartenbesitzers.
Die Algorithmen für die Prüfung der Kombination an Metadaten sind nur der ausgebenden
Firma bekannt, und sollten mit Ihnen zum Zwecke der Zahlung geprüft werden. Trotzdem ist es
oft nützlich zu wissen ob eine akutell angegebene Nummer in den Bereich der möglichen
Nummern fällt bevor so eine Überprüfung durchgeführt wird, und daher
prüft Zend_Validate_CreditCard einfach ob die angegebene
Kreditkartennummer entspricht.
Für die Fälle in denen man ein Service hat, das tiefere Prüfungen durchführt, bietet
Zend_Validate_CreditCard auch die Möglichkeit einen Service
Callback anzuhängen der ausgeführt wird sobald die Kreditkartennummer vorbehaltlich als
gültig geprüft wurde; dieser Callback wird dann ausgeführt, und sein Rückgabewert wird
die komplette Gültigkeit erkennen.
Die folgenden Kreditkarteninstitute werden akzeptiert:
American ExpressChina UnionPayDiners Club Card BlancheDiners Club InternationalDiners Club US & CanadaDiscover CardJCBLaserMaestroMasterCardSoloVisaVisa ElectronUngültige Institute
Die Institute Bankcard und Diners Club
enRoute existieren nicht mehr. Deshalb werden Sie als ungültig erkannt.
Switch wurde zu Visa umbenannt und wird daher
auch als ungültig erkannt.
Unterstützte Optionen für Zend_Validate_CreditCard
Die folgenden Optionen werden für Zend_Validate_CreditCard
unterstützt:
service: Ein Callback zu einem Online
Service welcher zusätzlich für die Prüfung verwendet wird.
type: Der Typ der Kreditkarte der
geprüft werden soll. Siehe die folgende Liste an Instituten für Details.
Grundsätzliche Verwendung
Es gibt verschiedene Kreditkarten Institute wie mit
Zend_Validate_CreditCard geprüft werden können. Standardmäßig
werden alle bekannte Institute akzeptiert. Siehe das folgende Beispiel:
isValid($input)) {
// Die Eingabe scheint gültig zu sein
} else {
// Die Eingabe ist ungültig
}
]]>
Das oben stehende Beispiel würde alle bekannten Kreditkarten Institute als gültig
erkennen.
Definierte Kreditkarte akzeptieren
Manchmal ist es notwendig nur definierte Kreditkarten Institute zu akzeptieren statt
alle; z.B wenn man einen Webshop hat der nur Visa und American Express Karten
akzeptiert. Zend_Validate_CreditCard erlaubt einem exakt das zu
tun, indem auf genau diese Institute limitiert wird.
Um ein Limit zu verwenden kann man entweder spezifische Institute bei der Initiierung
angeben, oder im nachhinein durch Verwendung von setType().
Jede kann verschiedene Argumente verwenden.
Man kann ein einzelnes Institut angeben:
Wenn man mehrere Institute erlauben will, dann kann man diese als Array angeben:
Wie bei allen Prüfern kann man auch ein assoziatives Array an Optionen oder eine
Instanz von Zend_Config angeben. In diesem Fall muß man die
Institute mit dem Arrayschlüssel type angeben wie hier simuliert:
array(Zend_Validate_CreditCard::AMERICAN_EXPRESS)
));
]]>
Konstanten für Kreditkarten InstituteInstitutKonstanteAmerican ExpressAMERICAN_EXPRESSChina UnionPayUNIONPAYDiners Club Card BlancheDINERS_CLUBDiners Club InternationalDINERS_CLUBDiners Club US & CanadaDINERS_CLUB_USDiscover CardDISCOVERJCBJCBLaserLASERMaestroMAESTROMasterCardMASTERCARDSoloSOLOVisaVISAVisa ElectronVISA
Man kann Institute auch im Nachhinein setzen oder hinzufügen indem die Methoden
setType(), addType() und
getType() verwendet werden.
setType(array(
Zend_Validate_CreditCard::AMERICAN_EXPRESS,
Zend_Validate_CreditCard::VISA
));
]]>Standard Institute
Wenn bei der Initiierung kein Institut angegeben wird, dann wird
ALL verwendet, welches alle Institute auf einmal verwendet.
In diesem Fall ist die Verwendung von addType() sinnlos
weil bereits alle Institute hinzugefügt wurden.
Prüfung durch Verwendung einer fremden API
Wie vorher erwähnt prüft Zend_Validate_CreditCard nur die
Kreditkarten Nummer. Glücklicherweise bieten einige Institute online
APIs welche eine Kreditkarten Nummer durch Verwendung von Algorithmen
prüfen kann, welche nicht öffentlich bekannt sind. Die meisten dieser Services sind zu
bezahlen. Deshalb ist diese Art der Prüfung standardmäßig deaktiviert.
Wenn man auf so eine API zugreift, kann man diese als Addon für
Zend_Validate_CreditCard verwenden um die Sicherheit der
Prüfung zu erhöhen.
Um das zu tun muss man einfach einen Callback angeben der aufgerufen wird wenn die
generische Prüfung erfolgreich war. Das verhindert das die API für
ungültige Nummern aufgerufen wird, was wiederum die Performance der Anwendung erhöht.
setService() setzt ein neues Service und
getService() gibt das gesetzte Service zurück. Als
Option für die Konfiguration kann man den Arrayschlüssel 'service'
bei der Initiierung verwenden. Für Details über mögliche Optionen kann man unter
Callback nachsehen.
setService(array($service, 'checkOnline'));
]]>
Wie man sieht wird die Callback Methode mit der Kreditkarten Nummer als erster Parameter
aufgerufen, und die akzeptierten Typen als zweiter Parameter.