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
    Ihren Produktkatalog verwalten
    Abonnements
      Abonnement-Integration erstellen
      Kostenlose Testversionen konfigurieren
      Kunden/Kundinnen auf ein Abonnement beschränken
      Abrechnungszyklusdatum festlegen
    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 pageSubscriptions

Abonnement-Integration erstellen

Abonnements und wiederkehrende Zahlungen erstellen und verwalten

Checkout-Abonnementseite
Kaum Code

Logo, Bilder und Farben anpassen.

Vorgefertigte Formulare verwenden, um Zahlungen einzuziehen und Abonnements zu verwalten.

Kopieren Sie eine Beispiel-Integration aus GitHub.

Eine ausführliche Version dieses Leitfadens finden Sie im Quickstart zur Billing-Integration.

Sehen Sie sich das Beispiel auf GitHub oder in der Demo an.

Was Sie entwickeln

In diesem Leitfaden wird erläutert, wie Sie mit Stripe Checkout monatliche Abonnements mit festen Preisen verkaufen.

Dieser Leitfaden bietet Informationen zu den folgenden Vorgehensweisen:

  • Modellieren Sie Ihr Unternehmen, indem Sie einen Produktkatalog erstellen
  • Fügen Sie eine Checkout-Sitzung zu Ihrer Seite hinzu, einschließlich einer Schaltfläche sowie Erfolgs- und Abbruchseiten
  • Überwachen Sie Abonnement-Ereignisse und stellen Sie den Zugang zu Ihrer Dienstleistung bereit
  • Richten Sie das Kundenportal ein.
  • Fügen Sie eine Kundenportal-Sitzung zu Ihrer Seite hinzu, einschließlich einer Schaltfläche und einer Umleitung
  • Lassen Sie Ihre Kund/innen über das Portal ihre eigenen Abonnements verwalten
  • Erfahren Sie, wie Sie mit dem flexiblen Abrechnungsmodus von einem verbesserten Abrechnungsverhalten profitieren und auf zusätzliche Funktionen zugreifen können.

Wenn Sie zur Codierung einer Integration nicht bereit sind, können Sie einfache Abonnements manuell im Dashboard einrichten. Sie können auch Payment Links nutzen, um Abonnements ohne Code einzurichten.

Erfahren Sie mehr über das Erstellen einer Integration, um zu verstehen, welche Entscheidungen Sie für eine vollständige Integration treffen müssen und welche Ressourcen Sie benötigen.

Nachdem Sie die Integration abgeschlossen haben, können Sie sie auf Folgendes erweitern:

  • Steuern anzeigen
  • Rabatte anwenden
  • Kundinnen/Kunden einen kostenlosen Testzeitraum anbieten
  • Weitere Zahlungsmethoden hinzufügen
  • Die gehostete Rechnungsseite integrieren
  • Checkout im Einrichtungsmodus verwenden
  • Nutzungsbasierte Abrechnung einrichten, Preisstaffelung und nutzungsbasierte Preisgestaltung
  • Anteilsmäßige Verrechnung verwalten
  • Kundinnen/Kunden gestatten, mehrere Produkte zu abonnieren
  • Berechtigungen integrieren, um den Zugriff auf die Funktionen Ihres Produkts zu verwalten

Stripe einrichten

Installieren Sie den Stripe-Client Ihrer Wahl:

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

Installieren Sie die Stripe-CLI (optional). Die CLI bietet Webhook-Tests und kann zum Erstellen Ihrer Produkte und Preise ausgeführt werden.

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
Dashboard oder Stripe-CLI

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.

Wenn Sie mehrere Abrechnungsintervalle anbieten, können Sie mit Checkout für Kundinnen/Kunden Upselling auf längere Zahlungsintervalle durchführen und so Ihre Umsätze im Voraus steigern.

Informationen zu anderen Preismodellen finden Sie in den Billing-Beispielen.

Checkout-Sitzung erstellen
Client und Server

Fügen Sie Ihrer Website eine Schaltfläche zum Bezahlen hinzu, über die ein serverseitiger Endpoint aufgerufen wird, um eine Checkout-Sitzung zu erstellen.

index.html
Vollständiges Beispiel anzeigen
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <!-- Note: If using PHP set the action to /create-checkout-session.php --> <input type="hidden" name="priceId" value="price_G0FvDp6vZvdwRZ" /> <button type="submit">Checkout</button> </form> </body> </html>

