Setzen Sie fortschrittliche nutzungsbasierte Abrechnung mit Preisplänen umPrivate Vorschau
Rechnen Sie Ihre Kundinnen und Kunden auf der Grundlage von Nutzung und wiederkehrenden Gebühren ab.
Sie können verschiedene Preiskomponenten in einem einzigen Preisplan zusammenfassen. Sie können beispielsweise einen Preisplan erstellen, der Preislisten für die nutzungsbasierte Abrechnung, Lizenzgebühren für wiederkehrende Zahlungen und Serviceaktionen für wiederkehrende Gutschriftvergaben. Wenn ein Kunde/eine Kundin einen Preisplan abonniert, werden alle wiederkehrenden Komponenten automatisch erfasst und gemäß dem von Ihnen festgelegten Rhythmus abgerechnet.
Folgende Preismodelle werden beispielsweise unterstützt:
- Pay-as-you-go
- Echtzeit-Guthabenabrechnung mit Aufladungen
- Pauschalgebühr und Überschreitungsgebühren
Private Vorschau
Preispläne befinden sich derzeit in der privaten Vorschau und können in Funktionalität und Integrationspfad Änderungen unterliegen, bevor sie allen Stripe-Nutzerinnen und -Nutzern allgemein zur Verfügung stehen. Kontaktieren Sie uns here, um Zugang zu beantragen.
Bevor Sie beginnen
Sie können auch eine geführte API-Version (Blueprint) dieses Leitfadens im Dashboard verwenden.
Preispläne verwenden /v2-API-Endpoints. Erfahren Sie mehr über die /v2 und /v1 Namespaces.
Verwenden Sie Sandboxes, um die Integration Ihrer Preispläne zu testen. Sie können den Test-Modus nicht mit /v2-APIs verwenden.
Preisplan erstellen
Verwenden Sie das Stripe Dashboard oder die API, um einen Preisplan zu erstellen, der alle relevanten Abrechnungskomponenten Ihres Preismodells enthält.
Für jeden Preisplan können Sie Folgendes konfigurieren:
- Währung: Geben Sie die Währungen für alle Komponenten in Ihrem Preisplan an.
- Steuer soll in Preisen enthalten sein: Geben Sie an, ob die Steuer in Ihren Preis einbezogen werden soll (inklusive) oder ob sie zur Zwischensumme der Rechnung hinzuaddiert werden soll (exklusive). Erfahren Sie mehr über inklusive und exklusive Steuern für die Abrechnung.
- Metadaten: Fügen Sie optional Ihre eigenen Metadaten zum Preisplan hinzu.
Nachdem Sie die Währung und die Steuerparameter festgelegt haben, definieren Sie die relevanten Komponenten Ihres Plans. Welche Komponenten Sie einbeziehen, hängt von Ihrem Preismodell ab. Dieser Leitfaden verwendet alle drei Komponenten ((Preislisten, Lizenzgebühren und Serviceaktionen), aber welche Komponenten Sie verwenden, hängt von Ihrem Preismodell ab. Zum Beispiel benötigen Sie bei einem Pay-as-you-go-Preismodell und bei Guthabenverrechnung in Echtzeit mit Aufstockungen nur eine Preisliste. Bei Pauschalgebühren und Überschreitungen benötigen Sie eine Preisliste und eine Lizenzgebühr und bei wiederkehrenden Guthaben mit Aufladungen benötigen Sie eine Preisliste und eine Serviceaktion.
Abonnieren Sie Ihre/n Kunde/Kundin auf einen Preisplan
Nachdem Sie einen Preisplan eingerichtet haben, können Sie ihn für eine Kundin/einen Kunden abonnieren. Sie können ein Abo erstellen, indem Sie die Checkout Sessions API mit entweder einer von Stripe gehosteten Seite oder eingebetteten Komponenten als Nutzeroberfläche für die Zahlung verwenden. (Die Checkout-Sitzung erstellt auch eine Kundin/einen Kunden.) Sie können die API auch verwenden, um direkt ein Preisplan-Abo zu erstellen. Wenn Sie die direkte API-Methode verwenden, müssen Sie eine Kundin/einen Kunden, eine Einzugsmethode,einen Abrechnungsrhythmus und einen Abrechnungs-Intent erstellen, wodurch das Preisplan-Abonnement erstellt wird.
Kundennutzung aufzeichnen
Nachdem Sie eine Kundin/einen Kunden für einen Preisplan mit einer Preisliste angemeldet haben, erfassen Sie die Nutzung Ihres Dienstes, indem Sie Zählerereignisse an einen Zähler senden.
Eine Rechnungsvorschau erstellen
Erstellen Sie eine Vorschau-Rechnung, um eine Vorschau der Kundenrechnung anzuzeigen. Die Vorschau enthält die relevanten Posten aus den verschiedenen Preisplan-Komponenten.
Wartungsereignisse überwachen
Preisplan-Abonnements senden Ereignisbenachrichtigungen, wenn sich der Status von Service und Einzug ändert.
Überwachen Sie diese Ereignisse und verwenden Sie sie, um Ihre Geschäftslogik zu erstellen:
v2. | Die Nutzer/in bezahlt das Abonnement, das den Dienst aktiviert. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Nutzer/in unterbricht das Abonnement. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Der/die Nutzer/in kündigt den Dienst. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Der Einzug des Abonnements läuft. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Das Inkasso wartet auf Aktionen des Kunden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Der Einzug ist unterbrochen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Der Einzug ist überfällig. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
v2. | Der Einzug gilt als unbezahlt. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um diese v2 Events zu verarbeiten, konfigurieren Sie eine Event Destination und lassen Sie sie auf Ihren Webhook Endpoint verweisen. Sie haben folgende Möglichkeiten:
- Erstellen Sie das Ereignisziel aus Workbench.
- Erstellen Sie das Ereignisziel über die Stripe-API.
Nachdem Sie ein Ziel erstellt haben, können Sie Ihren Webhook-Endpoint so einrichten, dass er diese Ereignisse verarbeitet:
require 'stripe' post '/v2_webhook_endpoint' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e status 400 return rescue Stripe::SignatureVerificationError => e status 400 return end client = Stripe::StripeClient() case event.type when 'v2.billing.pricing_plan_subscription.servicing_activated' # The customer clicked Pay on Stripe Checkout, which activates the service. subscription_id = event.related_object.id subscription = client.v2.billing.pricing_plan_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_active(user, subscription) when 'v2.billing.pricing_plan_subscription.servicing_paused' # The customer paused the subscription. subscription_id = event.related_object.id subscription = client.v2.billing.pricing_plan_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_paused(user, subscription) when 'v2.billing.pricing_plan_subscription.servicing_canceled' # The customer canceled the subscription. subscription_id = event.related_object.id subscription = client.v2.billing.pricing_plan_subscriptions .retrieve(subscription_id) # Look up your user in the database using the metadata passed into # Checkout Session create user_id = subscription.metadata["my_user_id"] user = User.find_by_id(user_id) # Fill in your logic here: mark_subscription_canceled(user, subscription) end status 200 end"sk_test_BQokikJOvBiI2HlWgH4olfQ2"
Integration testen
So testen Sie Ihre Integration:
- Erstellen Sie eine Sandbox.
- Erstellen Sie einen Test-Preisplan und mindestens eine zugrunde liegende Preiskomponente in Ihrer Sandbox.
- Verwenden Sie Testkarten, um erfolgreiche und fehlgeschlagene Zahlungen zu simulieren.
- Erstellen Sie Testzählerereignisse zur Simulation der Nutzung.
- Verwenden Sie Test-Uhren, um die Abrechnung zu simulieren.
Erstellen Sie keine Test-Uhren in der Vergangenheit
Wenn Sie eine Test-Uhr für ein Preisplan-Abonnement erstellen, erstellen Sie nur Uhren in der Zukunft. Wenn Sie eine Uhr in der Vergangenheit erstellen, werden die Rechnungsbeträge nicht korrekt sein.
Test-Uhr mit UNIX-Zeitstempel erstellen:
Notieren Sie sich die ID der Test-Uhr. Erstellen Sie als Nächstes einen Testkunden/eine Testkundin mit der Uhr:
Erstellen Sie ein Abrechnungsprofil:
Erstellen Sie ein Abrechnungsintervall, um festzulegen, wann die Rechnung für den Kunden/die Kundin erstellt wird. Speichern Sie die ID.
Erstellen Sie ein Preisplan-Abonnement für die Testkundin/den Testkunden.
Erstellen Sie einen Abrechnungs-Intent, um die Status des Preisplan Abonnements nachzuverfolgen. Zuerst erstellen Sie einen Entwurf für den Abrechnungs-Intent. Speichern Sie die ID des Intents.
Als Nächstes nehmen Sie eine Rückstellung des Abrechnungs-Intents vor:
Als nächstes bestätigen Sie die Abrechnungsabsicht, um das Abo für den Preisplan zu aktivieren und der Kundin bzw. dem Kunden die Rechnung gemäß Plan und Zeitraum zu stellen. (Wenn Sie die Einstellungen für den Einzug auf automatic gesetzt haben, müssen Sie einen erfolgreichen PaymentIntent haben, um den Intent zu bestätigen. Wenn Sie die Einstellungen für den Einzug auf send_ eingestellt haben, brauchen Sie die Zahlungsabsicht nicht zu übergeben).
Zu Testzwecken können Sie payment_ auf „pm_card_visa“ setzen.
Bezahlen Sie die durch das Abonnement generierte Rechnung. Nachdem die Rechnung bezahlt wurde, können Sie die Nutzung simulieren und die Uhr vorstellen, wodurch die Abrechnung für den nächsten Monat ausgelöst wird. Wenn Sie Checkout verwenden, können Sie die url der zurückgegebenen Checkout-Sitzung in Ihrem Browser öffnen und die Zahlung mit einer Testkarte abschließen.
Zeichnen Sie einige Testnutzungen auf:
Stellen Sie die eingefrorene Zeit der Test-Uhr um einen Monat vor. In diesem Beispiel hat die Test-Uhr derzeit einen Zeitstempel von 1577836800. Um einen Monat hinzuzufügen, fügen Sie 30 * 24 * 60 * 60 oder 2592000 Sekunden hinzu. Der neue Zeitstempel in einem Monat ist 1580428800.
OptionalSteuern einziehen
Um Steuern automatisch einzuziehen, erstellen Sie eine Checkout-Sitzung, die checkout_items enthält, und legen Sie automatic_ auf „true“ fest.
Auf der Seite werden die Details Ihres Preisplans angezeigt und die Zahlungen der Kunden erfasst. Nachdem die Kunden die Sitzung abgeschlossen hat, werden sie an die URL weitergeleitet, die Sie für success_ angegeben haben.
OptionalRichten Sie das Kundenportal ein
Sie können Ihren Kund/innen Self-Service-Funktionen anbieten, indem Sie ein Kundenportal einrichten.
Die Verwendung des Kundenportals mit Tarifabonnements ist derzeit nur im Lesemodus möglich: Kund/innen können ihre Zahlungsmethoden für Tarifabonnements nicht kündigen oder Pläne ändern oder aktualisieren. Derzeit können Sie ein Kundenportal nur über das Dashboard konfigurieren.
Wenn das Kundenportal mit Tarifabonnements verwendet wird, können Ihre Kund/innen Folgendes einsehen:
- Der abonnierte Plan, einschließlich Details zu dem von Ihnen angebotenen Hybridplan.
- Anstehende Rechnungen helfen zu verstehen, was den Kund/innen am Ende des Monats in Rechnung gestellt wird.
- Die für das betreffende Abo hinterlegte Zahlungsmethode.
- Frühere Rechnungen, die ihnen gestellt wurden.
- Die Rechnungsinformationen der Kund/innen.
