Sie möchten also online Kreditkarten akzeptieren?

Bis vor kurzem war das Akzeptieren von Kreditkarten auf einer Website teuer und kompliziert. Aber das war vor Stripe: ein radikal anderes und wahnsinnig fantastisches Kreditkartenunternehmen. Heute zeige ich Ihnen, wie Sie innerhalb von 30 Minuten oder weniger mit der Annahme von Karten beginnen können - ohne einen Cent auszugeben.

Erneut veröffentlichtes Tutorial

Alle paar Wochen besuchen wir einige der Lieblingsbeiträge unserer Leser aus der gesamten Geschichte der Website. Dieses Tutorial wurde erstmals im Juni 2012 veröffentlicht.


Die Art, wie die Dinge früher waren

Ohne Stripe ist das Akzeptieren von Kreditkarten auf einer Website ein enormes Unterfangen. Zunächst müssen Sie ein "Händlerkonto" eröffnen, das einem regulären Bankkonto ähnelt, jedoch mit mehr Gebühren verbunden ist. Dann brauchen Sie ein "Payment Gateway" - weil die Kreditkartenabwicklung offenbar in einer separaten Dimension stattfindet, in der Bankiers mit eiserner Faust regieren und Lindsey Lohan eine erfolgreiche Schauspielkarriere hat. Und dann kommen die Blutegel: 25 USD monatliche Gebühr. 99 $ Einrichtungsgebühr. 50 USD Jahresgebühr. 0,35 US-Dollar für fehlgeschlagene Transaktionsgebühr (SIE zahlen, wenn die Karte Ihres Kunden nicht durchgeht!). 0,25 + 2,0% erfolgreiche Transaktionsgebühr. 2,00 Batchgebühr. $ 5,00 Papa-Bedürfnisse-eine-neue-Porsche-Gebühr. Es ist lächerlich. Der populärste Kartenprozessor ist Authorize.net, und die Leute dieses Unternehmens (und seiner vielen Wiederverkäufer) verbringen jeden Tag damit, über neue, lächerliche Möglichkeiten nachzudenken, um Ihr Geld anzunehmen.


Stripe eingeben

Das Setup dauert etwa fünf Minuten.

Leider es ist Es ist illegal, den CEO von Authorize.net zu kidnappen, ihn in Barbecue-Sauce zu plattieren und in eine Grube von Honigdachs zu werfen. Aber Sie können das nächstbeste tun: benutze seinen Dienst nicht. Wechseln Sie zu Stripe. Sie benötigen kein Händlerkonto oder Zahlungsgateway. Stripe wird Geld einzahlen irgendein Bankkonto, das Sie mögen. Es fallen keine Gebühren an. Das Setup dauert etwa fünf Minuten. (Ja, im Ernst.) Und Sie zahlen genau eine Sache: 2,9% + 0,30 USD für jede erfolgreiche Kartentransaktion. (Wenn Sie also etwas für 30 US-Dollar verkaufen, behalten Sie 28,83 US-Dollar, und Stripe erhält 1,17 US-Dollar.) Die Website ist einfach und intuitiv und die Mitarbeiter sind sehr hilfsbereit. Der einzige Nachteil ist, dass Stripe außerhalb der USA derzeit nicht verfügbar ist. (Hinweis: Stripe akzeptiert Kreditkarten aus dem Ausland; es ist nur so, dass Sie sich nicht für ein Stripe-Konto außerhalb der USA anmelden können.) Sie arbeiten daran, in andere Länder zu expandieren.

Im Rest dieses Tutorials erfahren Sie, wie Sie Stripe auf Ihrer Website mit PHP und Javascript (jQuery) implementieren. Der Dienst verfügt auch über APIs für Ruby, Python, Java und andere Plattformen. Obwohl es so aussieht, als ob noch viel Arbeit vor uns liegt, gibt es wirklich keine. Sie sind in kürzester Zeit einsatzbereit. Lass uns anfangen:


Schritt 0: Installieren Sie ein SSL-Zertifikat

Wir haben es mit Kreditkarteninformationen zu tun, deshalb müssen wir natürlich die Verbindung des Benutzers zu unserem Server sichern. Wir machen dies mit einem SSL-Zertifikat und es ist nicht optional. Benutzer erwarten nicht nur, dass das "https: //" -Protokoll auf einer Bestellseite angezeigt wird, sondern auch für Stripe. Aber keine Sorge: Die Implementierung von SSL ist sehr einfach. Fast alle Hosting-Provider bieten die automatische Installation von SSL-Zertifikaten an. Sie kaufen das Zertifikat einfach über Ihren Provider, und es installiert und konfiguriert es automatisch für Sie. Sie müssen nichts weiter an Ihrer Site tun. Wenn sich Ihr Bestellformular unter http://mydomain.com/order.php befindet, senden Sie den Kunden stattdessen einfach unter https://mydomain.com/order.php. Die Verbindung wird mit Ihrem neuen SSL-Zertifikat gesichert. Das ist es!

