Mit der Checkout Sessions API zum Payment Element migrieren
Akzeptieren Sie zahlreiche Zahlungsmethoden mit einem einzigen Element und verwalten Sie gleichzeitig Steuern, Versand, Rabatte, Währungsumrechnung und vieles mehr.
Bisher erforderte jede Zahlungsmethode (Karten, iDEAL etc.) ein separates Element. Durch die Migration zu Payment Element können Sie viele Zahlungsmethoden mit einem einzigen Element akzeptieren. Sie können zusätzliche Funktionen nutzen, indem Sie von Payment Intents zu Checkout-Sitzungen migrieren. Dadurch können Sie mit Ihrer Integration Abonnements, Rabatte, Versand und Währungsumrechnung verwalten.
Wenn Sie das Card Element mit PaymentIntents oder SetupIntents verwenden und nur zum Payment Element migrieren möchten, informieren Sie sich stattdessen unter Umstieg auf das Payment Element. Sie können auch andere Zahlungsintegrationen vergleichen, wenn keine von beiden zu Ihrem Anwendungsszenario passt.
PaymentIntents und SetupIntents haben jeweils eigene Migrationsleitfäden. Siehe den entsprechenden Leitfaden für Ihren Integrationspfad, einschließlich Beispielcode.
Wenn Ihre bestehende Integration die API Payment Intents zur Erstellung und Nachverfolgung von Zahlungen oder zum Speichern von Kartendaten bei der Zahlung verwendet, führen Sie die folgenden Schritte zur Verwendung von Payment Element aus.
Zahlungsmethoden aktivieren
Vorsicht
Dieser Integrationspfad unterstützt weder BLIK noch vorab autorisierte Lastschriften, die das Automated Clearing Settlement System (ACSS) verwenden.
Zeigen Sie Ihre Einstellungen für Zahlungsmethoden an und aktivieren Sie die Zahlungsmethoden, die Sie unterstützen möchten. Sie müssen mindestens eine Zahlungsmethode aktiviert haben, um eine Checkout-Sitzung zu erstellen.
Standardmäßig aktiviert Stripe Karten und andere gängige Zahlungsmethoden, mit denen Sie mehr Kundinnen/Kunden erreichen können. Wir empfehlen jedoch, zusätzliche Zahlungsmethoden zu aktivieren, die für Ihr Unternehmen und Ihre Kundinnen/Kunden relevant sind. Weitere Informationen zur Unterstützung von Produkten und Zahlungsmethoden finden Sie auf der Seite Unterstützte Zahlungsmethoden und der Preisseite für Gebühren.
Migrieren Sie Ihren Erstellungsaufruf für PaymentIntentsServerseitig
Legen Sie im SDK fest, dass mindestens die API-Version 2025-03-31.
verwendet wird.
Da Sie mit dem Payment Element mehrere Zahlungsmethoden akzeptieren können, empfehlen wir die Verwendung dynamischer Zahlungsmethoden, die automatisch aktiviert werden, wenn Sie payment_
nicht in der Checkout-Sitzung übergeben. Wenn diese Funktion aktiviert ist, wertet Stripe die Währung, Einschränkungen für Zahlungsmethoden und andere Parameter aus, um die Liste der für Ihre Kundinnen/Kunden verfügbaren Zahlungsmethoden zu ermitteln. Wir priorisieren Zahlungsmethoden, die die Konversionsrate erhöhen und für die Währung und den Standort der Kundinnen/Kunden am relevantesten sind.
Aktualisieren Sie Ihren Erstellungsaufruf für PaymentIntents, um stattdessen eine Checkout-Sitzung zu erstellen. In der Checkout Sessions-Instanz übergeben Sie:
line_
: Stellt den Inhalt der Bestellung daritems ui_
: Gibt an, dass Sie eingebettete Komponenten verwendenmode: custom mode: payment
: Gibt an, dass Sie einmalige Zahlungen für die Checkout-Sitzung akzeptierenreturn_
: Stellt die URL dar, an die Ihre Kundinnen/Kunden weitergeleitet werden, nachdem sie ihre Zahlung in der App oder auf der Website der Zahlungsmethode authentifiziert oder abgebrochen habenurl
Geben Sie außerdem die client_secret der Checkout-Sitzung für die spätere Verwendung an den Client zurück.
Jede Checkout-Sitzung generiert nach Bestätigung einen PaymentIntent. Wenn Sie zusätzliche Parameter aus Ihrer aktuellen Integration beim Erstellen eines PaymentIntent beibehalten möchten, sehen Sie sich die unter payment_intent_data verfügbaren Optionen an.
E-Mail-Adressen von Kundinnen/Kunden erfassenClientseitig
Die Umstellung auf eingebettete Komponenten erfordert einen zusätzlichen Schritt, in dem die E-Mail-Adresse Ihrer Kundinnen/Kunden erfasst wird.
Payment Element hinzufügenClientseitig
Sie können jetzt das Card Element und die Elemente der einzelnen Zahlungsmethoden durch das Payment Element ersetzen. Das Payment Element passt basierend auf der Zahlungsmethode und dem Land die zu erfassenden Eingabefelder automatisch an (z. B. Erfassung der vollständigen Rechnungsadresse), sodass Sie keine nutzerdefinierten Eingabefelder pflegen müssen.
Im folgenden Beispiel wird CardElement
durch PaymentElement
ersetzt:
Submit-Handler aktualisierenClientseitig
Statt einzelne Bestätigungsmethoden wie stripe.
oder stripe.
zu verwenden, nutzen Sie checkout.confirm, um Zahlungsinformationen zu erfassen und an Stripe zu übermitteln.
Um die Checkout-Sitzung zu bestätigen, aktualisieren Sie Ihren Submit-Handler, sodass er checkout.
anstelle einzelner Bestätigungsmethoden verwendet.
Beim Aufruf versucht checkout.
, alle erforderlichen Aktionen durchzuführen, wie z. B. das Anzeigen eines 3DS-Dialogfelds oder die Weiterleitung an eine Bankautorisierungsseite. Nach der Bestätigung werden die Kundinnen/Kunden an die von Ihnen konfigurierte return_
weitergeleitet. Dies entspricht in der Regel einer Seite auf Ihrer Website, die den Status der Zahlung angibt.
Wenn Sie den gleichen Bezahlvorgang für Kartenzahlungen beibehalten möchten und Weiterleitungen nur für Zahlungsmethoden mit Weiterleitung vornehmen möchten, können Sie die Weiterleitung auf if_
festlegen.
Im folgenden Codebeispiel wird stripe.
durch checkout.
ersetzt:
// Create the PaymentIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await stripe.confirmCardPayment(clientSecret, { payment_method: { card: elements.getElement(CardElement) } }); if (error) { handleError(error); } };
const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await checkout.confirm(); if (error) { handleError(error); } };
Ereignisse nach der Zahlung verarbeitenServerseitig
Stripe sendet das Ereignis checkout.session.completed, wenn die Zahlung abgeschlossen ist. Verwenden Sie das Webhook-Tool im Dashboard oder folgen Sie dem Leitfaden für Webhooks, um diese Ereignisse zu empfangen und Aktionen auszuführen. Dazu zählen beispielsweise der Versand von Bestellbestätigungen per E-Mail, das Protokollieren des Verkaufs in der Datenbank und die Einführung eines Versand-Workflows.
Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnte der Kunde/die Kundin das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist und böswillige Clients die Antwort manipulieren könnten. Wenn Sie Ihre Integration so einrichten, dass sie asynchrone Ereignisse überwacht, können Sie verschiedene Arten von Zahlungsmethoden mit einer einzigen Integration akzeptieren.
Neben der Abwicklung des checkout.
-Ereignisses empfehlen wir die Abwicklung von diesen weiteren Ereignissen, wenn Sie Zahlungen mit dem Payment Element erfassen:
Ereignis | Beschreibung | Aktion |
---|---|---|
checkout.session.completed | Wird gesendet, wenn Kundinnen und Kunden eine Zahlung erfolgreich abgeschlossen haben. | Senden Sie den Kund/innen eine Auftragsbestätigung und wickeln Sie die Bestellung ab. |
checkout_session.async_payment_succeeded | Wird gesendet, wenn die Zahlung durch einen Kunden/eine Kundin mit einer verzögerten Zahlungsmethode schließlich erfolgreich ist. | Senden Sie den Kund/innen eine Auftragsbestätigung und wickeln Sie die Bestellung ab. |
checkout.session.async_payment_failed | Wird gesendet, wenn ein Kunde/eine Kundin einen Zahlungsversuch durchführt, die Zahlung jedoch fehlschlägt. | Wenn eine Zahlung von async_ wechselt, bieten Sie den Kundinnen/Kunden einen weiteren Zahlungsversuch an. |
checkout.session.expired | Wird gesendet, wenn die Checkout-Sitzung eines Kunden/einer Kundin abgelaufen ist, also nach 24 Stunden. | Wenn eine Zahlung von expired zu payment_ übergeht, bieten Sie den Kundinnen/Kunden an, die Checkout-Seite neu zu laden und eine neue Checkout-Sitzung zu erstellen. |
Integration testen
- Navigieren Sie zu Ihrer Bezahlseite.
- Geben Sie in den Zahlungsdetails eine Zahlungsmethode aus der folgenden Tabelle ein. Für Kartenzahlungen:
- Geben Sie für die Karte ein beliebiges Ablaufdatum in der Zukunft ein.
- Geben Sie als Prüfziffer/CVC eine 3-stellige Zahl ein.
- Geben Sie eine beliebige Postleitzahl ein.
- Zahlung an Stripe senden.
- Gehen Sie zum Dashboard und suchen Sie auf der Seite Transaktionen nach der Zahlung. Wenn Ihre Zahlung erfolgreich war, wird sie in dieser Liste angezeigt.
- Klicken Sie auf Ihre Zahlung, um weitere Details wie Rechnungsinformationen und die Liste der gekauften Artikel anzuzeigen. Sie können diese Informationen verwenden, um die Bestellung abzuwickeln.
Hier finden Sie weitere Informationen zum Testen Ihrer Integration.