Bestellungen ausführen
Erfahren Sie, wie Sie mit der Checkout Sessions API erhaltene Zahlungen abwickeln.
Wenn Sie eine Zahlung mit der Checkout Sessions API erhalten, müssen Sie möglicherweise Maßnahmen ergreifen, um Ihren Kundinnen/Kunden die Bezahlung zukommen zu lassen. 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.
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
Am schnellsten lässt sich Ihr Webhook-Ereignis-Handler mit der Stripe-CLI entwickeln und testen. Wenn Sie die Stripe-CLI nicht haben, befolgen Sie die Installationsanleitung, um zu beginnen.
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 Ihren Bezahlvorgang als Kunde/Kundin durchlaufen.
Überprüfen Sie nach Abschluss der Zahlung Folgendes:
- In Ihrer Befehlszeile, in der
stripe listen
ausgeführt wird, wird das an Ihren lokalen Server weitergeleitete Ereignischeckout.
angezeigt.session. completed - Ihre Serverprotokolle zeigen die erwartete Ausgabe Ihrer
fulfill_
-Funktion.checkout
Einen Webhook-Endpoint erstellen
Nach dem lokalen Test müssen Sie Ihren Webhook-Ereignis-Handler auf Ihrem Server zum Laufen bringen. Erstellen Sie als Nächstes einen Webhook-Endpoint, um checkout.
-Ereignisse an Ihren Server zu senden. Testen Sie dann den Bezahlvorgang erneut.
Ausführung auf Ihrer Zielseite auslösenEmpfohlen
Das Überwachen von Webhooks 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 die Ausführung auch auf Ihrer Landingpage aus. Sie können die Landingpage konfigurieren, indem Sie return_url beim Erstellen der Checkout-Sitzung übergeben oder returnUrl an confirm
im Frontend übergeben.
Verwenden Sie die Checkout Session-ID aus der von Ihnen angegebenen URL, um Folgendes zu tun:
- Wenn Ihr Server eine Anfrage für die Landingpage Ihrer Zahlungsseite erhält, extrahieren Sie die Checkout-Sitzungs-ID 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 Zielseite 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. Zum Beispiel kann jemand erfolgreich bezahlen und dann die Internetverbindung verlieren, bevor Ihre Zielseite geladen wird.
Richten Sie einen Webhook-Ereignis-Handler ein, damit Stripe Zahlungsereignisse unter vollständiger Umgehung des Clients direkt an Ihren Server senden kann. Webhooks sind der zuverlässigste Weg, um zu bestätigen, wann Sie bezahlt werden. Wenn die Übermittlung des Webhook-Ereignisses fehlschlägt, versucht Stripe es mehrmals erneut.