Hinweis: Es gibt eine Ausnahme. Wenn Ihre Bestellseite Ressourcen wie Stylesheets, Scripts oder Bilder mit einer absoluten (im Gegensatz zu einer relativen) URL lädt, müssen Sie sicherstellen, dass diese URLs das Protokoll "https: //" verwenden. Wenn Sie beispielsweise ein Bild in Ihre sichere Bestellseite einfügen, wird im Browser eine Warnung angezeigt, dass die Seite sowohl sichere als auch unsichere Elemente enthält:

 

Um dies zu beheben, laden Sie das Bild von einer sicheren URL wie folgt:

 

Sie müssen sich nicht mit relativen URLs (wie "… /images/someImage.jpg") um dieses Problem kümmern, da Ihr Server diese Elemente automatisch sicher lädt.


Schritt 1: Erstellen Sie ein Konto

Besuchen Sie Stripe.com und erstellen Sie ein neues Konto. Wenn Sie die erste Eingabeaufforderung für den Benutzernamen / das Passwort eingegeben haben, klicken Sie oben rechts auf das Menü "Ihr Konto" und öffnen Sie den Bereich "Kontoeinstellungen", der unten abgebildet ist. Stellen Sie zunächst sicher, dass Sie einen guten "Statement Descriptor" eingestellt haben. Das sehen Kunden auf ihren Kreditkartenabrechnungen. Ein guter Deskriptor hilft dem Kunden, sich an die gekaufte Ware zu erinnern, damit er Ihre Transaktion nicht für Betrug verwechselt und die Gebühr storniert. (Wenn dies der Fall ist, wird dies als "Rückbelastung" bezeichnet. Sie zahlen eine Gebühr in Höhe von 15 USD zusätzlich zum Verkaufsverlust. Stellen Sie daher sicher, dass Ihr Deskriptor eingestellt ist!) Geben Sie als Nächstes das Bankkonto an, auf das Sie Ihr Geld einzahlen möchten . Sie sind herzlich eingeladen, meine zu verwenden. Und schließlich werfen Sie einen Blick auf die Registerkarte "API-Schlüssel". Wir werden diese in Kürze verwenden, halten Sie sie also bereit.


Schritt 2: Erstellen Sie Ihr Zahlungsformular

Als nächstes brauchen wir ein Formular, das unsere Kunden ausfüllen, um eine Kreditkartenbestellung bei uns zu platzieren. Heute verwenden wir diese stark vereinfachte PHP-Seite namens "buy.php":

       

Zahlungsformular

Vorname:

Nachname:

E-Mail-Addresse:

Kreditkartennummer:

Haltbarkeitsdatum:

CVC:

Zum Code-Snippet oben sind drei Dinge zu beachten.

  1. Erstens haben wir die Aktion des Formulars auf "javascript:" gesetzt, anstatt einen Pfad zu einem serverseitigen Skript anzugeben. (Sie werden sehen, warum in nur einer Minute.)
  2. Zweitens gibt es ein kurzes PHP-Snippet, das unser Feld für das Verfallsjahr automatisch mit den nächsten 20 Jahren auffüllt, sodass wir das in Zukunft nicht manuell aktualisieren müssen.
  3. Drittens hat keines der Formularfelder einen Parametersatz "Name". Dies ist wichtig, da dadurch verhindert wird, dass der Wert des Felds (z. B. die Kreditkartennummer) an den Server gesendet wird, wenn das Formular gesendet wird. Wir werden in einer Minute darüber sprechen, warum dies wichtig ist.

Wie viele Informationen sollte ich sammeln??

Das einzigste was du absolut brauchst Muss eine Kreditkarte belasten müssen sind die Kartennummer und das Verfallsdatum. Sie sollten jedoch immer mindestens einige zusätzliche Informationen sammeln. Hier ist der Grund: Wenn ein Kunde die Belastung mit seiner Karte bestreitet, müssen Sie nachweisen, dass er tatsächlich eine Bestellung bei Ihnen aufgegeben hat.

