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
      Testzeiträume dynamisch anpassen
      Dynamisches Aktualisieren von Rabatten
    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
Betrug verstehen
Betrugsprävention von Radar
Zahlungsanfechtungen verwalten
Identitäten verifizieren
StartseiteZahlungenBuild a checkout pageDynamically update checkout

Rabatte dynamisch aktualisierenPrivate Vorschau

Aktualisieren Sie Rabatte als Reaktion auf Änderungen, die Kundinnen/Kunden während des Bezahlvorgangs vornehmen.

Private Vorschau

Diese Funktion befindet sich in der privaten Vorschau. Fordern Sie Zugriff auf dynamische Aktualisierungen am Bezahlvorgang an.

Erfahren Sie, wie Sie dynamisch Rabatte für eine Checkout-Sitzung hinzufügen oder entfernen.

Anwendungsszenarien

In diesem Leitfaden wird beschrieben, wie eine Vernetzung mit Ihrem internen Rabattsystem durchführen, um dynamische Rabatte zu erstellen. Sie können aber auch:

  • Treuerabatte anwenden: Wenden Sie automatisch Rabatte basierend auf der Treuestufe der Kundinnen/Kunden oder der Kaufhistorie an.
  • Werbeaktionen für den Warenkorb: Fügen Sie Rabatte hinzu, wenn die Bestellsumme bestimmte Schwellenwerte überschreitet (z. B. Rabatt in Höhe von 10 $ auf Bestellungen über 100 $).
  • Kurzfristige Angebote: Wenden Sie zeitlich begrenzte Aktionsrabatte an oder entfernen Sie abgelaufene Rabattcodes.
  • Standortbezogene Rabatte: Wenden Sie regionsspezifische Rabatte basierend auf der Versandadresse des Kunden/der Kundin an.
  • Kundenspezifische Angebote: Erstellen Sie personalisierte Rabattbeträge basierend auf Kundensegmenten oder vorherigem Kaufverhalten.

SDK einrichten
Serverseitig

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

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

Server-SDK aktualisieren
Serverseitig

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

Ruby
Python
PHP
Node
.NET
Go
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;'

Berechtigungen zum Aktualisieren der Checkout-Sitzung konfigurieren
Serverseitig

Übergeben Sie permissions.update_discounts=server_only, wenn Sie die Checkout-Sitzung erstellen, um die Aktualisierung von Rabatten über Ihren Server zu ermöglichen. Durch die Übergabe dieser Option wird die clientseitige Rabattanwendung deaktiviert, wodurch sichergestellt wird, dass die gesamte Rabattlogik über Ihren Server läuft.

Command Line
cURL
Ruby
Python
PHP
Java
Node
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_discounts]"=server_only \ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode return_url="https://example.com/return"

Rabatte dynamisch aktualisieren
Serverseitig

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

Sicherheitshinweis

Clientseitiger Code wird in einer Umgebung ausgeführt, die vollständig vom Nutzer/von der Nutzerin 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 bestimmte Kundeninteraktionen, anstatt sie zu allgemein zu halten (z. B. „Treuerabatt anwenden“ statt einer allgemeinen „Update“-Aktion). Spezifische Endpoints helfen dabei, den Zweck klar zu halten und die Validierungslogik einfacher zu schreiben und zu pflegen.
  • Übergeben Sie Sitzungsdaten nicht direkt vom Client an Ihren Endpunkt. Böswillige Clients können Anforderungsdaten ändern, was sie zu einer unzuverlässigen Quelle für die Bestimmung des Checkout-Sitzungsstatus macht. Übergeben Sie stattdessen die Sitzungs-ID an Ihren Server und verwenden Sie sie, um die Daten sicher von der API Stripe abzurufen.
Ruby
Python
PHP
Node
.NET
Go
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"
# Return a boolean indicating whether the discounts are valid. def validate_discounts(discounts, session # Basic validation - ensure we only have one discount if any return true if discounts.empty? || discounts == "" # Ensure only one discount is being applied return false if discounts.is_a?(Array) && discounts.length > 1 # Add your own validation logic here # For example, validate promo codes against your internal system true end # Return an array of the updated discounts or the original ones if no update is needed. def recompute_discounts(discounts, session) # If removing discounts, return empty return [] if discounts.empty? || discounts == "" # Example: Access your internal discounts system # This could be based on customer ID, promo codes, cart value, etc. customer_id = session.customer || session.client_reference_id cart_total = session.amount_total # Example internal discount calculation discount_amount = calculate_customer_discount(customer_id, cart_total) if discount_amount > 0 # Create a dynamic discount using coupon_data [{ coupon_data: { name: "Customer Discount", amount_off: discount_amount, currency: session.currency || 'usd' } }] else # No discount applicable [] end end # Example function to integrate with your internal discounts system def calculate_customer_discount(customer_id, cart_total) # Example logic - replace with your actual discount system # This could check: # - Customer loyalty tier # - Active promotions # - Cart value thresholds # - Seasonal discounts # Example: 10% off for carts over 100 USD, max 20 USD discount if cart_total > 10000 # 100 USD in cents discount = [cart_total * 0.1, 2000].min # Max 20 USD discount discount.to_i else 0 end end post '/update-discounts' do content_type :json request.body.rewind request_data = JSON.parse(request.body.read) checkout_session_id = request_data['checkout_session_id'] discounts = request_data['discounts'] # 1. Retrieve the Checkout Session session = Stripe::Checkout::Session.retrieve(checkout_session_id) # 2. Validate the discounts if !validate_discounts(discounts, session) return { type: 'error', message: 'Your discounts are invalid. Please refresh your session.' }.to_json end # 3. Recompute the discounts with your custom logic discounts = recompute_discounts(discounts, session) # 4. Update the Checkout Session with the new discounts if discounts Stripe::Checkout::Session.update(checkout_session_id, { discounts: discounts, }) return { type: 'object', value: { succeeded: true } }.to_json else return { type: 'error', message: "We could not update your discounts. Please try again." }.to_json end end

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 dem neuen Rabatt aktualisiert.

index.html
<button id="apply-customer-discount"> Apply Customer Discount </button>
checkout.js
document.getElementById('apply-customer-discount') .addEventListener("click", async (event) => { const updateCheckout = () => { return fetch("/apply-customer-discount", { method: "POST", headers: { "Content-type": "application/json", }, body: JSON.stringify({ checkout_session_id: checkout.session().id, }) }); }; const response = await checkout.runServerUpdate(updateCheckout); if (!response.ok) { // Handle error state return; } // Update UI to reflect the applied discount event.target.textContent = "Discount Applied!"; event.target.disabled = true; });

Integration testen

Befolgen Sie diese Schritte, um Ihre Integration zu testen und sicherzustellen, dass Ihre dynamischen Rabatte korrekt funktionieren.

  1. Richten Sie eine Sandbox-Umgebung ein, die die Einrichtung Ihrer Produktionsumgebung widerspiegelt. Verwenden Sie Ihre Sandbox-API-Schlüssel von Stripe für diese Umgebung.

  2. Simulieren Sie verschiedene Rabattszenarien, um zu überprüfen, ob Ihre Funktion recomputeDiscounts verschiedene Szenarien korrekt verarbeitet.

  3. Überprüfen Sie die serverseitige Logik, indem Sie Log- oder Debugging-Tools verwenden, um zu bestätigen, dass Ihr Server Folgendes tut:

    • Ruft die Checkout-Sitzung ab.
    • Validiert Rabattanfragen.
    • Berechnet aktualisierte Rabatte basierend auf Ihrer Geschäftslogik neu.
    • Aktualisiert die Checkout-Sitzung mit den neuen Rabatten, wenn Ihre nutzerdefinierten Bedingungen erfüllt sind. Stellen Sie sicher, dass die aktualisierte Antwort die neuen Rabatte enthält. Standardmäßig enthält die Antwort das Rabattfeld nicht, es sei denn, die Anfrage erweitert das Objekt.
  4. Überprüfen Sie die clientseitige Logik, indem Sie den Bezahlvorgang mehrmals in Ihrem Browser abschließen. Achten Sie darauf, wie die Nutzeroberfläche nach dem Anwenden eines Rabatts aktualisiert wird. Stellen Sie sicher, dass:

    • Die Funktion runServerUpdate wird wie erwartet aufgerufen.
    • Rabatte werden basierend auf Ihrer Geschäftslogik korrekt angewendet.
    • Die Gesamtsumme des Bezahlvorgangs wird aktualisiert, um den angewendeten Rabatt widerzuspiegeln.
    • Fehlermeldungen werden ordnungsgemäß angezeigt, wenn ein Rabatt nicht angewendet werden konnte.
  5. Testen Sie verschiedene Rabattszenarien, einschließlich ungültiger Rabattanfragen, oder simulieren Sie Serverfehler, um den Umgang mit Fehlern sowohl serverseitig als auch clientseitig zu testen.

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