Definieren Sie im Backend Ihrer Anwendung einen Endpoint, der die Sitzung erstellt, die von Ihrem Frontend aufgerufen werden kann. Sie brauchen dazu folgende Werte:

  • Die Preis-ID des Abonnements, das die Kundin/der Kunde abschließt (Ihr Frontend übergibt diesen Wert)
  • Ihre success_url, eine Seite auf Ihrer Website, an die Kund/innen nach Abschluss der Zahlung weitergeleitet werden

Optional können Sie cancel_url angeben, eine Seite auf Ihrer Website, zu der Checkout Ihre Kundinnen und Kunden zurückleitet, wenn sie den Zahlungsvorgang abbrechen. Sie können auch einen Abrechnungszyklusanker für Ihr Abonnement in diesem Aufruf konfigurieren.

Wenn Sie im 2. Schritt einen einmaligen Preis erstellt haben, übergeben Sie auch die ID dieses Preises. Leiten Sie Ihre Kund/innen nach dem Erstellen einer Checkout-Sitzung zu der in der Antwort zurückgegebenen URL weiter.

Sie können ein genaueres und vorhersehbares Abo-Verhalten ermöglichen, wenn Sie eine Checkout-Sitzung erstellen, indem Sie billing_mode[type] auf flexible setzen. Sie müssen die Stripe-API-Version 2025-06-30.basil oder höher verwenden.

Notiz

Sie können lookup_keys verwenden, um Preise anstelle von Preis-IDs abzurufen. Wie dies aussehen kann, erfahren Sie in der Beispielanwendung.

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Vollständiges Beispiel anzeigen
# 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'
# The price ID passed from the front end. # price_id = params['priceId'] price_id = '{{PRICE_ID}}' session = Stripe::Checkout::Session.create({ success_url: 'https://example.com/success.html?session_id={CHECKOUT_SESSION_ID}', cancel_url: 'https://example.com/canceled.html', mode: 'subscription', line_items: [{ # For usage-based billing, don't pass quantity quantity: 1, price: price_id, }], subscription_data: { billing_mode: { type: 'flexible' } } }) # Redirect to the URL returned on the session # redirect session.url, 303

In diesem Beispiel wurde die success_url durch die Sitzungs-ID ergänzt. Weitere Informationen zu dieser Vorgehensweise finden Sie in der Dokumentation zum Anpassen Ihrer Bestätigungsseite.

Aktivieren Sie in Ihrem Dashboard die Zahlungsmethoden, die Sie von Ihren Kundinnen und Kunden akzeptieren möchten. Checkout unterstützt mehrere Zahlungsmethoden.

Abonnements bereitstellen und überwachen
Server

After the subscription signup succeeds, the customer returns to your website at the success_url, which initiates a checkout.session.completed webhook. When you receive a checkout.session.completed event, use entitlements to provision the subscription. Continue to provision each month (if billing monthly) as you receive invoice.paid events. If you receive an invoice.payment_failed event, notify your customer and send them to the customer portal to update their payment method.

Um den nächsten Schritt für die Logik Ihres Systems zu bestimmen, überprüfen Sie den Ereignistyp und analysieren Sie die Nutzlast jedes Ereignisobjekts, z. B. invoice.paid. Speichern Sie die Ereignisobjekte subscription.id und customer.id zur Überprüfung in Ihrer Datenbank.

Zu Testzwecken können Sie Ereignisse auf der Registerkarte Events tab von Workbench überwachen. Für die Produktion richten Sie einen Webhook Endpoint ein und abonnieren die entsprechenden Ereignistypen. Wenn Sie Ihren STRIPE_WEBHOOK_SECRET-Schlüssel nicht kennen, können Sie ihn in der Detailansicht des Ziels auf der Registerkarte Webhooks tab in Workbench einsehen.

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Vollständiges Beispiel anzeigen
# 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 webhook_secret =
'{{STRIPE_WEBHOOK_SECRET}}'
payload
= request.body.read if !webhook_secret.empty? # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, webhook_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature puts '⚠️ Webhook signature verification failed.' status 400 return end else data = JSON.parse(payload, symbolize_names: true) event = Stripe::Event.construct_from(data) end # Get the type of webhook event sent event_type = event['type'] data = event['data'] data_object = data['object'] case event_type when 'checkout.session.completed' # Payment is successful and the subscription is created. # You should provision the subscription and save the customer ID to your database. when 'invoice.paid' # Continue to provision the subscription as payments continue to be made. # Store the status in your database and check when a user accesses your service. # This approach helps you avoid hitting rate limits. when 'invoice.payment_failed' # The payment failed or the customer does not have a valid payment method. # The subscription becomes past_due. Notify your customer and send them to the # customer portal to update their payment information. else puts "Unhandled event type: \#{event.type}" end status 200 end

Überwachen Sie mindestens folgende Ereignistypen:

EreignisnameBeschreibung
checkout.session.completedWird gesendet, wenn Kundinnen/Kunden die Checkout-Sitzung erfolgreich abschließen und Sie über einen neuen Kauf informieren.
invoice.paidWird bei jedem Abrechnungsintervall übermittelt, wenn eine Zahlung erfolgreich war.
invoice.payment_failedWird bei jedem Abrechnungsintervall übermittelt, wenn Problem mit der Zahlungsmethode Ihrer Kund/innen vorliegt.

Weitere zu überwachende Ereignisse finden Sie im Abschnitt Abonnement-Webhooks.

Das Kundenportal konfigurieren
Dashboard

Über das Kundenportal können Ihre Kundinnen/Kunden ihre bestehenden Abonnements und Rechnungen direkt verwalten.

Verwenden Sie das Dashboard, um das Portal zu konfigurieren. Stellen Sie sicher, dass Sie es mindestens so konfigurieren, dass Kundinnen/Kunden ihre Zahlungsmethoden aktualisieren können. Informationen zu weiteren Einstellungen, die Sie konfigurieren können, finden Sie unter Kundenportal integrieren.

Eine Portalsitzung erstellen
Server

Definieren Sie einen Endpoint, der die Kundenportal-Sitzung erstellt, und den Ihr Frontend aufrufen kann. Hier bezieht sich CUSTOMER_ID auf die Kunden-ID, die von einer Checkout-Sitzung erstellt wurde, die Sie bei der Verarbeitung des Ereignisses checkout.session.completed gespeichert haben. Sie können auch im Dashboard einen Standard-Weiterleitungs-Link für das Portal festlegen.

Übergeben Sie einen optionalen return_url-Wert für die Seite auf Ihrer Website, auf die Ihre Kunden und Kundinnen nach der Verwaltung eines Abonnements weitergeleitet werden:

server.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
Vollständiges Beispiel anzeigen
# 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'
# This is the URL that users are redirected to after they're done # managing their billing. return_url =
'{{DOMAIN_URL}}'
customer_id
=
'{{CUSTOMER_ID}}'
session
= Stripe::BillingPortal::Session.create({ customer: customer_id, return_url: return_url, }) # Redirect to the URL for the session # redirect session.url, 303

Kund/innen an das Kundenportal senden
Client

Fügen Sie im Frontend eine Schaltfläche hinzu, die über die success_url auf das Kundenportal verweist:

success.html
Vollständiges Beispiel anzeigen
<html> <head> <title>Manage Billing</title> </head> <body> <form action="/customer-portal" method="POST"> <!-- Note: If using PHP set the action to /customer-portal.php --> <button type="submit">Manage Billing</button> </form> </body> </html>

Nach dem Verlassen des Kundenportals kehrt der Kunde/die Kundin über die return_url zu Ihrer Website zurück. Überwachen Sie weiterhin Ereignisse, um den Status des Kundenabonnements zu verfolgen.

Wenn Sie das Kundenportal so konfigurieren, dass Aktionen wie die Kündigung eines Abonnements zugelassen werden, finden Sie unter Kundenportal integrieren weitere zu überwachende Ereignisse.

Integration testen

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.Fill out the form using the account number 900123456 and BSB 000000. The confirmed PaymentIntent initially transitions to processing, then transitions to the succeeded status three minutes later.
BECS-LastschriftDie Zahlung Ihres/Ihrer Kund/in schlägt fehl mit Code account_closed fehl.Fill out the form using the account number 111111113 and BSB 000000.
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 Abonnementänderungsereignisse wie Upgrades und Kündigungen zu überwachen. Erfahren Sie mehr über Abonnement-Webhooks. Sie können Ereignisse im Dashboard oder mit der Stripe-CLI anzeigen.

Weitere Einzelheiten zum Testen Ihrer Billing-Integration finden Sie im Leitfaden.

Siehe auch

  • Kundinnen/Kunden einen kostenlosen Testzeitraum anbieten
  • Rabatte anwenden
  • Anteilsmäßige Verrechnung verwalten
  • Berechtigungen integrieren, um den Zugriff auf die Funktionen Ihres Produkts zu verwalten
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