Je mehr Informationen Sie sammeln, desto einfacher ist es zu beweisen, dass der Kunde (im Gegensatz zu einem Identitätsdieb) die Bestellung auf Ihrer Website aufgegeben hat.


Was kommt als nächstes: Das große Bild

Okay, wir haben SSL installiert und ein Zahlungsformular steht zur Verfügung. Nehmen wir an, wir berechnen dem Kunden für diese Bestellung $ 20,00. (In Wirklichkeit würden Sie die Gesamtsumme basierend auf dem, was der Kunde bestellt hat, usw. berechnen. Das liegt bei Ihnen.) Wenn er das Formular ausfüllt und die Schaltfläche "Senden" drückt, passieren drei Dinge in dieser Reihenfolge:

  1. Mit Javascript (jQuery) erfassen wir den Wert jedes Formularfelds. Diese Informationen geben wir mithilfe von Stripe.js direkt an den Stripe-Server weiter.
  2. Der Server von Stripe stellt sicher, dass die Kreditkartendaten gut geformt sind, Sie bereiten eine Transaktion vor und senden uns ein "Single Use Token" zurück..
  3. Wir übergeben das Token an ein serverseitiges Skript auf unserem eigenen Server, das Stripe erneut kontaktiert und die tatsächliche Belastung der Kreditkarte auslöst. Das ist es!

Warum es so machen?

Sicherheit. Die Kreditkarteninformationen des Benutzers berühren niemals unseren eigenen Server. Wir geben es auf der Clientseite mit Javascript direkt an Stripe weiter. Der Server von Stripe übernimmt diese Informationen und bereitet eine Transaktion vor. Das "Token", das es an uns zurücksendet, enthält NICHT die Kreditkartendetails. DOES enthält jedoch eine ID, mit der wir die Transaktion auslösen können, die Stripe an ihrem Ende vorbereitet hat. So können wir das Token sicher an unseren eigenen Server weitergeben, ohne die Sicherheit der Kreditkartendetails des Benutzers zu gefährden.

Hinweis: während Sie können benutze Stripe ohne den Token-Prozess, ich stark entmutigen Sie es. Wenn Sie die rohen Kreditkartendaten an Ihren eigenen Server weitergeben, müssen Sie wahnsinnig vorsichtig sein, um sie zu schützen, und es gibt viele Möglichkeiten, das Problem zu beheben. Beispielsweise können Serverfehlerprotokolle sensible Informationen leicht aufzeichnen, sodass Sie diese regelmäßig und sicher bereinigen müssen. Wenn Sie ein Shared-Hosting-Paket nutzen, haben Sie wahrscheinlich nicht die erforderliche Kontrolle. Wenn Ihr Server jemals gehackt wird, könnten Sie außerdem von angekreuzten Kunden in Vergessenheit geraten. Und wenn du etwas tust Ja wirklich dumm wie die unverschlüsselten Karteninformationen in einer Datenbank gespeichert werden, werde ich persönlich zu Ihnen nach Hause fahren und Sie mit einem Kaktus schlagen. Sicher gehen; benutze den Token-Prozess.


Schritt 3: Sammeln Sie die Formularwerte

Erstellen Sie eine neue Javascript-Datei mit dem Namen "buy-controller.js". Beginnen wir mit dem Codieren dieser Datei mit einigen grundlegenden Überprüfungen:

 function showErrorDialogWithMessage (message) // Für das Tutorial machen wir nur eine Warnung. Sie sollten diese Funktion anpassen, um auf Ihrer Seite "hübsche" Fehlermeldungen anzuzeigen. Warnmeldung); // Aktivieren Sie die Bestellschaltfläche erneut, damit der Benutzer es erneut versuchen kann $ ('# buy-submit-button'). RemoveAttr ("disabled");  $ (document) .ready (function () $ ('# buy-form'). submit (function (event) // Deaktivieren Sie sofort die Submit-Schaltfläche, um ein doppeltes Senden von $ zu verhindern ('# buy-submit-button') ) .attr ("disabled", "disabled"); var fName = $ ('# Vorname'). val (); var lName = $ ('# Nachname'). val (); var email = $ ('# email'). val (); var cardNumber = $ ('# card-number'). val (); var cardCVC = $ ('# card-security-code'). val (); // Vorname und Nachname: Stellen Sie sicher, dass sie nicht leer sind, wenn (fName === "") showErrorDialogWithMessage ("Bitte geben Sie Ihren Vornamen ein."); Return; if (lName === "") showErrorDialogWithMessage ( "Bitte geben Sie Ihren Nachnamen ein."); Zurück; // Bestätigen Sie die E-Mail-Adresse: var emailFilter = /^([a-zA-Z0-9_\.\-())+\@(([a-zA- Z0-9 \ -]) + \.) + ([A-zA-Z0-9] 2,4) + $ /; if (email === "") showErrorDialogWithMessage ("Bitte geben Sie Ihre E-Mail-Adresse ein . "); return; else if (! emailFilter.test (email)) showErrorDialogWithMessage (" Ihre E-Mail-Adresse ist ungültig. "); return; // Stripe überprüft die Kartennummer und den CVC für uns. Stellen Sie daher sicher, dass sie nicht leer sind, wenn (cardNumber === "") showErrorDialogWithMessage ("Bitte geben Sie Ihre Kartennummer ein."); Rückkehr;  if (cardCVC === "") showErrorDialogWithMessage ("Bitte geben Sie den Sicherheitscode Ihrer Karte ein."); Rückkehr;  // Boom! Wir haben die Basisprüfung bestanden, also können wir die Informationen an // Stripe senden, um ein Token zu erstellen! (Wir werden diesen Code bald hinzufügen.)); );

Als nächstes müssen wir diese neue JavaScript-Datei zum hinzufügen Element unserer "buy.php" Seite. Wir werden auch "Stripe.js" hinzufügen, eine auf dem Server von Stripe gehostete Datei, die es uns ermöglicht, Stripe vom Client aus zu kontaktieren, um Kreditkartendetails zu übergeben und unser Token zu erhalten. (Beachten Sie, dass wir Stripe.js mit dem Protokoll "https: //" laden!) Ändern Sie das Element von "buy.php" um so auszusehen:

     

API-Schlüssel

Bevor wir Informationen an Stripe übermitteln können, müssen wir Stripe irgendwie mitteilen, wer wir sind. Dazu verwenden wir ein Paar "Schlüssel", bei denen es sich um eindeutige Zeichenfolgen handelt, die unser Konto identifizieren. Um diese Schlüssel zu finden, öffnen Sie den Bereich Stripe-Kontoeinstellungen und rufen Sie die Registerkarte API-Schlüssel auf.

Wie Sie sehen, gibt es insgesamt vier Tasten in zwei Sätzen: "Test" und "Live". Sie verwenden das Test-Set während der Entwicklung, damit Sie Ihren Code überprüfen können, ohne tatsächlich Karten laden zu müssen. Wenn Sie bereit sind, eine Website bereitzustellen, ersetzen Sie einfach die Testschlüssel durch die Live-Tasten. Es gibt zwei Schlüssel in jedem Satz: "Publishable" und "Secret". (Wir werden den "geheimen" Schlüssel in unserem serverseitigen Skript verwenden, sobald wir von Stripe ein Token erhalten haben.) veröffentlichbarer Testschlüssel und fügen Sie es wie folgt dem HEAD-Element von "buy.php" hinzu:

      

Warnung: Sie MÜSSEN Stripe.js einschließen, BEVOR Sie den veröffentlichbaren Schlüssel festlegen. Seien Sie außerdem vorsichtig, dass Sie eine Website nicht live schalten, ohne zu den "Live" -Tasten zu wechseln! Und schließlich sollten Sie unbedingt Ihre geheimen Schlüssel sicher aufbewahren Geheimnis!


Schritt 4: Ein Token anfordern

Zurück am Ende von "buy-controller.js" können wir den Code hinzufügen, der ein Token von Stripe anfordert. Es sind nur ein paar Zeilen:

 // Boom! Wir haben die Basisüberprüfung bestanden, fordern Sie also ein Token von Stripe an: Stripe.createToken (number: cardNumber, cvc: cardCVC, exp_month: $ ('# expiration-month'). Val (), exp_year: $ ('# expiration- year '). val (), stripeResponseHandler); // Verhindern Sie die standardmäßige Übergabeaktion im Formular. Return false;

