Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwicklerressourcen
Ü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
      Versandoptionen dynamisch anpassen
      Einzelposten 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
    Zahlungen auf Ihrem Server manuell genehmigen
    Nach der Zahlung
    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
Umgang mit mehreren Währungen
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Präsenzzahlungen
Terminal
Mehr als Zahlungen
Unternehmensgründung
Krypto
Financial Connections
Climate
StartseiteZahlungenBuild a checkout pageDynamically update checkout

Einzelposten dynamisch aktualisierenPrivate Vorschau

Aktualisieren Sie Posten als Reaktion auf Änderungen, die während des Bezahlvorgangs vorgenommen wurden.

Private Vorschau

Diese Funktion befindet sich in der privaten Vorschau. Request access to dynamic updates to checkout.

Erfahren Sie, wie Sie Einzelposten, die in einer Checkout-Sitzung enthalten sind, dynamisch hinzufügen, entfernen oder aktualisieren.

Anwendungsszenarien

In diesem Leitfaden wird beschrieben, wie Sie Posten aktualisieren, um Upselling für ein Abonnement zu erhalten. Sie haben aber auch folgende Möglichkeiten:

  • Bestand prüfen: Sie Bestandsüberprüfungen und -stopps durch, wenn Kundinnen und Kunden versuchen, Artikelmengen zu ändern.
  • Neue Produkte hinzufügen: Fügen Sie ein kostenloses Produkt hinzu, wenn die Bestellsumme einen bestimmten Betrag überschreitet.
  • Versandkosten ändern: Wenn sich die Summe der Bestellung ändert, aktualisieren Sie die Versandkosten, indem Sie die in diesem Leitfaden beschriebene Methode mit den Versandoptionen während des Bezahlvorgangs kombinieren.
  • Steuersätze ändern: Wenn Sie Stripe Tax nicht verwenden, können Sie die Steuersätze für Einzelposten basierend auf der eingegebenen Versandadresse dynamisch aktualisieren.

SDK einrichten
Serverseitig

Verwenden Sie unsere offiziellen Bibliotheken, um von Ihrer Anwendung aus auf die Stripe API zuzugreifen:

Command Line
Ruby
gem install stripe -v 15.1.0-beta.2

Server-SDK aktualisieren
Serverseitig

Um diese Beta-Version zu verwenden, aktualisieren Sie zunächst Ihr SDK, um den checkout_server_update_beta=v1-Header für die Beta-Version zu verwenden.

Ruby
# 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'
Stripe.api_version = '2025-03-31.basil; checkout_server_update_beta=v1;'

Berechtigungen zum Aktualisieren der Checkout-Sitzung konfigurieren
Serverseitig

Übergeben Sie permissions.update_line_items=server_only, wenn Sie die Checkout-Sitzung erstellen, um die Aktualisierung von Posten von Ihrem Server aus zu ermöglichen. Durch Übergeben dieser Option werden auch clientseitige Aktualisierungen von Posten wie updateLineItemQuantity deaktiviert, wodurch sichergestellt wird, dass alle Aktualisierungen Ihren Server durchlaufen.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-03-31.basil; checkout_server_update_beta=v1;" \ -d ui_mode=custom \ -d "permissions[update_line_items]"=server_only \ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=subscription \ --data-urlencode return_url="https://example.com/return"

Einzelposten dynamisch aktualisieren
Serverseitig

Erstellen Sie einen neuen Endpoint auf Ihrem Server, um die Posten in der Checkout-Sitzung zu aktualisieren. Sie werden dies in einem späteren Schritt vom Frontend aus aufrufen.

Sicherheitshinweis

Es ist wichtig zu verstehen, dass clientseitiger Code in einer Umgebung ausgeführt wird, die vollständig von Nutzern/Nutzerinnen kontrolliert wird. Ein/e böswillige/r Nutzer/in kann Ihre clientseitige Validierung umgehen, Anfragen abfangen und ändern oder sogar völlig neue Anfragen an Ihren Server erstellen.

