Weiter zum Inhalt
Konto erstellen oder anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellenAnmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwicklerressourcen
APIs und SDKsHilfe
Übersicht
Informationen zu Stripe Payments
Aktualisieren Sie Ihre Integration
Zahlungsanalysefunktionen
Online-Zahlungen
ÜbersichtIhren Use case findenVerwenden Sie Managed Payments
Payment Links verwenden
Vorgefertigte Checkout-Seite verwenden
Erstellen Sie eine benutzerdefinierte Integration mit Elements
    Übersicht
    QuickStart-Leitfäden
    Stripe Elements
    Vergleichen Sie Checkout-Sitzungen und PaymentIntents
    Erweiterte Integration entwerfen
    Erscheinungsbild anpassen
    Zahlungsmethoden verwalten
    Zusätzliche Informationen erfassen
    Abonnement-Integration erstellen
    Dynamische Aktualisierungen
      Versandoptionen
      Posten
      Dauer der Testphase
      Discounts
      Zahlungsbeträge
      Mengen der Posten
    Rabatte hinzufügen
    Steuern auf Ihre Zahlungen einziehen
    Gutschriften einlösen
    Lassen Sie Kundinnen/Kunden in ihrer Landeswährung zahlen
    Zahlungsmethoden von Kundinnen und Kunden speichern und abrufen
    Belege und bezahlte Rechnungen senden
    Zahlungen auf Ihrem Server manuell genehmigen
    Eine Zahlung separat autorisieren und einziehen
    Elements mit Checkout Sessions API-Änderungsprotokoll (Beta)
In-App-Integration erstellen
Präsenzzahlungen
Terminal
Zahlungsmethoden
Zahlungsmethoden hinzufügen
Zahlungsmethoden verwalten
Schnellerer Bezahlvorgang mit Link
Zahlungsszenarien
Umgang mit mehreren Währungen
Nutzerdefinierte Zahlungsabläufe
Flexibles Acquiring
Orchestrierung
Mehr als Zahlungen
Unternehmensgründung
Krypto
Agentenbasierter Handel
Financial Connections
Climate
Betrug verstehen
Betrugsprävention von Radar
Zahlungsanfechtungen verwalten
Identitäten verifizieren
Vereinigte Staaten
Deutsch
StartseiteZahlungenBuild a custom integration with ElementsDynamic updates

Einzelposten dynamisch aktualisieren

Erfahren Sie, wie Sie die Preise und den Inhalt eines Warenkorbs während des Bezahlvorgangs ändern können.

Private Vorschau

Dynamische Rabatte befinden sich in der privaten Vorschau. Zugriff auf dynamische Aktualisierungen des Bezahlvorgangs anfordern.

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.

Payment Intents API

Wenn Sie die Payment Intents API verwenden, müssen Sie Aktualisierungen von Posten manuell verfolgen und den Zahlungsbetrag ändern oder einen neuen PaymentIntent mit angepassten Beträgen erstellen.

SDK einrichten
Serverseitig

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

Command Line
Ruby
Python
PHP
Node.js
.NET
Go
Java
No results
gem install stripe -v 15.1.0-beta.2

Server-SDK aktualisieren
Serverseitig

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

Ruby
Python
PHP
Node
.NET
Gehen Sie zu
Java
No results
# 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;'

Aktualisierungsberechtigungen für die Checkout-Sitzung konfigurieren
Serverseitig

Übergeben Sie beim Erstellen der Checkout-Sitzung die Option permissions.update_line_items=server_only, um clientseitige Aktualisierungen zu deaktivieren und die Aktualisierung von Posten, wie z. B. updateLineItemQuantity, von Ihrem Server aus zu aktivieren.

Command Line
cURL
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
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 Endpoint auf Ihrem Server, um die Posten für die Checkout-Sitzung zu aktualisieren. Sie rufen diesen in einem späteren Schritt über das Frontend auf.

Sicherheitshinweis

Client-seitiger Code wird in einer Umgebung ausgeführt, die von dem/der Nutzer/in kontrolliert wird. Böswillige Nutzer/innen können Ihre clientseitige Validierung umgehen, Anfragen abfangen und ändern oder neue Anfragen an Ihren Server erstellen.

Beim Erstellen eines Endpoints empfehlen wir Folgendes:

  • Erstellen Sie Endpoints für bestimmte Kundeninteraktionen, anstatt sie allgemein zu gestalten. Beispiel: „Cross-Selling-Posten hinzufügen“ statt einer allgemeinen „Aktualisieren“-Aktion. Spezifische Endpoints können beim Schreiben und Pflegen der Validierungslogik helfen.
  • Übergeben Sie Sitzungsdaten nicht direkt vom Client an Ihren Endpoint. Bösartige Clients können Anfragedaten ändern, was sie zu einer unzuverlässigen Quelle für die Bestimmung des Status der Checkout-Sitzung macht. Übergeben Sie stattdessen die Sitzungs-ID an Ihren Server und verwenden Sie diese, um die Daten sicher von der Stripe API abzurufen.
Ruby
Python
PHP
Node
.NET
Gehen Sie zu
Java
No results
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 couldn't process your request. Please try again later.' }.to_json end begin # 1. Create the new line items for the Checkout 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 a 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

Wenn Sie Posten aktualisieren, müssen Sie das gesamte Array von Posten erneut übertragen.

  • Um einen bestehenden Posten beizubehalten, geben Sie seine id an.
  • Um einen bestehenden Posten zu aktualisieren, geben Sie seine 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 id an.
  • Um einen vorhandenen Posten zu entfernen, lassen Sie die ID des Postens im erneut übertragenen Array weg.
  • Um einen Posten neu anzuordnen, geben Sie seine 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'], });

Server-Aktualisierungen anfordern
Clientseitig

Senden Sie von Ihrem Frontend aus eine Aktualisierungsanfrage an Ihren Server und schließen Sie sie in runServerUpdate ein. Eine erfolgreiche Anfrage aktualisiert das Sitzungsobjekt mit den neuen Posten.

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: actions.getSession().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.
  • Schauen Sie sich unser Änderungsprotokoll an.
  • Fragen? Sales-Team kontaktieren.
  • LLM? Lesen Sie llms.txt.
  • Unterstützt von Markdoc