Die "createToken" -Funktion (die in Stripe.js definiert ist) akzeptiert zwei Parameter. Der erste ist ein Objekt mit den Kreditkartendetails. Der zweite ist der Name der Rückruffunktion, die aufgerufen wird, wenn der Stripe-Server die Vorbereitung der Transaktion abgeschlossen hat und das Token zurückgibt. In diesem Fall heißt unsere Rückruffunktion "stripeResponseHandler". Fügen wir diese Funktion oben in "buy-controller.js" hinzu:

 Funktion stripeResponseHandler (Status, Antwort) if (response.error) // Stripe.js konnte kein Token generieren. Die Fehlermeldung erklärt warum. // Normalerweise liegt das daran, dass der Kunde seine Karteninformationen falsch geschrieben hat. // Sie sollten dies anpassen, um die Nachricht auf eine hübsche Weise darzustellen: alert (response.error.message);  else // Stripe.js hat erfolgreich ein Token generiert. Wir sind bereit, die Karte aufzuladen! var token = response.id; var firstName = $ ("# Vorname"). val (); var lastName = $ ("# last-name"). val (); var email = $ ("# email"). val (); // Wir müssen wissen, welchen Betrag wir berechnen müssen. Nehmen Sie für das Tutorial $ 20,00 an. // Sie würden dies natürlich selbst berechnen: var price = 20; // Rufen Sie das Server-Skript auf, um die Bestellung auszuführen. // Übergeben Sie die Token- und nicht sensiblen Formularinformationen. var request = $ .ajax (Typ: "POST", URL: "pay.php", Datentyp: "Json"), Daten: "StripeToken": Token, "Vorname": Vorname, "Nachname": Nachname, " email ": email," price ": price); request.done (function (msg) if (msg.result === 0) // Passen Sie diesen Abschnitt an, um eine Erfolgsmeldung anzuzeigen und anzuzeigen, was // dem Benutzer angezeigt werden soll. alert ("Die Kreditkarte wurde belastet.) erfolgreich! "); else // Die Karte wurde NICHT erfolgreich aufgeladen, aber wir haben eine Verbindung zu Stripe // hergestellt. Es ist wahrscheinlich ein Problem aufgetreten. Es ist wahrscheinlich ein Problem mit der Kreditkarte des Benutzers aufgetreten. // Passen Sie diesen Abschnitt an, um eine Fehlermeldung zur Fehlererklärung anzuzeigen (" Die Kreditkarte des Benutzers ist fehlgeschlagen. ");); request.fail (function (jqXHR, textStatus) // Es ist uns nicht gelungen, den AJAX-Aufruf zu pay.php zu tätigen. An unserem Ende stimmt etwas nicht. // Normalerweise sollte dies nicht passieren, aber wir müssen damit umgehen, wenn dies der Fall ist ("Fehler: pay.php konnte nicht aufgerufen werden, um die Transaktion zu verarbeiten.");); 

Diese Funktion prüft zuerst, ob beim Erstellen des Tokens ein Fehler aufgetreten ist. Wenn Stripe.js kein gültiges Token zurückgibt, liegt dies normalerweise daran, dass der Kunde einige Kreditkarteninformationen falsch eingegeben hat. Sie haben möglicherweise eine Nummer falsch eingegeben oder das falsche Ablaufdatum ausgewählt. Glücklicherweise können Sie in der Fehlermeldung, die mit der Antwort geliefert wird, genau sagen, warum die Erstellung des Tokens fehlgeschlagen ist. Stripe garantiert, dass diese Fehlermeldung für die Anzeige geeignet ist, jedoch nicht ausführlich ist. Erwarten Sie Zeichenfolgen wie "ungültiges Ablaufdatum" oder "falscher CVC" anstelle von vollständigen Sätzen.

Wenn auf der anderen Seite alles überprüft und Stripe ein Token erstellt hat, können wir dieses Token unserem serverseitigen Skript übergeben und die Gebühr tatsächlich erheben. Im obigen Code verwenden wir dazu die Ajax-Funktion von jQuery. Wir übergeben das Token sowie einige Informationen, die wir möglicherweise in einer Datenbank speichern möchten: Name und E-Mail-Adresse des Kunden. Schließlich müssen wir wissen, wie viel Geld die Karte belastet. Wir gehen heute von $ 20,00 aus, aber Sie würden einen berechneten Wert aus Ihrem Einkaufswagen usw. übergeben. Wir werfen alle Informationen in ein JSON-Objekt und rufen den Ajax-Aufruf an unser serverseitiges Skript "pay.php" ( die wir unten erstellen werden). Dann schauen wir uns einfach die Antwort an und präsentieren dem Benutzer eine Erfolgs- oder Fehlermeldung. Sie würden diesen Code natürlich an das Design Ihrer Website anpassen.


Schritt 5: Erstellen Sie ein serverseitiges Skript

