Bestellungen mit Checkout abwickeln
Nachdem Sie Stripe Checkout integriert oder einen Stripe Payment Link erstellt haben, um Ihre Kundinnen/Kunden zu einem Zahlungsformular zu leiten, benötigen Sie eine Benachrichtigung, dass Sie ihre Bestellung nach der Zahlung ausführen können.
In diesem Leitfaden lernen Sie:
- Wie Sie eine Ereignisbenachrichtigung darüber erhalten, dass ein/e Kund/in bezahlt hat.
- Wie Sie mit dem Ereignis umgehen.
- Wie Sie die Stripe-CLI verwenden, um Ihren neuen Ereignis-Handler schnell zu testen.
- Optional, wie Sie zusätzliche Zahlungsmethoden verarbeiten.
- Wie Sie Ihren Ereignis-Handler in Produktion aktivieren.
Wie Sie die Stripe-CLI installieren
Der schnellste Weg, Webhooks lokal zu entwickeln und zu testen, ist über die Stripe-CLI.
Befolgen Sie als Erstes den Installationsleitfaden für die Stripe-CLI.
Sobald Sie die Stripe-CLI installiert und den Anmeldevorgang abgeschlossen haben, können Sie zum nächsten Schritt übergehen.
Erstellen Sie Ihren Ereignis-HandlerServerseitig
In diesem Abschnitt erstellen Sie einen kleinen Ereignis-Handler, damit Stripe Ihnen das Ereignis checkout.session.completed
senden kann, wenn ein/e Kund/in den Bezahlvorgang abgeschlossen hat.
Erstellen Sie zunächst eine neue Route für Ihren Ereignis-Handler. Drucken Sie erst das Ereignis aus, das Sie empfangen. Im nächsten Schritt verifizieren Sie, dass die Übermittlung funktioniert:
Testen
Betreiben Sie Ihren Server (z. B. auf localhost:4242
). Richten Sie als Nächstes die Stripe-CLI ein, um Ereignisse an Ihren lokalen Server weiterzuleiten, damit Sie Ihren Ereignis-Handler lokal testen können:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Durchlaufen Sie als Nächstes den Bezahlvorgang als Kund/in:
- Klicken Sie auf Ihre Bezahl-Schaltfläche (diese haben Sie wahrscheinlich im Leitfaden zur Zahlungsannahme eingerichtet))
- Füllen Sie Ihr Zahlungsformular mit Testdaten aus
- Geben Sie als Kartennummer
4242 4242 4242 4242
ein - Geben Sie für die Karte ein beliebiges Ablaufdatum in der Zukunft ein
- Geben Sie für die Prüfziffer eine 3-stellige Ziffer ein
- Geben Sie eine beliebige Postleitzahl für die Rechnungsstellung ein (
90210
)
- Geben Sie als Kartennummer
- Klicken Sie auf Bezahlen
Sie sollten Folgendes sehen:
checkout.session.completed
in der Ausgabestripe listen
- Eine Druckanweisung von den Ereignisprotokollen Ihres Servers mit dem Ereignis
checkout.session.completed
Jetzt, da Sie die Ereignisübergabe verifiziert haben, können als zusätzlichen Schutz sicherstellen, dass Ereignisse nur von Stripe stammen.
Verifizieren Sie, dass die Ereignisse von Stripe stammen
Jeder kann Daten an Ihren Ereignis-Handler senden. Vergewissern Sie sich vor der Verarbeitung eines Ereignisses immer, dass es von Stripe stammt und somit vertrauenswürdig ist. Die offizielle Stripe-Bibliothek bietet integrierte Unterstützung für die Verifizierung von Webhook-Ereignissen, mit denen Sie Ihren Ereignis-Handler aktualisieren:
Testen
Kehren Sie zum Testvorgang aus dem vorherigen Schritt zurück. Das Ereignis checkout.session.completed
sollte nach wie vor erfolgreich ausgedruckt werden.
Versuchen Sie als Nächstes, den Endpoint mit einer nicht signierten Anfrage zu erreichen:
curl -X POST \ -H "Content-Type: application/json" \ --data '{ "fake": "unsigned request" }' \ -is http://localhost:4242/webhook HTTP/1.1 400 Bad Request ... more headers
Sie sollten die Fehlermeldung 400 Bad Request
erhalten, da Sie versucht haben, eine nicht signierte Anfrage an den Endpoint zu senden.
Jetzt, da Ihr Ereignis-Handler im Wesentlichen eingerichtet ist, können Sie mit der Auftragsabwicklung fortfahren.
Wickeln Sie die Bestellung abServerseitig
Verarbeiten Sie das Ereignis checkout.session.completed
, um die Bestellung auszuführen. Je nachdem, welche Zahlungsmethoden Sie akzeptieren (zum Beispiel Karten oder mobile Wallets), müssen Sie möglicherweise einige zusätzliche Ereignisse verarbeiten. Dieses Ereignis enthält das Checkout-Sitzungsobjekt, das Details zu Ihrem Kunden/Ihrer Kundin und dessen/deren Zahlung enthält. Wenn Sie mit dieses Ereignis verarbeiten, sollten Sie auch Folgendes berücksichtigen:
- Eine Kopie der Bestellung in Ihrer eignen Datenbank zu speichern.
- Eine E-Mail mit Beleg an den/die Kund/in zu senden.
- Abgleich der Einzelposten und der von den Kund/innen gekauften Menge bei Verwendung von
line_item.adjustable_quantity
. Wenn die Checkout-Sitzung viele Posten enthält, können Sie diese mit line_items durchgehen.
Weiterleitungsverhalten verarbeiten
Sie können Checkout so konfigurieren, dass Ihre Kundinnen/Kunden nach dem Empfang von Webhook-Ereignissen weitergeleitet werden. Checkout verarbeitet diese durch den Webhook ausgelösten Weiterleitungen etwas anders, je nachdem, ob Sie das integrierte Formular oder eine von Stripe gehostete Seite verwenden.
Von Stripe gehostete Seite | Ihr Webhook-Endpoint leitet Ihre Kundinnen/Kunden an die success_url weiter, nachdem Sie bestätigen, dass Sie das Ereignis empfangen haben. Wenn Ihr Endpoint nicht funktionsfähig ist oder das Ereignis nicht ordnungsgemäß anerkannt wurde, leitet Ihr Handler Kundinnen/Kunden 10 Sekunden nach erfolgreicher Zahlung an die success_url weiter. |
Eingebettetes Formular | Ihr Webhook-Endpoint leitet Ihre Kundinnen/Kunden sofort zur return_url weiter. Sie müssen nicht bestätigen, dass Sie das Ereignis erhalten haben. |
Testen
Stellen Sie sicher, dass stripe listen
weiterhin ausgeführt wird. Durchlaufen Sie wie in den vorangegangenen Schritten den Bezahlvorgang als Testnutzer. Ihr Ereignis-Handler sollte das Ereignis checkout.session.completed
erhatlen und Sie sollten es erfolgreich abgeschlossen haben.
Umgang mit Zahlungsmethoden mit verzögerter BenachrichtigungServerseitig
Vorsicht
Dieser Schritt ist nur erforderlich, wenn Sie eine der folgenden Zahlungsmethoden verwenden möchten: BACS-Lastschrift, Banktransfer, Boleto, Vorab autorisierte Lastschriften in Kanada, Konbini, OXXO, SEPA-Lastschrift, SOFORT oder ACH-Lastschrift.
Wenn Sie Zahlungen mit einer Zahlungsmethode mit verzögerter Benachrichtigung erhalten, sind Gelder nicht sofort verfügbar. Die Verarbeitung der Gelder kann mehrere Tage dauern. Sie sollten daher die Auftragsabwicklung verschieben, bis die Gelder auf Ihrem Konto verfügbar sind. Nach erfolgreicher Zahlung ändert sich der zugrunde liegende PaymentIntent-Status von processing
in succeeded
.
Sie müssen folgende Checkout-Ereignisse verarbeiten:
Ereignisname | Beschreibung | Nächste Schritte |
---|---|---|
checkout.session.completed | Die Kundin/der Kunde hat die Lastschriftzahlung nach Übermittlung des Checkout-Formulars erfolgreich autorisiert. | Warten Sie, bis die Zahlung erfolgt oder fehlschlägt. |
checkout.session.async_payment_succeeded | Die Zahlung der Kundin/des Kunden war erfolgreich. | Wickeln Sie die gekauften Waren oder Dienstleistungen ab. |
checkout.session.async_payment_failed | Die Zahlung wurde abgelehnt oder ist aus einem anderen Grund fehlgeschlagen. | Kontaktieren Sie die Kundin/den Kunden per E-Mail und fordern Sie eine neue Bestellung an. |
Diese Ereignisse beinhalten alle das Checkout Session-Objekt.
Aktualisieren Sie Ihren Ereignis-Handler, um die Bestellung abzuwickeln:
Testen
Stellen Sie sicher, dass stripe listen
weiterhin ausgeführt wird. Durchlaufen Sie wie in den vorangegangenen Schritten den Bezahlvorgang als Testnutzer. Ihr Ereignis-Handler sollte das Ereignis checkout.session.completed
empfangen und Sie sollten es erfolgreich abgeschlossen haben.
Nachdem Sie diese Schritte ausgeführt haben, können Sie mit der Produktion beginnen, wann immer Sie bereit sind.
Live in Produktion gehen
Nachdem Sie Ihren Ereignis-Handler-Endpoint für die Produktion bereitgestellt haben, müssen Sie Ihre Live-URL bei Stripe registrieren. Befolgen Sie die Anleitung zum Registrieren eines Webhooks.