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 Payment Intents API verwendet, um einmalige Zahlungen zu erstellen und zu verfolgen oder Kartendaten bei einer Zahlung zu speichern, führen Sie die folgenden Schritte aus, um das Payment Element mit Checkout-Sitzungen zu verwenden.
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.
OptionalZusätzliche Optionen für die Checkout-SitzungServerseitig
Checkout-Sitzungen akzeptieren zusätzliche Optionen, die den Zahlungseinzug beeinflussen.
Eigenschaft | Typ | Beschreibung | Pflichtfeld |
---|---|---|---|
mode |
| Gibt an, ob das Payment Element mit einem PaymentIntent, einem SetupIntent oder einem Abonnement verwendet wird. | Ja |
line_ |
| Eine Liste der Artikel, die die Kundin/der Kunde kauft. Siehe weitere konfigurierbare Parameter. | Ja, für den payment - und subscription -Modus |
automatic_ |
| Wenn Sie diesen Parameter aktivieren, erfasst Checkout alle für die Steuerberechnung erforderlichen Informationen zur Rechnungsadresse. | Nein |
allow_ |
| Aktiviert nutzerseitig einlösbare Promo-Codes. | Nein |
billing_ |
| Geben Sie an, ob Checkout die Rechnungsadresse der Kundin/des Kunden erfasst oder nicht. Der Standardwert lautet auto . | Nein |
payment_ |
| Eine Liste der Arten von Zahlungsmethoden (zum Beispiel Karte), die diese Checkout-Sitzung akzeptieren kann. Dies ist nicht erforderlich, wenn Sie dynamische Zahlungsmethoden verwenden. | Nein |
phone_ |
| Steuert die Einstellungen für die Erfassung von Telefonnummern für die Sitzung. Sie können den Modus zwischen payment and subscription festlegen. | Nein |
shipping_ |
| Wenn dies festgelegt ist, bietet Checkout eine Konfiguration, um eine Versandadresse von einem Kunden/einer Kundin zu erfassen. | Nein |
shipping_ |
| Die Versandratenoptionen, die auf diese Sitzung angewendet werden sollen. Bis zu einem Maximum von 5. | Nein |
customer_ |
| Steuert, ob in der Checkout-Sitzung ein/e Customer erstellt wird, wenn noch keines an die Sitzung übergeben wurde. Sie können diese Option im payment - und setup -Modus festlegen. | Nein |
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); } };
OptionalZahlungsdaten bei der Zahlung speichern
Wenn Ihre bestehende Integration auch Zahlungsdetails während einer Zahlung speichert, verwenden Sie den saved_payment_method_options.payment_method_save beim Erstellen der Checkout-Sitzung, anstatt setup_
bei der Zahlungsbestätigung mit stripe.
zu übergeben.
Zum Speichern einer Zahlungsmethode ist eine Kundin/ein Kunde erforderlich. Übergeben Sie einen/eine bestehende/n Kunden/Kundin oder, um einen neuen Kunden/eine neue Kundin zu erstellen, setzen Sie die customer_creation der Checkout-Sitzung auf always
.
Außerdem müssen Sie beim Bestätigen der Checkout-Sitzung einen Wert für savePaymentMethod übergeben, um zu bestätigen, ob die Zahlungsmethode gespeichert ist oder nicht.
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.