Jetzt müssen Sie nur noch das serverseitige PHP-Skript erstellen, das die Belastung unserer Kundenkarte auslöst. Zuerst benötigen wir die PHP-Bibliothek von Stripe. Um ihn herunterzuladen, gehen Sie zur Stripe-Website, klicken Sie oben rechts auf den Link "Dokumentation" und wählen Sie dann den Abschnitt "API-Bibliotheken". (Oder klicken Sie hier, um direkt dorthin zu gelangen.) Scrollen Sie die Seite nach unten, bis Sie den PHP-Abschnitt sehen, der wie folgt aussieht:

Laden Sie die neueste Version herunter und entpacken Sie sie. Sie sehen zwei Elemente: "Stripe.php" und einen Ordner mit dem Namen "Stripe", der eine Reihe anderer PHP-Dateien enthält. Legen Sie beide Elemente in den Ordner Ihrer Website.

Erstellen Sie nun eine neue Datei mit dem Namen "pay.php". Wir fangen an, diese Datei mit einigen grundlegenden Sachen zu codieren:

  1, 'errorMessage' => $ message); echo json_encode ($ a);  // Kreditkartenabrechnung required_once ('Stripe.php'); // Ändern Sie diesen Pfad dahin, wo Sie die Stripe-PHP-Bibliothek ablegen! $ trialAPIKey = "oRU5rYklVzp94Ab0RbBTP0soVdlaEtvm"; // Dies sind die geheimen Schlüssel! $ liveAPIKey = "4BYrmtvwLb8iiiq9KIdbnRh5KCeSfPsX"; Stripe :: setApiKey ($ trialAPIKey); // Wechseln zwischen Live- und Testumgebungen // Abrufen aller Werte aus der Form $ token = $ _POST ['stripeToken']; $ email = $ _POST ['email']; $ firstName = $ _POST ['firstName']; $ lastName = $ _POST ['lastName']; $ price = $ _POST ['price']; $ priceInCents = $ price * 100; // Stripe erfordert die Angabe des Betrags in Cent

Oben haben wir eine einfache Funktion, die wir aufrufen, wenn unser Skript einen Fehler feststellt. Es gibt ein JSON-Objekt mit zwei Elementen zurück: "result" und "errorMessage". Dieses JSON-Objekt wird an "buy-controller.js" zurückgesendet (wo wir dieses serverseitige Skript mit der AJAX-Funktion von jQuery verwendet haben). Dort können wir den Wert von "result" prüfen, um zu sehen, was passiert ist. Wenn es 0 ist, wurde das Zahlungsskript erfolgreich abgeschlossen. Wenn es 1 ist, schlug das Skript einen Fehler vor und wir können das Element "errorMessage" verwenden, um zu melden, was dem Benutzer passiert ist.

Als nächstes bringen wir die PHP-Bibliothek von Stripe ein, die wir zuvor heruntergeladen haben. Hier ist nichts zu kompliziert. Stellen Sie einfach sicher, dass Sie den Pfad in der Anweisung request an den relativen Speicherort der Stripe PHP-Bibliothek aktualisieren. Danach haben wir beide von uns GEHEIMNIS API-Schlüssel Wir nennen die "setApiKey" -Funktion (die Teil der PHP-Bibliothek von Stripe ist) und übergeben sie unseren Testschlüssel. In Kombination mit dem "publizierbaren" Schlüssel, den wir zuvor festgelegt haben, verfügt Stripe jetzt über alle erforderlichen Informationen, um unsere Identität zu überprüfen und diese Transaktion unserem Konto zuzuordnen. Wenn wir die Website live schalten, würden wir diese Aussage natürlich auf $ liveAPIKey umstellen!

Warnung: Vergessen Sie nicht, zu den LIVE-API-Schlüsseln zu wechseln, wenn Sie Ihre Site veröffentlichen! Sie müssen sowohl den Schlüssel "publishable" im HEAD-Element von "buy.php" als auch den Schlüssel "secret" (oben in "pay.php") ändern.

Und schließlich greifen wir alle Daten, die wir vom AJAX-Aufruf in "buy-controller.js" übergeben haben. Beachten Sie, dass wir bei Stripe den Ladebetrag in Cent angeben müssen. Hier haben wir den Wert in Dollar übergeben, also multiplizieren wir ihn mit 100, um ihn in Cent umzuwandeln.

Laden Sie die Karte tatsächlich auf

