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

Dynamisches Aktualisieren von Rabatten

Erfahren Sie, wie Sie Rabattcodes während des Bezahlvorgangs anwenden und ändern.

Private Vorschau

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

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.

Payment Intents API

Wenn Sie die Payment Intents API verwenden, können Sie Rabatte anwenden, indem Sie den Zahlungsbetrag manuell berechnen und ändern oder indem Sie 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 Vorschaufunktion 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_discounts=server_only, um die Anwendung clientseitiger Rabatte zu deaktivieren und die Aktualisierung von Rabatten 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_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"

Dynamisches Aktualisieren von Rabatten
Serverseitig

Erstellen Sie einen Endpoint auf Ihrem Server, um Rabatte auf die Checkout-Sitzung anzuwenden. 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: „Treuerabatte anwenden“ 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.js
.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'], });

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

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