Beim Entwerfen des Endpoints wird Folgendes empfohlen:

  • Entwerfen Sie Endpoints für spezifische Kundeninteraktionen, anstatt sie zu allgemein zu halten (z. B. „Cross-Selling-Posten hinzufügen“ statt einer allgemeinen „Aktualisierungs“-Aktion). Spezifische Endpoints helfen dabei, den Zweck klar zu halten und die Validierungslogik einfacher zu schreiben und zu pflegen.
  • Vermeiden Sie es, Sitzungsdaten direkt vom Client an Ihren Endpunkt zu übertragen. Böswillige Clients können Anforderungsdaten ändern, was sie zu einer unzuverlässigen Quelle für die Bestimmung des Checkout-Sitzungsstatus macht. Übertragen Sie stattdessen die Sitzungs-ID an Ihren Server und verwenden Sie sie, um die Daten sicher von der Stripe-API abzurufen.
Ruby
require 'sinatra' require 'json' require 'stripe' set :port, 4242 # 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'
Stripe.api_version = '2025-03-31.basil; checkout_server_update_beta=v1;' MONTHLY_PRICE_ID = '{{MONTHLY_PRICE}}' YEARLY_PRICE_ID = '{{YEARLY_PRICE}}' post '/change-subscription-interval' do content_type :json request.body.rewind request_data = JSON.parse(request.body.read) checkout_session_id = request_data['checkout_session_id'] interval = request_data['interval'] if checkout_session_id.nil? || !['yearly', 'monthly'].include?(interval) status 400 return { type: 'error', message: 'We could not process your request. Please try again later.' }.to_json end begin # 1. Create the new line items for the session new_price = interval == 'yearly' ? YEARLY_PRICE_ID : MONTHLY_PRICE_ID line_items = [{ price: new_price, quantity: 1, }] # 2. Update the Checkout Session with the new line items. Stripe::Checkout::Session.update(checkout_session_id, { line_items: line_items, }) # 3. Return success response. { type: 'success' }.to_json rescue Stripe::StripeError # Handle Stripe errors with a generic error message status 400 { type: 'error', message: 'We couldn't process your request. Please try again later.' }.to_json rescue StandardError # Handle unexpected errors status 500 { type: 'error', message: 'Something went wrong on our end. Please try again later.' }.to_json end end

Beim Aktualisieren von Posten müssen Sie den gesamten Bereich der Posten erneut übertragen.

  • Um eine vorhandene Position beizubehalten, geben Sie ihre id an.
  • Um einen vorhandenen Posten zu aktualisieren, geben Sie die entsprechende id zusammen mit den neuen Werten der zu aktualisierenden Felder an.
  • Um einen neuen Posten hinzuzufügen, geben Sie einen price und eine quantity ohne eine id an.
  • Um einen vorhandenen Posten zu entfernen, lassen Sie die ID des Postens aus dem erneut übertragenen Array weg.
  • Um eine Position neu anzuordnen, geben Sie die entsprechende id an der gewünschten Position im erneut übertragenen Array an.

Client-SDK aktualisieren
Clientseitig

Initialisieren Sie stripe.js mit dem Beta-Header custom_checkout_server_updates_1.

checkout.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
, { betas: ['custom_checkout_server_updates_1'], });

Serveraktualisierungen aufrufen
Clientseitig

Lösen Sie das Update von Ihrem Frontend aus, indem Sie eine Anfrage an Ihren Server stellen und diese in runServerUpdate einschließen. Wenn die Anfrage erfolgreich ist, wird das Session-Objekt mit den neuen Posten aktualisiert.

index.html
<button id="change-subscription-interval" role="switch" aria-checked="false"> Save with a yearly subscription </button>
checkout.js
document.getElementById('change-subscription-interval') .addEventListener("click", async (event) => { const button = event.target; const isCurrentSubscriptionMonthly = button.getAttribute("aria-checked") === "false"; const updateCheckout = () => { return fetch("/change-subscription-interval", { method: "POST", headers: { "Content-type": "application/json", }, body: JSON.stringify({ checkout_session_id: checkout.session().id, interval: isCurrentSubscriptionMonthly ? "yearly" : "monthly", }) }); }; const response = await checkout.runServerUpdate(updateCheckout); if (!response.ok) { // Handle error state return; } // Update toggle state on success const isNewSubscriptionMonthly = !isCurrentSubscriptionMonthly; button.setAttribute("aria-checked", !isNewSubscriptionMonthly); button.textContent = isNewSubscriptionMonthly ? "Save with a yearly subscription" : "Use monthly subscription"; });
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