Hier ist der Rest des Codes für pay.php:

 try // Wir müssen alle diese Informationen haben, um fortfahren zu können. Wenn es fehlt, weigern Sie sich. if (! isset ($ token)) löst neue Ausnahme aus ("Website-Fehler: Das Stripe-Token wurde nicht ordnungsgemäß generiert oder an das Zahlungsabwicklungsskript übergeben. Ihre Kreditkarte wurde NICHT belastet. Bitte melden Sie dieses Problem dem Webmaster."); if (! isset ($ email)) wirft neue Ausnahme ("Website-Fehler: Die E-Mail-Adresse war NULL im Zahlungsabwicklungsskript. Ihre Kreditkarte wurde NICHT belastet. Bitte melden Sie dieses Problem dem Webmaster."); if (! isset ($ firstName)) wirft neue Ausnahme ("Website-Fehler: Vorname war NULL im Zahlungsabwicklungsskript. Ihre Kreditkarte wurde NICHT belastet. Bitte melden Sie dieses Problem dem Webmaster."); if (! isset ($ lastName)) wirft neue Ausnahme ("Website-Fehler: LastName war NULL im Payment-Handler-Skript. Ihre Kreditkarte wurde NICHT belastet. Bitte melden Sie dieses Problem dem Webmaster."); if (! isset ($ priceInCents)) wirft neue Ausnahme ("Website-Fehler: Preis war NULL im Zahlungsabwicklungsskript. Ihre Kreditkarte wurde NICHT belastet. Bitte melden Sie dieses Problem dem Webmaster."); versuchen Sie // die Gebühr auf den Stripe-Servern zu erstellen. DAS KANN DIE KARTE LADEN! $ charge = Stripe_Charge :: create (array ("Betrag" => $ priceInCents, "currency" => "usd", "card" => $ token, "description" => $ email)); // Wenn keine Ausnahme ausgelöst wurde, war die Ladung erfolgreich! // Hier können Sie die Daten des Benutzers in einer Datenbank aufzeichnen, eine Quittung per E-Mail senden usw. // Geben Sie den Ergebniscode '0' und alle anderen gewünschten Informationen zurück. // Dies ist für den jQuery Ajax Call Return-Handler in "buy-controller.js" verfügbar. $ Array = array ('result' => 0, 'email' => $ email, 'price' => $ price ') message '=>' Danke, Ihre Transaktion war erfolgreich! '); echo json_encode ($ array);  catch (Stripe_Error $ e) // Die Gebühr ist aus irgendeinem Grund fehlgeschlagen. Die Nachricht von Stripe wird erklären, warum. $ message = $ e-> getMessage (); returnErrorWithMessage ($ message);  catch (Ausnahme $ e) // Eine oder mehrere Variablen waren NULL $ message = $ e-> getMessage (); returnErrorWithMessage ($ message); ?>

Überraschend einfach, nein? Zunächst überprüfen wir, dass keine unserer Variablen null ist. Obwohl wir nicht alle benötigen, um die Karte zu belasten, möchten wir diese Informationen möglicherweise in einer Datenbank aufzeichnen oder verwenden, um dem Kunden eine Quittung zu senden. Daher möchten wir nicht fortfahren, wenn sie nicht verfügbar ist.

Dann benutzen wir die "Stripe_Charge :: create ()Die Methode ist Teil der Stripe-PHP-Bibliothek. Dies ist die Zeile, die die Karte des Benutzers tatsächlich belastet (oder versucht, dies zu tun). Die ersten beiden Elemente im Array sind selbsterklärend. Die dritte, "Karte", ist Wenn wir den von Stripe zuvor angeforderten Token übergeben, ist der vierte Punkt, "Beschreibung", von entscheidender Bedeutung. Was auch immer wir hier passieren, ist das, was wir sehen, wenn wir uns in Stripe einloggen und unsere Transaktionen betrachten Kunden, die diese Bestellung aufgegeben haben Eine E-Mail-Adresse ist Ihre beste Wette, da viele Kunden möglicherweise denselben Namen haben.

Warum könnte die Ladung an diesem Punkt fehlschlagen??

Wenn wir erfolgreich einen Token von Stripe erhalten konnten, warum sollte die Ladung an diesem Punkt fehlschlagen? Die Antwort ist, dass der zuvor durchgeführte Validierungsstreifen nur geprüft hat, dass die Kreditkartendaten wohlgeformt waren. Es hat keine Transaktion über die Kreditkartennetzwerke ausgeführt. Es kann sein, dass die Karte des Kunden das Limit überschritten hat. Wenn es sich um eine Debitkarte handelt, ist möglicherweise nicht genügend Geld auf dem Konto des Kunden vorhanden, um diesen Kauf abzudecken. Es kann auch sein, dass das Kreditkartenunternehmen die Transaktion einfach als ungewöhnlich kennzeichnet und die Zustimmung des Kunden erfordert, um die Transaktion durchführen zu lassen (dies ist bei American Express-Karteninhabern der Fall). In solchen Situationen wird die Karte korrekt validiert, wenn wir ein Token anfordern, schlägt jedoch fehl, wenn wir versuchen, das Token tatsächlich zu belasten. Glücklicherweise macht es Stripe sehr einfach, mit diesen Fehlern umzugehen. Wir verwenden einfach try / catch-Blöcke, wie Sie oben sehen.

