Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools
Jetzt starten
Zahlungen
Finanzautomatisierung
Jetzt starten
Zahlungen
Finanzautomatisierung
Plattformen und Marktplätze
Geldmanagement
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenZahlungen verwalten
Payment Links verwenden
Bezahlseite erstellen
    Übersicht
    Quickstarts
    Erscheinungsbild anpassen
    Zusätzliche Informationen erfassen
    Steuern einziehen
    Bezahlvorgang dynamisch aktualisieren
    Ihren Produktkatalog verwalten
    Abonnements
    Zahlungsmethoden verwalten
    Lassen Sie Kundinnen/Kunden in ihrer Landeswährung zahlen
    Rabatte, Upselling und optionale Artikel hinzufügen
    Zukünftige Zahlungen einrichten
    Zahlungsdaten bei der Zahlung speichern
    Manually approve payments on your server
    Nach der Zahlung
      Bestellungen abwickeln
      Belege und bezahlte Rechnungen senden
      Weiterleitungsverhalten anpassen
      Warenkörbe nach Abbrüchen wiederherstellen
      Zahlungskonversion analysieren
    Elements mit Checkout Sessions API-Änderungsprotokoll (Beta)
    Vom bisherigen Bezahlvorgang migrieren
    Bezahlvorgang auf Prices umstellen
Erweiterte Integration erstellen
In-App-Integration erstellen
Zahlungsmethoden
Zahlungsmethoden hinzufügen
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsschnittstellen
Payment Links
Checkout
Web Elements
In-App-Elements
Zahlungsszenarien
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Präsenzzahlungen
Terminal
Andere Stripe-Produkte
Financial Connections
Krypto
Climate
StartseiteZahlungenBuild a checkout pageAfter the payment

Bestellungen ausführen

Erfahren Sie, wie Sie mit der Checkout Sessions API erhaltene Zahlungen abwickeln.

Seite kopieren

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.

Ausführungsfunktion erstellen
Serverseitig

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_checkout bezeichnet, aber Sie können die Funktion beliebig benennen.

Zusätzliche Ausführungen verhindern

Führen Sie die Ausführung nur einmal pro Zahlung durch. Aufgrund der Funktionsweise dieser Integration und des Internets kann es vorkommen, dass Ihre fulfill_checkout-Funktion für dieselbe Checkout-Sitzung mehrmals aufgerufen wird, möglicherweise gleichzeitig. Wenn Sie den Bezahlvorgang nur einmal durchführen, wird sichergestellt, dass dies nicht zu unerwünschtem Verhalten führt.

Ihre fulfill_checkout-Funktion muss:

  1. Korrekte Verarbeitung eines mehrfachen Aufrufs mit derselben Checkout-Sitzungs-ID.
  2. Akzeptieren Sie eine Checkout-Sitzungs-ID als Argument.
  3. Rufen Sie die Checkout-Sitzung von der API mit der line_items-Eigenschaft „erweitert“ ab.
  4. Überprüfen Sie die Eigenschaft payment_status, um festzustellen, ob sie ausgeführt werden muss.
  5. Setzen Sie die Ausführung der Posten um.
  6. Zeichnen Sie den Ausführungsstatus für die angegebene Checkout-Sitzung auf.

Verwenden Sie den folgenden Code als Ausgangspunkt für Ihre fulfill_checkout-Funktion. Die TODO-Kommentare geben alle Funktionen an, die Sie implementieren müssen.

Notiz

Die folgenden Code-Snippets benennen die fulfill_checkout-Funktion möglicherweise mit fulfillCheckout oder FulfillCheckout, je nach ausgewählter Sprache. Sie repräsentieren jedoch alle dieselbe Funktion.

Ruby
def fulfill_checkout(session_id) # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
puts "Fullfilling Checkout Session #{session_id}" # TODO: Make this function safe to run multiple times, # even concurrently, with the same session ID # TODO: Make sure fulfillment hasn't already been # performed for this Checkout Session # Retrieve the Checkout Session from the API with line_items expanded checkout_session = Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items'], }) # Check the Checkout Session's payment_status property # to determine if fulfillment should be performed if checkout_session.payment_status != 'unpaid' # TODO: Perform fulfillment of the line items # TODO: Record/save fulfillment status for this # Checkout Session end end

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_checkout 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 erstellen
Serverseitig

Um die Ausführung auszulösen, erstellen Sie einen Webhook-Ereignis-Handler, der auf Zahlungsereignisse wartet und Ihre fulfill_checkout-Funktion auslöst.

Wenn jemand Sie bezahlt, wird das Ereignis checkout.session.completed 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.

Ruby
require 'sinatra' # Use the secret provided by Stripe CLI for local testing # or your webhook endpoint's secret. endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' || event['type'] == 'checkout.session.async_payment_succeeded' fulfill_checkout(event['data']['object']['id']) end status 200 end

Es empfiehlt sich auch, checkout.session.async_payment_failed-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:

Command Line
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)
  • 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 Ereignis checkout.session.completed angezeigt, das an Ihren lokalen Server weitergeleitet wird.
  • Ihre Serverprotokolle zeigen die erwartete Ausgabe Ihrer fulfill_checkout-Funktion.

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.session.completed-Ereignisse an Ihren Server zu senden, und testen Sie dann den Bezahlvorgang erneut.

Eine Zielseiten-URL konfigurieren
Empfohlen

Konfigurieren Sie Checkout so, dass Ihre Kundinnen/Kunden nach Abschluss des Bezahlvorgangs zu einer Seite auf Ihrer Website weitergeleitet werden. Fügen Sie den Platzhalter {CHECKOUT_SESSION_ID} in die URL Ihrer Seite ein, der durch die ID der Checkout-Sitzung ersetzt wird, wenn Ihr Kunde/Ihre Kundin den Bezahlvorgang abschließt.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d ui_mode=embedded \ --data-urlencode return_url="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Ausführung auf Ihrer Zielseite auslösen
Empfohlen

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:

  1. Wenn Ihr Server eine Anfrage für Ihre Checkout-Zielseite erhält, extrahieren Sie die ID der Checkout-Sitzung aus der URL.
  2. Führen Sie Ihre fulfill_checkout-Funktion` mit der angegebenen ID aus.
  3. 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.

War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc