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
Billing
ÜbersichtÜber die Billing APIs
Abonnements
    Übersicht
    So funktionieren Abonnements
    Jetzt starten
    Quickstart
    Planen Sie eine Integration
    Erstellen Sie eine Integration
    Use Cases
    Weitere Informationen über Abonnements
    Schalten Sie den Abrechnungsmodus ein
    Abonnement-Ereignisse konfigurieren
    Berechtigungen
    Rechnungen für Abonnements
    Abonnementpläne
    Wiederkehrende Preismodelle
    Abonnements einrichten
    Konfigurieren Sie die Einzugsmethoden
    Preistabelle einbetten
    Abrechnungszyklen einrichten
    Abonnements verwalten
    Abonnements zu Stripe migrieren
    Produkt- oder Abonnementmengen festlegen
    Abonnements mit gemischten Intervallen
    Abonnements zurückdatieren
    Testzeiträume einrichten
    Verwaltung von Abonnements mit aufgeschobener Zahlung
    Gutscheine anwenden
    Abonnements bearbeiten
    Verwalten Sie die Zahlungsmethoden für Abonnements
    Analytik
    Abonnements auf iOS verwalten
Invoicing
Nutzungsbasierte Abrechnung
Angebote
Kundenverwaltung
Abrechnung mit anderen Produkten
Umsatzsicherung
Automatisierungen
Integration testen
Steuer
Übersicht
Stripe Tax verwenden
Compliance-Management
Berichte
Übersicht
Bericht auswählen
Berichte konfigurieren
Berichte für mehrere Konten
API für Berichte
Umsatzrealisierung
Daten
Übersicht
Abfrage von Unternehmensdaten
Sigma
Data Pipeline
Externe Daten importieren
Vereinigte Staaten
Deutsch
StartseiteUmsatzSubscriptions

Abonnement-Integration erstellen

Abonnements und wiederkehrende Zahlungen erstellen und verwalten

Seite für Festpreisabonnements mit dem Payment Element
Kaum Code

Mit der Appearance API anpassen.

Verwenden Sie diesen Leitfaden, um zu erfahren, wie Sie Festpreis- Abos verkaufen können. Sie verwenden das Payment Element mit der Checkout Sessions API, um ein nutzerdefiniertes Zahlungsformular zu erstellen, das Sie in Ihre Anwendung einbetten.

Wenn Sie kein nutzerdefiniertes Zahlungsformular erstellen möchten, können Sie einen gehosteten Bezahlvorgang integrieren. Eine ausführliche Version dieses End-to-End-Integrationsleitfadens finden Sie im Billing-Quickstart.

Wenn Sie zur Codierung einer Integration nicht bereit sind, können Sie einfache Abos manuell im Dashboard einrichten. Sie können auch Payment Links nutzen, um Abos ohne das Schreiben von Code einzurichten. Lesen Sie mehr zum Thema Entwerfen einer Integration, um zu verstehen, welche Entscheidungen Sie treffen müssen und welche Ressourcen Sie benötigen.

Sie werden Folgendes entwickeln

Dieser Leitfaden bietet Informationen zu den folgenden Vorgehensweisen:

  • Modellieren Sie Ihr Unternehmen, indem Sie einen Produktkatalog erstellen.
  • Entwickeln Sie einen Anmeldeprozess, durch den ein/e Kund/in erstellt wird.
  • Abos erstellen und Zahlungsinformationen erfassen.
  • Den Status der Zahlung und des Abos testen und überwachen.
  • Kunden ihren Plan ändern oder das Abo kündigen lassen.

API-Objekt-Definitionen

RessourceDefinition
Kundin/KundeStellt einen Kunden/eine Kundin dar, der/die ein Abonnement erwirbt. Verwenden Sie das mit einem Abonnement verknüpfte Kundenobjekt, um wiederkehrende Zahlungen durchzuführen und zu verfolgen und die Produkte zu verwalten, die sie abonnieren.
BerechtigungStellt den Zugriff eines Kunden/einer Kundin auf eine Funktion dar, die in einem Dienstleistungsprodukt enthalten ist, das er/sie abonniert hat. Wenn Sie ein Abonnement für den wiederkehrenden Kauf eines Produkts durch einen Kunden/eine Kundin erstellen, wird automatisch eine aktive Berechtigung für jede diesem Produkt zugeordnete Funktion erstellt. Wenn ein Kunde/eine Kundin auf Ihre Dienstleistungen zugreift, verwenden Sie seine/ihre aktiven Berechtigungen, um die in seinem/ihrem Abonnement enthaltenen Funktionen zu aktivieren.
FunktionStellt eine Funktion oder Fähigkeit dar, auf die Ihre Kundinnen und Kunden zugreifen können, wenn sie ein Dienstleistungsprodukt abonnieren. Sie können Funktionen in ein Produkt einfügen, indem Sie ProductFeatures erstellen.
RechnungEine Aufstellung der Beträge, die ein Kunde/eine Kundin schuldet, die den Zahlungsstatus vom Entwurf bis zur Bezahlung oder anderweitigem Abschluss verfolgt. Bei Abonnements werden automatisch Rechnungen erstellt.
PaymentIntentEine Möglichkeit zum Erstellen dynamischer Zahlungsabläufe. Mit einem PaymentIntent wird der Lebenszyklus der Bezahlvorgänge von Kundinnen/Kunden verfolgt, und es werden zusätzliche Authentifizierungsschritte ausgelöst, wenn dies aufgrund von gesetzlichen Vorschriften, nutzerdefinierten Radar-Betrugsregeln oder auf Weiterleitung basierenden Zahlungsmethoden erforderlich ist. Rechnungen erstellen automatisch PaymentIntents.
PaymentMethodDie Zahlungsmethoden eines Kunden/einer Kundin, mit denen er/sie für Ihre Produkte bezahlt. Sie können beispielsweise eine Kreditkarte in einem Kundenobjekt speichern und damit wiederkehrende Zahlungen für diesen Kunden/diese Kundin vornehmen. Wird in der Regel mit der Payment Intents API oder der Setup Intents API verwendet.
PreisDefiniert den Stückpreis, die Währung und den Rechnungszyklus für ein Produkt.
ProduktEine Ware oder Dienstleistung, die Ihr Unternehmen verkauft. Ein Dienstleistungsprodukt kann eine oder mehrere Funktionen beinhalten.
ProductFeatureStellt die Aufnahme einer einzelnen Funktion in ein einzelnes Produkt dar. Jedes Produkt ist für jede Funktion, die es enthält, mit einer ProductFeature verknüpft, und jede Funktion ist für jedes Produkt, das sie enthält, mit einer ProductFeature verknüpft.
AbonnementStellt den geplanten wiederkehrenden Kauf eines Produkts durch einen Kunden/eine Kundin dar. Verwenden Sie ein Abonnement, um Zahlungen einzuziehen und eine wiederholte Lieferung oder einen kontinuierlichen Zugriff auf ein Produkt zu ermöglichen.

Hier ist ein Beispiel dafür, wie Produkte, Funktionen und Berechtigungen zusammen funktionieren. Stellen Sie sich vor, Sie möchten einen wiederkehrenden Service einrichten, der zwei Stufen anbietet: ein Standard-Produkt mit grundlegenden Funktionalitäten und ein erweitertes Produkt, das erweiterte Funktionalitäten bietet.

  1. Sie erstellen zwei Funktionen: basic_features und extended_features.
  2. Sie erstellen zwei Produkte: standard_product und advanced_product.
  3. Für das Standardprodukt erstellen Sie eine ProductFeature, die basic_features mit standard_product verknüpft.
  4. Für das erweiterte Produkt erstellen Sie zwei ProductFeatures: eine, die basic_features mit advanced_product verknüpft, und eine, die extended_features mit advanced_product verknüpft.

Ein Kunde/eine Kundin, first_customer, abonniert das Standardprodukt. Wenn Sie das Abonnement erstellen, erstellt Stripe automatisch eine Berechtigung, die first_customer mit basic_features verknüpft.

Ein anderer Kunde/eine andere Kundin, second_customer, abonniert das erweiterte Produkt. Wenn Sie das Abonnement erstellen, erstellt Stripe automatisch zwei Berechtigungen: eine, die second_customer mit basic_features verknüpft, und eine, die second_customer mit extended_features verknüpft.

Sie können festlegen, welche Funktionen für einen Kunden/eine Kundin bereitgestellt werden sollen, indem Sie seine/ihre aktiven Berechtigungen abrufen oder das Ereignis mit der Zusammenfassung der aktiven Berechtigungen überwachen. Sie müssen ihre Abonnements, Produkte und Funktionen nicht abrufen.

Stripe einrichten

Installieren Sie den Stripe-Client Ihrer Wahl:

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Installieren Sie dann die Stripe-CLI. Mit der Stripe-CLI können Sie Webhooks testen und Stripe-APIs aufrufen. In einem späteren Abschnitt dieses Leitfadens wird erklärt, wie Sie mithilfe der CLI ein Preismodell einrichten können.

Command Line
Homebrew
Aus Quelle installieren
No results
# Install Homebrew to run this command: https://brew.sh/ brew install stripe/stripe-cli/stripe # Connect the CLI to your dashboard stripe login

Weitere Installationsoptionen finden Sie unter Mit der Stripe-CLI loslegen.

Preismodell erstellen
Stripe-CLI oder Dashboard

Erstellen Sie Ihre Produkte und die zugehörigen Preise im Dashboard oder mit der Stripe-CLI.

In diesem Beispiel wird ein Festpreisdienst mit zwei verschiedenen Service-Level-Optionen verwendet: Basic und Premium. Für jede Service-Level-Option müssen Sie ein Produkt und einen wiederkehrenden Preis erstellen. (Wenn Sie eine einmalige Gebühr, z. B. für die Einrichtung, hinzufügen möchten, erstellen Sie ein drittes Produkt mit einem einmaligen Preis. Der Einfachheit halber verzichtet dieses Beispiel auf eine einmalige Gebühr).

In diesem Beispiel wird jedes Produkt in monatlichen Intervallen abgerechnet. Der Preis für das Basic-Produkt beträgt 5 USD. Der Preis für das Premium-Produkt beträgt 15 USD.

Gehen Sie zur Seite Produkt hinzufügen und erstellen Sie zwei Produkte. Fügen Sie für jedes Produkt einen Preis hinzu, jeweils mit einem monatlich wiederkehrenden Abrechnungszeitraum:

  • Premium-Produkt: Premium-Dienstleistung mit zusätzlichen Funktionen

    • Preis: Pauschalpreis | 15 USD
  • Basic-Produkt: Basic-Dienstleistung mit minimalem Funktionsumfang

    • Preis: Pauschalpreis | 5 USD

Zeichnen Sie nach Erstellung der Preise die Preis-IDs auf, sodass diese in anderen Schritten verwendet werden können. Preis-IDs sehen in etwa wie folgt aus: price_G0FvDp6vZvdwRZ.

Wenn Sie bereit sind, verwenden Sie die Schaltfläche In Live-Modus kopieren oben rechts auf der Seite, um Ihr Produkt aus der Sandbox in den Live-Modus zu kopieren.

Erstellen Sie den Kunden
Client und Server

Stripe benötigt für jedes Abonnement eine/n Kundin/Kunden. Erfassen Sie in Ihrem Anwendungsfrontend alle erforderlichen Informationen von Ihren Nutzerinnen und Nutzern und leiten Sie diese an das Backend weiter.

Wenn Sie Adressdaten erfassen müssen, können Sie mit dem Adresselement eine Liefer- oder Rechnungsadresse für Ihre Kundinnen und Kunden erfassen. Weitere Informationen zum Adresselement finden Sie auf der Seite Adresselement.

register.html
<form id="signup-form"> <label> Email <input id="email" type="email" placeholder="Email address" value="test@example.com" required /> </label> <button type="submit"> Register </button> </form>
register.js
const emailInput = document.querySelector('#email'); fetch('/create-customer', { method: 'post', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: emailInput.value, }), }).then(r => r.json());

Erstellen Sie das Stripe Customer-Objekt auf dem Server.

Notiz

Stellen Sie sicher, dass Sie die Kunden-ID speichern, die Sie in der Checkout-Sitzung verwenden möchten.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}} \ -d name={{CUSTOMER_NAME}} \ -d "shipping[address][city]"=Brothers \ -d "shipping[address][country]"=US \ -d "shipping[address][line1]"="27 Fredrick Ave" \ -d "shipping[address][postal_code]"=97712 \ -d "shipping[address][state]"=CA \ -d "shipping[name]"={{CUSTOMER_NAME}} \ -d "address[city]"=Brothers \ -d "address[country]"=US \ -d "address[line1]"="27 Fredrick Ave" \ -d "address[postal_code]"=97712 \ -d "address[state]"=CA

Checkout-Sitzung erstellen
Server

Definieren Sie im Backend Ihres Anmeldeformulars einen Endpoint, der die Sitzung erstellt, die Ihr Frontend aufrufen kann. Sie benötigen die Preis-ID des Abos, das der/die Kund/in abschließt – Ihr Frontend übergibt diesen Wert.

Wenn Sie in Schritt 2 einen einmaligen Preis erstellt haben, übergeben Sie auch diese Preis-ID. Achten Sie darauf, dass Sie nach dem Erstellen einer Checkout-Sitzung das Client-Geheimnis in der Antwort zurück an den Client übergeben.

Notiz

Sie können lookup_keys anstelle von Preis-IDs verwenden, um Preise abzurufen. Ein Beispiel finden Sie in der Beispielanwendung.

Ruby
Python
.NET
PHP
Java
Node.js
Gehen Sie zu
No results
require 'stripe' require 'sinatra' # This test secret API key is a placeholder. Don't include personal details in requests with this key. # To see your test secret API key embedded in code samples, sign in to your Stripe account. # You can also find your test secret API key at https://dashboard.stripe.com/test/apikeys. Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
Stripe.api_version = '2025-09-30.clover' set :static, true set :port, 4242 YOUR_DOMAIN = 'http://localhost:3000' post '/create-checkout-session' do content_type 'application/json' session = Stripe::Checkout::Session.create({ ui_mode: 'custom', # Provide the customer ID of the customer you previously created customer: '{{CUSTOMER_ID}}', line_items: [{ # Provide the exact Price ID (for example, price_1234) of the product you want to sell price: '{{PRICE_ID}}', quantity: 1, }], mode: 'subscription', return_url: YOUR_DOMAIN + '/return?session_id={CHECKOUT_SESSION_ID}', }) { clientSecret: session.client_secret }.to_json end

Aktivieren Sie in Ihrem Dashboard die Zahlungsmethoden, die Sie von Ihren Kund/innen akzeptieren möchten. Checkout unterstützt mehrere Zahlungsmethoden.

Bezahlvorgang initialisieren
Client

Erstellen Sie entweder ein clientSecret-Promise, das mit dem Client-Geheimnis aufgelöst wird oder legen Sie es direkt als Geheimnis fest. Rufen Sie initCheckout auf und übergeben Sie clientSecret. initCheckout gibt ein Promise zurück, das in eine Checkout-Instanz aufgelöst wird.

Das Objekt checkout bildet die Grundlage Ihrer Bezahlseite und enthält Daten aus der Checkout-Sitzung sowie Methoden zum Aktualisieren der Sitzung.

Das von actions.getSession() zurückgegebene Objekt enthält Ihre Preisinformationen. Wir empfehlen, total und lineItems aus der Sitzung in Ihrer Nutzeroberfläche zu lesen und anzuzeigen.

Auf diese Weise können Sie neue Funktionen mit minimalen Codeänderungen aktivieren. Zum Beispiel erfordert das Hinzufügen von Preisen in manuellen Währungen keine Änderungen der Nutzeroberfläche, wenn Sie den Gesamtbetrag anzeigen.

checkout.js
const clientSecret = fetch('/create-checkout-session', {method: 'POST'}) .then((response) => response.json()) .then((json) => json.checkoutSessionClientSecret); const checkout = stripe.initCheckout({clientSecret}); const loadActionsResult = await checkout.loadActions(); if (loadActionsResult.type === 'success') { const session = loadActionsResult.actions.getSession(); const checkoutContainer = document.getElementById('checkout-container'); checkoutContainer.append(JSON.stringify(session.lineItems, null, 2)); checkoutContainer.append(document.createElement('br')); checkoutContainer.append(`Total: ${session.total.total.amount}`); }
index.html
<div id="checkout-container"></div>

Zahlungsinformationen erfassen
Client

Erfassen Sie Zahlungsdetails auf dem Client mit dem Payment Element. Das Payment Element ist eine vorgefertigte Komponente der Nutzeroberfläche, das die Erfassung von Zahlungsdaten für verschiedene Zahlungsmethoden vereinfacht.

Erstellen Sie zunächst ein Container-DOM-Element, um das Payment Element zu verbinden. Erstellen Sie dann eine Instanz des Payment Element mit checkout.createPaymentElement und verbinden Sie es durch Aufrufen von element.mount, wobei Sie entweder einen CSS-Selektor oder das Container-DOM-Element angeben.

index.html
<div id="payment-element"></div>
checkout.js
const paymentElement = checkout.createPaymentElement(); paymentElement.mount('#payment-element');

Die unterstützten Optionen finden Sie in der Stripe.js-Dokumentation.

Sie können das Erscheinungsbild aller Elements anpassen, indem Sie elementsOptions.appearance übergeben, wenn Sie Checkout im Frontend initialisieren.

Zahlung übermitteln
Clientseitig

Rendern Sie eine Schaltfläche Bezahlen, die Bestätigen von der Instanz Checkout aufruft, um die Zahlung abzusenden.

index.html
<button id="pay-button">Pay</button> <div id="confirm-errors"></div>
checkout.js
const checkout = stripe.initCheckout({clientSecret}); const loadActionsResult = await checkout.loadActions(); if (loadActionsResult.type === 'success') { const {actions} = loadActionsResult; const button = document.getElementById('pay-button'); const errors = document.getElementById('confirm-errors'); button.addEventListener('click', () => { // Clear any validation errors errors.textContent = ''; actions.confirm().then((result) => { if (result.type === 'error') { errors.textContent = result.error.message; } }); }); }

Webhooks überwachen
Server

Um die Integration abzuschließen, müssen Sie die von Stripe gesendeten Webhooks verarbeiten. Diese Ereignisse werden immer dann ausgelöst, wenn sich der Status in Stripe ändert, z.B. wenn für Abonnements neue Rechnungen erstellt werden. Richten Sie in Ihrer Anwendung einen HTTP-Handler ein, der eine POST-Anfrage akzeptiert, die das Webhook-Ereignis enthält, und überprüfen Sie die Signatur des Ereignisses:

server.rb
Ruby
Python
PHP
Java
Node.js
Gehen Sie zu
.NET
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'
post '/webhook' do # You can use webhooks to receive information about asynchronous payment events. # For more about our webhook events check out https://stripe.com/docs/webhooks. webhook_secret = ENV['STRIPE_WEBHOOK_SECRET'] payload = request.body.read if !webhook_secret.empty?

Verwenden Sie während der Entwicklung die Stripe CLI, um Webhooks zu überwachen und an Ihre Anwendung weiterzuleiten. Führen Sie Folgendes in einem neuen Datenterminal aus, während Ihre Entwicklungs-App ausgeführt wird:

Command Line
stripe listen --forward-to localhost:4242/webhook

Für die Produktionsphase können Sie eine Webhook-Endpoint-URL über das Dashboard oder mit der Webhook Endpoints API einrichten.

Sie müssen einige Ereignisse überwachen, um die verbleibenden Schritte in diesem Leitfaden abzuschließen. Weitere Informationen zu Abo-spezifischen Webhooks finden Sie unter Abo-Ereignisse.

Zugang zu Ihrer Dienstleistung bereitstellen
Client und Server

Nachdem das Abo nun aktiv ist, gewähren Sie Ihren Nutzer/innen Zugriff auf Ihren Dienst. Überwachen Sie dazu die Ereignisse customer.subscription.created, customer.subscription.updated und customer.subscription.deleted. Diese Ereignisse übergeben ein Abo-Objekt, das ein Status-Feld enthält, das anzeigt, ob das Abo aktiv oder überfällig ist oder gekündigt wurde. Eine vollständige Statusliste finden Sie unter Abo-Lebenszyklus.

In Ihrem Webhook-Handler:

  1. Überprüfen Sie den Abo-Status. Wenn er active lautet, hat Ihr/e Nutzer/in für Ihr Produkt bezahlt.
  2. Prüfen Sie das Produkt, auf das die Kundin/der Kunde ein Abo abgeschlossen hat und gewähren Sie Zugang zu Ihrem Dienst. Das Überprüfen des Produkts anstelle des Preises gibt Ihnen mehr Flexibilität, falls Sie die Preisgestaltung oder den Rechnungsstellungszeitraum ändern müssen.
  3. Speichern Sie product.id, subscription.id und subscription.status in Ihrer Datenbank zusammen mit der bereits gespeicherten customer.id. Überprüfen Sie diesen Datensatz, wenn Sie entscheiden, welche Funktionen für die Nutzer/innen Ihrer Anwendung aktiviert werden sollen.

The status of a subscription might change at any point during its lifetime, even if your application doesn’t directly make any calls to Stripe. For example, a renewal might fail because of an expired credit card, which puts the subscription into a past due status. Or, if you implement the customer portal, a user might cancel their subscription without directly visiting your application. Implementing your handler correctly keeps your application status in sync with Stripe.

Abo kündigen
Client und Server

Es ist gängige Praxis, dass Kundinnen/Kunden ihr Abonnement selbst kündigen können. In diesem Beispiel wird zur Seite mit den Kontoeinstellungen eine Kündigungsoption hinzugefügt.

Beispiel für eine Benutzeroberfläche zur Kündigung eines Abonnements.

Kontoeinstellungen mit der Option, das Abo zu kündigen

script.js
function cancelSubscription(subscriptionId) { return fetch('/cancel-subscription', { method: 'post', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ subscriptionId: subscriptionId, }), }) .then(response => { return response.json(); }) .then(cancelSubscriptionResponse => { // Display to the user that the subscription has been canceled. }); }

Definieren Sie im Backend den Endpoint, den Ihr Frontend aufrufen soll.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
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'
post '/cancel-subscription' do content_type 'application/json' data = JSON.parse request.body.read deleted_subscription = Stripe::Subscription.cancel(data['subscriptionId']) deleted_subscription.to_json end

Ihre Anwendung empfängt ein Ereignis vom Typ customer.subscription.deleted.

Aktualisieren Sie nach der Kündigung des Abonnements Ihre Datenbank, um die zuvor gespeicherte Stripe-Abonnement-ID zu entfernen, und beschränken Sie den Zugang zu Ihrem Dienst.

Nachdem ein Abo gekündigt wurde, kann es nicht reaktiviert werden. Sie können stattdessen die aktualisierten Rechnungsinformationen von Ihrer Kund/innen erfassen, deren Standard-Zahlungsmethode aktualisieren und ein neues Abo für den bestehenden Kundendatensatz erstellen.

Testen Sie Ihre Integration.

Zahlungsmethoden testen

Verwenden Sie die folgende Tabelle, um verschiedene Zahlungsmethoden und -szenarien zu testen.

ZahlungsmethodeSzenarioSo führen Sie den Test durch
BECS-LastschriftIhr/e Kund/in zahlt erfolgreich mit dem BECS-Lastschriftverfahren.Füllen Sie das Formular mit der Kontonummer 900123456 und BSB 000000 aus. Der bestätigte PaymentIntent geht zunächst in den Status processing über und dann drei Minuten später in den Status succeeded.
BECS-LastschriftDie Zahlung Ihres/Ihrer Kund/in schlägt fehl mit Code account_closed fehl.Füllen Sie das Formular mit der Kontonummer 111111113 und BSB 000000 aus.
KreditkarteDie Kartenzahlung ist erfolgreich, und es ist keine Authentifizierung erforderlich.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer 4242 4242 4242 4242 mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
KreditkarteFür die Kartenzahlung ist eine Authentifizierung erforderlich.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer 4000 0025 0000 3155 mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
KreditkarteDie Karte wird mit einem Ablehnungscode wie insufficient_funds abgelehnt.Füllen Sie das Kreditkartenformular aus und geben Sie die Kreditkartennummer 4000 0000 0000 9995 mit beliebiger Gültigkeitsdauer, CVC und Postleitzahl an.
SEPA-LastschriftIhr/e Kund/in zahlt erfolgreich mit dem SEPA-Lastschriftverfahren.Füllen Sie das Formular mit der Kontonummer AT321904300235473204 aus. Die bestätigte PaymentIntent geht zunächst in den Status „wird verarbeitet“ und dann drei Minuten später in den Status „erfolgreich“ über.
SEPA-LastschriftDer Status der PaymentIntent Ihrer Kundin/Ihre Kundin wechselt von processing zu requires_payment_method.Füllen Sie das Formular mit der Kontonummer AT861904300235473202 aus.

Ereignisse überwachen

Richten Sie Webhooks ein, um Abo-Änderungsereignisse wie Upgrades und Kündigungen zu überwachen. Erfahren Sie mehr über Abo-Webhooks. Sie können Ereignisse im Dashboard oder mit der Stripe CLI anzeigen.

Weitere Informationen finden Sie unter Billing-Integration testen.

OptionalPlanänderungen auf Kundenseite zulassen
Client und Server

Um Ihre Kund/innen Ihr Abo ändern zu lassen, erfassen Sie die Preis-ID der Option, zu der sie wechseln möchten. Übermitteln Sie dann die neue Preis-ID vom Frontend an einen Backend-Endpoint. In diesem Beispiel wird auch die Abo-ID übergeben, Sie können sie jedoch für Ihre angemeldeten Nutzer/innen aus Ihrer Datenbank abrufen.

script.js
function updateSubscription(priceId, subscriptionId) { return fetch('/update-subscription', { method: 'post', headers: { 'Content-type': 'application/json', }, body: JSON.stringify({ subscriptionId: subscriptionId, newPriceId: priceId, }), }) .then(response => { return response.json(); }) .then(response => { return response; }); }

Definieren Sie im Backend den Endpoint für den Aufruf durch Ihr Frontend und übergeben Sie dabei die Abonnement-ID und die neue Preis-ID. Für das Abonnement gilt jetzt der Premium-Plan zum Preis von 15 USD pro Monat anstelle des Basic-Plans zum Preis von 5 USD pro Monat.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
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'
post '/update-subscription' do content_type 'application/json' data = JSON.parse request.body.read subscription = Stripe::Subscription.retrieve(data['subscriptionId']) updated_subscription = Stripe::Subscription.update( data['subscriptionId'], cancel_at_period_end: false, items: [ { id: subscription.items.data[0].id, price: 'price_H1NlVtpo6ubk0m' } ] ) updated_subscription.to_json end

Ihre Anwendung empfängt ein Ereignis vom Typ customer.subscription.updated.

OptionalVorschau einer Preisänderung anzeigen
Client und Server

Bei Änderungen eines Abos durch Kund/innen wird häufig der geschuldete Betrag angepasst. Diese Anpassung wird als anteilmäßige Verrechnung bezeichnet. Mithilfe des Endpoints zum Erstellen einer Rechnungsvorschau können Sie Ihren Kund/innen den angepassten Betrag anzeigen.

Übergeben Sie im Frontend die Details der zu erstellenden Rechnungsvorschau an einen Backend-Endpoint.

script.js
function createPreviewInvoice( customerId, subscriptionId, newPriceId, trialEndDate ) { return fetch('/create-preview-invoice', { method: 'post', headers: { 'Content-type': 'application/json', }, body: JSON.stringify({ customerId: customerId, subscriptionId: subscriptionId, newPriceId: newPriceId, }), }) .then(response => { return response.json(); }) .then((invoice) => { return invoice; }); }

Definieren Sie im Backend den Endpoint, den Ihr Frontend aufrufen soll.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
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'
post '/create-preview-invoice' do content_type 'application/json' data = JSON.parse request.body.read subscription = Stripe::Subscription.retrieve(data['subscriptionId']) invoice = Stripe::Invoice.create_preview( customer: data['customerId'], subscription: data['subscriptionId'], subscription_details: { items: [ { id: subscription.items.data[0].id, deleted: true }, { price: ENV[data['newPriceId']], deleted: false } ] } ) invoice.to_json end

OptionalZahlungsmethode der Kunden anzeigen
Client und Server

Wenn der Kartenaussteller und die letzten vier Ziffern der Karte angezeigt werden, wissen Kunden eher, welche Karte belastet wird, und können gegebenenfalls die Zahlungsmethode aktualisieren.

Senden Sie im Frontend die ID der Zahlungsmethode an einen Backend-Endpoint, der die Details zur Zahlungsmethode abruft.

script.js
function retrieveCustomerPaymentMethod(paymentMethodId) { return fetch('/retrieve-customer-payment-method', { method: 'post', headers: { 'Content-type': 'application/json', }, body: JSON.stringify({ paymentMethodId: paymentMethodId, }), }) .then((response) => { return response.json(); }) .then((response) => { return response; }); }

Definieren Sie im Backend den Endpoint, den Ihr Frontend aufrufen soll.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
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'
post '/retrieve-customer-payment-method' do content_type 'application/json' data = JSON.parse request.body.read payment_method = Stripe::PaymentMethod.retrieve(data['paymentMethodId']) payment_method.to_json end

Beispielantwort:

{ "id": "pm_1GcbHY2eZvKYlo2CoqlVxo42", "object": "payment_method", "billing_details": { "address": { "city": null, "country": null, "line1": null, "line2": null, "postal_code": null,

Notiz

Wir empfehlen, paymentMethod.id und last4 in Ihrer Datenbank zu speichern (zum Beispiel paymentMethod.id als stripeCustomerPaymentMethodId in Ihrer Auflistung oder Tabelle für users). Optional können Sie je nach Bedarf exp_month, exp_year, fingerprint und billing_details speichern. Dadurch können Sie die Anzahl der Aufrufe an Stripe begrenzen, um die Leistung zu steigern und eventuelle Begrenzungen zu vermeiden.

Stripe Ihren Kundinnen/Kunden anzeigen

Stripe erfasst Informationen über Kundeninteraktionen mit Elements , um Ihnen Dienste bereitzustellen, Betrug vorzubeugen und seine Dienste zu verbessern. Dies umfasst auch die Verwendung von Cookies und IP-Adressen, um zu ermitteln, welche Elements ein/e Kund/in während einer einzelnen Checkout-Sitzung gesehen hat. Sie sind dafür verantwortlich, alle Rechte und Zustimmungen offenzulegen und einzuholen, die Stripe benötigen, um Ihre Daten auf diese Weise zu nutzen. Weitere Informationen finden Sie in unserem Datenschutzcenter.

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