Kreditkartenüberprüfung mit ASP
Geschrieben von: Christoph Wille Eines der wichtigsten Dinge, die man für eine eCommerce Site benötigt ist die Validierung der eingegebenen Kreditkartennummern. Obwohl nicht jeder Shop online mit einem Payment Gateway zur sofortigen Abbuchung/Validierung verbunden ist, kann man sich dennoch gegen allzu groben Unfug bei der Kreditkartendateneingabe absichern. Das Schöne an Kreditkartennummern ist, daß sie mathematisch in ihrer Gültigkeit berechenbar sind. Zusätzlich kann man aus der Nummer auch herausfinden, um welche Kreditkarte es sich handelt. Es gibt einige Komponenten (sehr viele davon teuer zu bezahlen), die einem diese Aufgabe abnehmen - wozu aber, wenn man es deutlich günstiger haben kann: gratis (aber nicht umsonst). Ich möchte nicht behaupten, den Sourcecode zur Validierung erfunden zu haben - ich habe ihn auf der Entwicklerhomepage von Netscape gefunden (DevEdge - generell sehr empfehlenswert!). Es war ein Client-Side Code in JavaScript; ich habe die Funktionen für Kreditkartenvalidierung herausgeholt, und in eine Datei namens ccfuncs.asp verfrachtet. Der Validierungscode in ccfuncs.aspDie Datei ccfuncs.asp enthält alle Überprüfungsfunktionen. Es sind die originalen Client-Side JavaScript Funktionen, allerdings sind sie jetzt in einem serverseitigen SCRIPT Block für JScript eingeschlossen. Alle Funktionen sind gegenüber den Originalen unverändert. Die folgende Tabelle beschreibt die Funktionen, die in ccfuncs.asp enthalten sind:
Da man in ASP ja Funktionen, die in Sprache A geschrieben sind, von Code aus Sprache B aus aufrufen kann, war das auch schon der ganze Aufwand (Kurzversion: ich kann diese JScript Funktionen in normalen VBScript ASP Seiten verwenden). BeispielkreditkartenZum Testen benötigt man eine Kreditkartennummer. Da ziemlich sicher niemand eine Kreditkarte jeder Marke besitzt, gibt es eine nette Liste von Testnummern, die man zum Überprüfen verwenden kann - auch mit tatsächlichen Payment Gateways:
Überprüfen von KreditkartendatenSo - nun haben wir den Überprüfungscode, sowie einige Kreditkarten zum Herumspielen - jetzt fehlt nur noch das Beispiel, das Kreditkartennummer auch wirklich überprüft. Das folgende Beispiel ist mit Absicht einfach gehalten. Der Benutzer kann in einem Formular eine Kreditkartennummer eingeben, und diese wird dann am Server mit isCreditCard überprüft. Der Code für dieses Beispiel als auch ccfuncs.asp ist im Download dieses Artikels enthalten.
<!-- #include file="ccfuncs.asp" --> <html> <head> <title>Kreditkartenüberprüfung</title> </head> <body bgcolor="#ffffff"> <% strCC = Request.QueryString("cc") If "" = strCC Then strCC = "4111111111111111" %> <h2>Kreditkartencheck in ASP</h2> <form method="get" action="<%=Request.ServerVariables("SCRIPT_NAME")%>"> <input type="text" name="cc" value="<%=strCC%>"> <input type="submit" value="Überprüfen!"> </form> <% If "" <> strCC Then ' wir haben eine Kreditkarte zum Überprüfen erhalten... If Not isCreditCard(strCC) Then Response.Write "Sorry, mit der Karte <b>" & strCC & _ "</b> können Sie nicht zahlen!" Else Response.Write "Die Kreditkarte ist OK!" End If End If %> </body> </html> Der präsentierte Code in dieser ASP Seite ist VBScript, und dieser VBScript Code ruft die in JScript geschriebene Kreditkartenvalidierungsfunktion isCreditCard auf. Dieser einfache Aufruf reicht, um sagen zu können, ob eine Kreditkarte oberflächlich - von der Nummer her - OK ist. Man könnte nun auch noch den Typ der Karte überprüfen - um zu sehen, ob der Kunde die richtige Art ausgewählt hatte. Wichtig ist, daß die Kreditkartenvalidierungsfunktionen Nummern erwarten, die keine Leerzeichen beeinhalten (sonst werden auch gültige Karten als falsch deklariert). Um diese "Kleinigkeit" muß man sich vorher noch selbst kümmern - entweder indem man einen Fehler ausgibt, wenn man ein Leerzeichen findet, oder still und leise alle Leerzeichen löscht. Ich persönlich würde zu erster Vorgangsweise tendieren. SchlußbemerkungIch möchte an dieser Stelle nochmals betonen, daß die Überprüfung, wie sie in diesem Artikel präsentiert wurde, nur die Plausibilität der Nummer kontrolliert (das aber 100%ig). Ob die Karte tatsächlich ausgeben wurde, oder wie es um die Bonität des Besitzers steht, kann nur ein Payment Gateway beantworten. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Keine gefakten Bestellungen mehr! Links zu anderen Sites
JavaScript Form Validation Sample Code Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |