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

Zahlungsbeträge dynamisch aktualisieren

Erfahren Sie, wie Sie die Gesamtbeträge ändern, wenn Kund/innen ihre Auswahl während des Bezahlvorgangs ändern.

Aktualisieren Sie den Betrag einer Checkout-Sitzung oder eines Payment Intent, wenn Kund/innen ändern, was sie kaufen oder wie viel sie bezahlen. Berechnen Sie die Summen auf Ihrem Server neu und aktualisieren Sie dann den Betrag des PaymentIntent.

Häufige Anwendungsszenarien

  • Add-ons hinzufügen oder entfernen (z. B. Geschenkverpackung oder Garantie).
  • Wählen Sie eine andere Versandmethode oder Liefergeschwindigkeit aus.
  • Fügen Sie zusätzliche Dienstleistungen oder Gebühren hinzu.
  • Rabattcode oder Store-Gutschrift vor Steuern anwenden oder entfernen.

Best Practices für die Sicherheit

  • Berechnen Sie Beträge auf Ihrem Server neu. Vertrauen Sie nicht auf vom Client angegebene Preise oder Summen.
  • Autorisieren Sie die Aktualisierung basierend auf Ihren Unternehmensregeln (z. B. Höchstmengen durchsetzen).
  • Aktualisieren Sie nur Sitzungen, die aktiv und nicht abgeschlossen oder abgelaufen sind.

Einschränkungen und Verhalten

  • Sie können den Betrag aktualisieren, während der Payment Intent oder die Checkout-Sitzung auf Zahlung wartet (z. B. requires_payment_method oder requires_confirmation).
  • Nach der Bestätigung können Sie den Betrag in der Regel nicht erhöhen.

Client-SDK aktualisieren
Clientseitig

Wenn Sie Elements mit der Checkout Sessions API verwenden, schließen Sie Client-Aufrufe an Ihren Server in runServerUpdate ein, damit der Bezahlvorgang-Status und die Gesamtsummen aktualisiert werden.

checkout.js
import {loadStripe} from '@stripe/stripe-js'; // Optional: include beta flags if your integration requires them const stripe = await loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
, { betas: ['custom_checkout_server_updates_1'], }); const checkout = stripe.initCheckout({ clientSecret, elementsOptions: {/* ... */}, }); // Example: Add additional service using price_data const loadActionsResult = await checkout.loadActions(); if (loadActionsResult.type === 'success') { const actions = loadActionsResult.actions; const session = actions.getSession(); document .getElementById('add-service') .addEventListener('click', async () => { const updateOnServer = () => fetch('/update-custom-amount', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ checkout_session_id: session.id, product_id: 'gift_wrap', // Server looks up actual price }), }); const response = await actions.runServerUpdate(updateOnServer); if (!response.ok) { // show error state } }); }

Server-Endpoints erstellen
Serverseitig

Berechnen Sie Beträge und validieren Sie Eingaben auf Ihrem Server. Anschließend können Sie line_items mit price_data aktualisieren, um Ad-hoc-Zahlungen hinzuzufügen.

Hinweis

Durch die Aktualisierung der line_items oder price_data werden die Gesamtbeträge der Sitzung und die Steuern neu berechnet.

Node
Python
No results
import express from 'express'; import Stripe from 'stripe'; const app = express(); app.use(express.json()); const stripe = new Stripe(
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
); // Product catalog with prices - store this securely server-side const PRODUCTS = { gift_wrap: { name: 'Gift Wrap', price: 500 }, // $5.00 express_shipping: { name: 'Express Shipping', price: 1500 }, // $15.00 warranty: { name: 'Extended Warranty', price: 2000 }, // $20.00 }; app.post('/update-custom-amount', async (req, res) => { try { const {checkout_session_id, product_id} = req.body; const session = await stripe.checkout.sessions.retrieve(checkout_session_id); if (session.status === 'complete' || session.expires_at * 1000 < Date.now()) { return res.status(400).json({error: 'Session is no longer updatable.'}); } // Look up product price server-side const product = PRODUCTS[product_id]; if (!product) { return res.status(400).json({error: 'Invalid product ID'}); } // Add the additional product via price_data const updated = await stripe.checkout.sessions.update(checkout_session_id, { line_items: [ { price_data: { currency: 'usd', product_data: {name: product.name}, unit_amount: product.price, }, quantity: 1, }, ], }); return res.json({id: updated.id, amount_total: updated.amount_total}); } catch (err) { return res.status(400).json({error: err.message}); } }); app.listen(4242, () => console.log('Server running on port 4242'));
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