Bestellungen ausführen
Erfahren Sie, wie Sie mit der Checkout Sessions API erhaltene Zahlungen abwickeln.
Wenn Sie eine Zahlung mit der Checkout Sessions API (einschließlich Payment Links) erhalten, müssen Sie möglicherweise Maßnahmen ergreifen, um Ihrem Kunden/Ihrer Kundin das Produkt oder die Dienstleistung bereitzustellen, für die/das er/sie bezahlt hat. Beispielsweise müssen Sie ihnen möglicherweise Zugriff auf eine Dienstleistung gewähren oder physische Waren versenden. Dieser Vorgang wird als Ausführung bezeichnet, und Sie haben zwei Möglichkeiten, diese zu verarbeiten:
- Manuell: Sie können Bestellungen anhand der Informationen, die Stripe Ihnen zur Verfügung stellt, manuell ausführen. Sie können beispielsweise das Dashboard überwachen, Zahlungsbenachrichtigungs-E-Mails prüfen oder Berichte einsehen und dann Bestellungen ausführen.
- Automatisch: Sie können ein automatisches Ausführungssystem entwickeln. Recommended
Die erste Option eignet sich für kleine Mengen oder experimentelle Projekte, aber für die meisten Situationen empfehlen wir die Automatisierung der Ausführung. Im restlichen Teil dieses Leitfadens erfahren Sie, wie Sie ein automatisches Ausführungssystem entwickeln können.
Automatische Ausführung
Das nachfolgend beschriebene automatische Ausführungssystem nutzt eine Kombination aus Webhooks und einer Weiterleitung zu Ihrer Website, um die Ausführung auszulösen. Sie müssen Webhooks verwenden, um sicherzustellen, dass die Ausführung bei jeder Zahlung erfolgt. Die Weiterleitung ermöglicht Ihren Kundinnen/Kunden den Zugriff auf Dienstleistungen oder Ausführungsdetails unmittelbar nach der Zahlung.
Notiz
Payment Links nutzt Checkout, daher gelten alle folgenden Informationen sowohl für Payment Links als auch für Checkout, sofern nicht anders angegeben.
Ausführungsfunktion erstellenServerseitig
Erstellen Sie eine Funktion auf Ihrem Server, um erfolgreiche Zahlungen auszuführen. Webhooks lösen diese Funktion aus und sie wird aufgerufen, wenn Kundinnen/Kunden nach Abschluss des Bezahlvorgangs auf Ihre Website geleitet werden. In diesem Leitfaden wird diese Funktion als fulfill_
bezeichnet, aber Sie können die Funktion beliebig benennen.
Ihre fulfill_
-Funktion muss:
- Korrekte Verarbeitung eines mehrfachen Aufrufs mit derselben Checkout-Sitzungs-ID.
- Akzeptieren Sie eine Checkout-Sitzungs-ID als Argument.
- Rufen Sie die Checkout-Sitzung von der API mit der line_items-Eigenschaft „erweitert“ ab.
- Überprüfen Sie die Eigenschaft payment_status, um festzustellen, ob sie ausgeführt werden muss.
- Setzen Sie die Ausführung der Posten um.
- Zeichnen Sie den Ausführungsstatus für die angegebene Checkout-Sitzung auf.
Verwenden Sie den folgenden Code als Ausgangspunkt für Ihre fulfill_
-Funktion. Die TODO
-Kommentare geben alle Funktionen an, die Sie implementieren müssen.
Notiz
Die folgenden Code-Snippets benennen die fulfill_
-Funktion möglicherweise mit fulfillCheckout
oder FulfillCheckout
, je nach ausgewählter Sprache. Sie repräsentieren jedoch alle dieselbe Funktion.
Notiz
Wenn eine Checkout-Sitzung viele Posten enthält, verwenden Sie die automatische Paginierung mit der API für Checkout-Posten, um alle Posten abzurufen.
Je nachdem, welche Zahlungsmethoden Sie akzeptieren und welche Anforderungen Ihr Unternehmen an Sie stellt, sollte Ihre Funktion fulfill_
folgende Aufgaben ausführen:
- Stellen Sie den Zugriff auf Dienstleistungen bereit.
- Lösen Sie den Versand von Waren aus.
- Speichern Sie eine Kopie der Zahlungsdetails und Posten in Ihrer eigenen Datenbank.
- Senden Sie dem Kunden/der Kundin eine individuelle Beleg-E-Mail, wenn Sie Belege von Stripe nicht aktiviert haben.
- Gleichen Sie Einzelposten und gekaufte Mengen ab, wenn Sie Kundinnen/Kunden gestatten, die Mengen in Checkout anzupassen.
- Aktualisieren Sie Inventar- oder Bestandsaufzeichnungen.
Einen Ereignis-Handlers für Zahlungen erstellenServerseitig
Um die Ausführung auszulösen, erstellen Sie einen Webhook-Ereignis-Handler, der auf Zahlungsereignisse wartet und Ihre fulfill_
-Funktion auslöst.
Wenn jemand Sie bezahlt, wird das Ereignis checkout.
erstellt. Richten Sie auf Ihrem Server einen Endpoint ein, um diese Ereignisse zu akzeptieren, zu verarbeiten und den Empfang zu bestätigen.
Immediate versus delayed payment methods
Some payment methods aren’t instant, such as ACH direct debit and other bank transfers. This means, funds won’t be immediately available when Checkout completes. Delayed payment methods generate a checkout.session.async_payment_succeeded event when payment succeeds later. The status of the object is in processing until the payment status either succeeds or fails.
Notiz
Der im folgenden Code angezeigte Webhook-Geheimschlüssel (whsec_
) stammt entweder von der Stripe-CLI oder von Ihrem Webhook-Endpoint. Sie können die Stripe CLI für lokale Tests verwenden, und Stripe verwendet einen Webhook-Endpoint, um Ereignisse an Ihren Handler zu senden, wenn er auf einem Server ausgeführt wird. Weitere Informationen finden Sie im nächsten Abschnitt.
Es empfiehlt sich auch, checkout.
-Ereignisse zu überwachen und zu verarbeiten. Sie können beispielsweise eine E-Mail an Ihre Kundinnen und Kunden senden, wenn eine verzögerte Zahlung fehlschlägt.
Ihren Ereignis-Handler lokal testen
Der schnellste Weg, Ihren Webhook-Ereignis-Handler zu entwickeln und zu testen, ist die Stripe CLI. Wenn Sie die Stripe CLI nicht nutzen, befolgen Sie für den Einstieg den Installationsleitfaden.
Wenn die Stripe CLI installiert ist, können Sie Ihren Ereignis-Handler lokal testen. Führen Sie Ihren Server aus (zum Beispiel auf localhost:4242
) und führen Sie dann den Befehl „stripe listen“ aus, damit die Stripe CLI Ereignisse an Ihren lokalen Server weiterleitet:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Fügen Sie das Webhook-Geheimnis (whsec_
) zu Ihrem Code für die Verarbeitung von Ereignissen hinzu und testen Sie dann die Ausführung, indem Sie als Kunde/Kundin den Bezahlvorgang durchlaufen:
- Betätigen Sie die Checkout-Schaltfläche, über die Sie zum Checkout gelangen, oder besuchen Sie Ihren Payment Link
- Geben Sie in Checkout folgende Testdaten an:
- Geben Sie als Kartennummer
4242 4242 4242 4242
ein - Geben Sie für die Karte ein beliebiges Ablaufdatum in der Zukunft ein
- Geben Sie als 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 die Schaltfläche Bezahlen
Wenn die Zahlung abgeschlossen ist, überprüfen Sie Folgendes:
- In Ihrer Befehlszeile, in der
stripe listen
ausgeführt wird, wird das Ereignischeckout.
angezeigt, das an Ihren lokalen Server weitergeleitet wird.session. completed - Ihre Serverprotokolle zeigen die erwartete Ausgabe Ihrer
fulfill_
-Funktion.checkout
Einen Webhook-Endpoint erstellen
Nachdem Sie einen lokalen Test durchgeführt haben, richten Sie Ihren Webhook-Handler auf Ihrem Server ein und starten ihn. Als Nächstes erstellen Sie einen Webhook-Endpoint, um die checkout.
-Ereignisse an Ihren Server zu senden, und testen Sie dann den Bezahlvorgang erneut.
Eine Zielseiten-URL konfigurierenEmpfohlen
Konfigurieren Sie Checkout so, dass Ihre Kundinnen/Kunden nach Abschluss des Bezahlvorgangs an eine Seite auf Ihrer Website gesendet werden. Fügen Sie den Platzhalter {CHECKOUT_
in die URL Ihrer Seite ein. Dieser wird durch die ID der Checkout-Sitzung ersetzt, wenn Ihr Kunde/Ihrer Kundin von Checkout weitergeleitet wird.
Gehosteter Bezahlvorgang
Bei Checkout-Sitzungen mit dem standardmäßigen ui_mode hosted
legen Sie die success_
fest.
Notiz
Wenn Sie einen Webhook-Endpoint eingerichtet haben, der checkout.
-Ereignisse überwacht, und eine success_
festgelegt haben, wartet Checkout bis zu 10 Sekunden, bis Ihr Server auf die Übermittlung des Webhook-Ereignisses reagiert, bevor Ihre Kundinnen/Kunden weitergeleitet werden. Wenn Sie diesen Ansatz wählen, stellen Sie sicher, dass Ihr Server so schnell wie möglich auf checkout.
-Ereignisse reagiert.
Payment Links
Für Payment Links, die Sie mit der API erstellen, legen Sie die after_completion.redirect.url fest.
Für Payment Links, die Sie im Dashboard erstellen:
- Gehen Sie zur Registerkarte Nach der Zahlung.
- Wählen Sie Sie Bestätigungsseite nicht anzeigen aus.
- Geben Sie die URL Ihrer Zielseite an, die den Platzhalter
{CHECKOUT_
enthält (zum BeispielSESSION_ ID} https://example.
)com/after-checkout?session_ id={CHECKOUT_ SESSION_ ID}
Ausführung auf Ihrer Zielseite auslösenEmpfohlen
Webhooks abhören ist erforderlich, um sicherzustellen, dass Sie immer für jede Zahlung die Ausführung auslösen, Webhooks können sich jedoch manchmal verzögern. Um Ihren Zahlungsablauf zu optimieren und eine sofortige Ausführung zu gewährleisten, wenn Ihr Kunde/Ihre Kundin anwesend ist, lösen Sie das Fulfillment auch auf Ihrer Landingpage aus.
Verwenden Sie die ID der Checkout-Sitzung aus der im vorherigen Schritt angegebenen URL, um Folgendes zu tun:
- Wenn Ihr Server eine Anfrage für Ihre Checkout-Zielseite erhält, extrahieren Sie die ID der Checkout-Sitzung aus der URL.
- Führen Sie Ihre
fulfill_
-Funktion` mit der angegebenen ID aus.checkout - Rendern Sie die Seite, nachdem der Auführungversuch abgeschlossen ist.
Wenn Sie Ihre Landingpage rendern, können Sie Folgendes anzeigen:
- Details des Ausführungsvorgangs.
- Links oder Informationen zu Dienstleistungen, auf die der Kunde/die Kundin nun Zugriff hat.
- Versand- oder logistische Details für physische Waren.
Webhooks sind erforderlich
Sie können sich nicht ausschließlich darauf verlassen, dass die Ausführung auf der Landingpage Ihrer Zahlungsseite ausgelöst wird, da nicht garantiert ist, dass Ihre Kundinnen/Kunden diese Seite besuchen. So kann beispielsweise jemand erfolgreich in Checkout bezahlen, dann aber die Internetverbindung verlieren, bevor Ihre Zielseite geladen wird.
Set up a webhook event handler so Stripe can send payment events directly to your server, bypassing the client entirely. Webhooks provide the most reliable way to confirm when you get paid. If webhook event delivery fails, Stripe retries multiple times.