Laden Sie die Karte zuletzt auf!

Wenn dieser Kunde ich bin, haben Sie einen Kakteenschlag.

Wenn Ihre Website beispielsweise eine Seriennummer für eine Softwarelizenz generieren muss, sollten Sie dies tun, BEVOR Sie die Kundenkarte belasten. Wenn Sie die Karte zuerst belasten und Ihre Site aus irgendeinem Grund keine Seriennummer generiert, wird Ihr Kunde abgehakt. (Wenn es sich bei diesem Kunden um mich handelt, haben Sie einen Kakteenschlag.) Sie rufen möglicherweise sogar ihre Kreditkartenfirma an, um die Gebühr zu stornieren, was eine Gebühr von 15 USD für Sie und den Verlust eines Verkaufs nach sich zieht. Gehen Sie also auf Nummer sicher: Stellen Sie sicher, dass Sie alles bereit haben, bevor Sie den Kunden in Rechnung stellen!

Das ist es! Das ist alles, was Sie benötigen, um eine Kreditkarte auf Ihrer Website zu belasten. Im Rest des Artikels werden einige zusätzliche Details zur Verwendung von Stripe beschrieben, die Sie als nützlich erachten:


Testen und Debuggen

Wenn wir die "Test" -API-Schlüssel verwenden, können wir spezielle Kreditkartennummern verwenden, durch die Stripe eine bestimmte Art von Antwort zurücksendet, damit wir unseren Code gründlich testen können. Hier sind die speziellen Nummern:

  • 4242-4242-4242-4242: Simulieren Sie eine erfolgreiche Kartentransaktion
  • 4000-0000-0000-0002: Antwort "Karte abgelehnt" erzwingen
  • 4242-4242-4242-4241: Erzwingen Sie eine Antwort "ungültige Kartennummer"

Im Testmodus wird eine beliebige 3- oder 4-stellige CVC-Nummer als gültig betrachtet. Jedes Verfallsdatum, das in der Zukunft liegt, ist gültig. Sie können eine zweistellige CVC-Nummer übergeben, um diesen Fehlerfall zu testen. Ebenso können Sie ein beliebiges Datum in der Vergangenheit übergeben, um die Antwort auf ein ungültiges Ablaufdatum zu testen. Und schließlich, wenn Sie die Antwort "ungültiger Betrag" testen möchten, übergeben Sie einfach eine nicht ganzzahlige Zahl (z. B. 1,35) als zu belastenden Betrag.

Umfassende Informationen zum Testen von Stripe finden Sie auf deren Dokumentationsseite.


Abonnements, Speichern von Karteninformationen und mehr

Mit Stripe können Sie der Karte eines Kunden mehr als einmalige Gebühren berechnen. Sie können ein Abonnement einrichten, das die Karte in einem von Ihnen gewählten Intervall mit einem bestimmten Betrag belastet. Die dazu erforderlichen APIs sind Teil der PHP-Bibliothek von Stripe. Die Website enthält eine hervorragende Dokumentation, die Sie durch den Prozess führt.

Was ist, wenn Sie Kreditkarteninformationen speichern möchten, damit die Kunden sie nicht bei jedem Besuch Ihrer Website eingeben müssen? Stripe lässt Sie das auch tun! Sie erstellen einfach ein "Kunden" -Objekt auf die gleiche Art und Weise, wie wir ein Token erstellt haben. Dieses Objekt enthält alle sensiblen Daten, die sich auf einen bestimmten Kunden beziehen. Stripe speichert diese Informationen sicher an ihrem Ende (was bedeutet, dass Sie keinen Kakteenschlag riskieren müssen), und Sie können dem Benutzer jederzeit in Rechnung stellen, indem Sie einfach das entsprechende "Kunden" -Objekt anfordern, genau wie wir es mit dem Token getan haben. Alle APIs sind wiederum Teil der PHP-Bibliothek von Stripe, und die Website führt Sie durch.


Sehe