# Ein Abonnement mit PayPal einrichten Erfahren Sie, wie Sie ein Abonnement PayPal einrichten und abrechnen können. # Von Stripe gehostete Seite > This is a Von Stripe gehostete Seite for when payments-ui-type is stripe-hosted. View the full page at https://docs.stripe.com/billing/subscriptions/paypal?payments-ui-type=stripe-hosted. Sehen Sie sich das [Beispiel auf GitHub](https://github.com/stripe-samples/checkout-single-subscription) an oder sehen Sie sich die [Demo](https://checkout.stripe.dev/checkout) an. Verwenden Sie diesen Leitfaden, um ein *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) mithilfe von [PayPal](https://docs.stripe.com/payments/paypal.md) und {% glossary term=“checkout" %}Checkout** einzurichten. Eine [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) repräsentiert die Details der Kaufabsicht eines Kunden/einer Kundin. Erstellen Sie eine Checkout-Sitzung, wenn ein Kunde/eine Kundin ein Abonnement starten möchte. Nachdem Ihre Kundinnen/Kunden zu einer Checkout-Sitzung umgeleitet wurden, präsentiert Stripe ein Zahlungsformular, von dem aus sie ihren Kauf abschließen können. Nachdem sie einen Kauf abgeschlossen haben, leitet Stripe sie auf Ihre Website zurück. > #### Wiederkehrende Zahlungen über PayPal aktivieren > > Stripe aktiviert für die meisten Nutzer/innen automatisch wiederkehrende Zahlungen, wenn sie [PayPal-Zahlungen](https://docs.stripe.com/payments/paypal/activate.md) im Stripe Dashboard aktivieren. Aufgrund der Richtlinien von PayPal und regionalen Beschränkungen müssen Sie jedoch möglicherweise wiederkehrende Zahlungen von PayPal im Dashboard manuell [aktivieren](https://docs.stripe.com/payments/paypal/set-up-future-payments.md#enable-recurring-payments). ## Stripe einrichten [Serverseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Wiederkehrende Produkte und Preise erstellen > Die Prices API bietet einen einheitlichen Rahmen für die Erstellung von einmaligen Käufen und Abonnements mit Stripe. Bestehende Integrationen ohne Prices API werden weiterhin [unterstützt](https://support.stripe.com/questions/prices-api-and-existing-checkout-integrations). Es gibt jedoch einige Checkout-Funktionen, die nur Prices unterstützen. Lesen Sie den [Migrationsleitfaden](https://docs.stripe.com/payments/checkout/migrating-prices.md), wenn Sie auf die Prices API umsteigen möchten. Um Checkout zu verwenden, müssen Sie zuerst ein *Produkt* (Products represent what your business sells—whether that's a good or a service) und einen *Preis* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) erstellen. Verschiedene physische Waren oder Dienstleistungsebenen müssen durch Produkte dargestellt werden. Die Preisgestaltung ist durch einen oder mehrere Preise dargestellt. Sie können beispielsweise ein Software *produkt* erstellen, das vier *Preise* hat: 10 USD/Monat, 100 USD/Jahr, 9 EUR/Monat und 90 EUR/Jahr. Auf diese Weise können Sie Preise ändern und hinzufügen, ohne die Details der zugrunde liegenden Produkte ändern zu müssen. Sie können ein Produkt oder einen Preis entweder [über die API](https://docs.stripe.com/api/prices.md) oder über das [Stripe-Dashboard](https://dashboard.stripe.com/products) erstellen. Wenn Ihr Preis beim Bezahlvorgang ermittelt wird (der/die Kund/in legt beispielsweise einen Spendenbetrag fest), oder wenn Sie es vorziehen, Preise nicht im Voraus zu erstellen, können Sie [Preise inline](https://docs.stripe.com/billing/subscriptions/paypal.md#creating-prices-inline) bei der Erstellung der Checkout-Sitzung erstellen. #### Dashboard Stellen Sie vor dem Konfigurieren von Produkten sicher, dass Sie sich in einer Sandbox befinden. Definieren Sie als Nächstes die Waren und Dienstleistungen, die Sie verkaufen möchten. So erstellen Sie ein neues Produkt und einen neuen Preis: - Gehen Sie im Dashboard zum Bereich [Produkte](https://dashboard.stripe.com/products). - Klicken Sie auf **Produkt hinzufügen**. - Wählen Sie beim Festlegen des Preises „Wiederkehrend“ aus. - Preisplan konfigurieren Sie können für jedes wiederkehrende Produkt mehrere Preispläne mit unterschiedlichen Parametern definieren. Jeder Preis verfügt über eine generierte ID, die Sie im Bezahlvorgang als Referenz nutzen können. > In einer Sandbox erstellte Produkte können in den Live-Modus kopiert werden, sodass Sie sie nicht erneut erstellen müssen. Klicken Sie im Dashboard in der Detailansicht des Produkts oben rechts auf **In Live-Modus kopieren**. Dieser Schritt kann für jedes in einer Sandbox erstellte Produkt nur einmal vorgenommen werden. Spätere Aktualisierungen für das Test-Produkt werden im Live-Produkt nicht berücksichtigt. #### API Es ist nur das Feld `name` erforderlich, um ein [Produkt](https://docs.stripe.com/api/products.md) über die API zu erstellen. Informationen wie `name` des Produkts, `description` und `images`, die Sie angeben, werden Kundinnen und Kunden beim Bezahlvorgang angezeigt. ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d "name=Blue banana" ``` Erstellen Sie als Nächstes einen [Preis](https://docs.stripe.com/api/prices.md), um zu definieren, wie viel ein Produkt kostet und wie oft Sie diesen Preis berechnen möchten. Dazu gehören neben den Kosten auch die Währung und das Abrechnungsintervall. #### curl ```bash curl https://api.stripe.com/v1/prices \ -u <>: \ -d "product"="{{ PRODUCT_ID }}" \ -d "unit_amount"=1000 \ -d "currency"="eur" \ -d "recurring[interval]=month" ``` Diese Preis-ID dient als Referenz für das Produkt, wenn Sie den Zahlungsvorgang mit Checkout starten. ## Checkout-Sitzung erstellen [Clientseitig] [Serverseitig] Fügen Sie Ihrer Website eine Schaltfläche zum Bezahlen hinzu, die einen serverseitigen Endpoint aufruft, um eine Checkout-Sitzung zu erstellen. ```html Checkout
``` ### Checkout-Sitzungsparameter Eine vollständige Liste der Parameter, die übergeben werden können, finden Sie unter [Checkout-Sitzung erstellen](https://docs.stripe.com/api/checkout/sessions/create.md). Erstellen Sie eine Checkout-Sitzung mit der ID eines bestehenden [Preises](https://docs.stripe.com/api/prices.md). Stellen Sie sicher, dass der Modus auf `subscription` gesetzt ist und dass Sie mindestens einen wiederkehrenden Preis übergeben. Zusätzlich zu wiederkehrenden Preisen können Sie auch einmalige Preise hinzufügen. Leiten Sie Ihre Kundinnen/Kunden nach dem Erstellen der Checkout-Sitzung zu der in der Antwort zurückgegebenen [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) weiter. #### cURL ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="paypal" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Wenn Ihre Kundinnen und Kunden ihre Zahlung erfolgreich abgeschlossen haben, werden Sie an die `success_url` weitergeleitet. Hierbei handelt es sich um eine Seite auf Ihrer Website, auf der Ihre Kundinnen und Kunden darüber informiert werden, dass ihre Zahlung erfolgreich durchgeführt wurde. Stellen Sie die Sitzungs-ID auf Ihrer Erfolgsseite zur Verfügung, indem Sie die Vorlagenvariable `{CHECKOUT_SESSION_ID}` wie im obigen Beispiel in die `success_url` einfügen. Checkout-Sitzungen laufen standardmäßig 24 Stunden nach Erstellung ab. > Verlassen Sie sich beim Erkennen von initiierten Zahlungen nicht allein auf die Weiterleitung auf die `success_url`: > > - Böswillige Nutzer/innen könnten, ohne zu bezahlen, direkt auf die `success_url` zugreifen und sich so unberechtigt Zugang zu Waren und Dienstleistungen verschaffen. - Nach einer erfolgreichen Zahlung schließen Kundinnen und Kunden möglicherweise ihren Browser-Tab, bevor sie zur `success_url` weitergeleitet werden. ## Bestätigen, dass die Zahlung erfolgreich durchgeführt wurde > Wenn ein/e Käufer/in ein Abonnement bei Stripe mit PayPal erfolgreich bestätigt, erhält er/sie sowohl von Stripe als auch von PayPal einen Beleg. Wenn Ihre Kund/innen ihre Zahlung erfolgreich abschließen, werden sie an die URL weitergeleitet, die Sie als `success_url` festgelegt haben. Hierbei handelt es sich in der Regel um eine Seite auf Ihrer Website, auf der Ihre Kund/innen darüber informiert werden, dass ihre Zahlung erfolgreich durchgeführt wurde. Verwenden Sie das Dashboard, einen nutzerdefinierten *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) oder ein Drittanbieter-Plugin, um Ereignisse nach Zahlung wie das Versenden einer Bestellbestätigung per E-Mail, das Erfassen des Verkaufs in einer Datenbank oder das Initiieren eines Versandworkflows zu handhaben. #### Dashboard Erfolgreiche Zahlungen werden im Dashboard in der [Zahlungsliste](https://dashboard.stripe.com/payments) angezeigt. Wenn Sie auf eine Zahlung klicken, werden Sie zur Seite mit den Zahlungsdetails weitergeleitet. Der Abschnitt **Checkout-Übersicht** umfasst Rechnungsinformationen und die Liste der gekauften Artikel, die Sie zur manuellen Abwicklung der Bestellung verwenden können. ![Checkout-Übersicht](https://b.stripecdn.com/docs-statics-srv/assets/source.16d3029596357c80a8efdbbfe106108a.png) > Durch Senden von E-Mail-Benachrichtigungen über erfolgreich abgeschlossene Kundenzahlungen kann Stripe Ihnen helfen, den Überblick über eingehende Zahlungen zu behalten. Verwenden Sie das Dashboard, um [E-Mail-Benachrichtigungen zu konfigurieren](https://dashboard.stripe.com/settings/user). #### Webhooks [Richten Sie Webhooks ein](https://docs.stripe.com/webhooks.md), um Ereignisse nach der Zahlung programmgesteuert zu handhaben. Lokal lassen sich Webhooks am schnellsten mit der [Stripe-CLI](https://docs.stripe.com/stripe-cli.md) entwickeln und testen. Sobald Sie die Stripe-CLI installiert haben, können Sie Ereignisse an Ihren Server weiterleiten: ```bash stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit) ``` Mit einem Webhook-Endpoint werden Ihre Kundinnen und Kunden an die `success_url` weitergeleitet, wenn Sie [bestätigen, dass Sie das Ereignis empfangen haben](https://docs.stripe.com/webhooks.md#acknowledge-events-immediately). In Szenarien, in denen Ihr Endpoint nicht funktionsfähig ist oder das Ereignis nicht ordnungsgemäß anerkannt wurde, leitet Ihr Handler den Kunden/die Kundin 10 Sekunden nach erfolgreicher Zahlung an die `success_url` weiter. Der folgende Beispiel-Endpoint zeigt, wie Ereignisse anerkannt und gehandhabt werden. #### Ruby ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' # Using Sinatra post '/webhook' do payload = request.body.read event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end # Handle the checkout.session.completed event if event['type'] == 'checkout.session.completed' session = event['data']['object'] # Fulfill the purchase... handle_checkout_session(session) end status 200 end ``` Sie können Plugins wie [Zapier](https://stripe.com/works-with/zapier) verwenden, um das Aktualisieren Ihrer Kaufabwicklungssysteme mit Informationen aus Stripe-Zahlungen zu automatisieren. Nachfolgend finden Sie einige Beispiele für unterstützte Automatisierungen mithilfe von Plugins: - Aktualisieren der zur Bestellungsverfolgung verwendeten Tabellen als Reaktion auf erfolgreiche Zahlungen - Aktualisieren der Bestandsverwaltungssysteme als Reaktion auf erfolgreiche Zahlungen - Auslösen von Benachrichtigungen an interne Kundenservice-Teams unter Verwendung von E-Mail- oder Chat-Anwendungen ## Integration testen Testen Sie Ihre PayPal-Integration mit Ihren [Test-API-Schlüsseln](https://docs.stripe.com/keys.md#test-live-modes), indem Sie die Weiterleitungsseite anzeigen. Sie können die erfolgreiche Zahlung testen, indem Sie die Zahlung auf der Weiterleitungsseite authentifizieren. Der PaymentIntent wechselt von `requires_action` zu `succeeded`. Um den Fall zu testen, in dem Nutzer/innen sich nicht authentifizieren können, verwenden Sie Ihre Test-API-Schlüssel und zeigen Sie die Weiterleitungsseite an. Klicken Sie auf der Weiterleitungsseite auf **Fail test payment** (Testzahlung fehlschlagen lassen). Der PaymentIntent wechselt von `requires_action` zu `requires_payment_method`. ## Optional: Einmalige Einrichtungsgebühr hinzufügen [Serverseitig] Zusätzlich zur Übergabe von wiederkehrenden Preisen können Sie im Modus `subscription` einmalige Preise hinzufügen. Diese werden nur auf der ersten *Rechnung* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) angezeigt, die durch das Abonnement erstellt wird. Dies ist nützlich, um Einrichtungsgebühren oder andere einmalige Gebühren in Verbindung mit einem Abonnement hinzuzufügen. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="paypal" \ -d "line_items[0][price]"="{{RECURRING_PRICE_ID}}" \ -d "line_items[0][quantity]"=1 \ -d "line_items[1][price]"="{{ONE_TIME_PRICE_ID}}" \ -d "line_items[1][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` ## Optional: Preise und Produkte inline erstellen [Serverseitig] Zusätzlich zur Übergabe vorhandener Preis-IDs können Sie Ihren Artikelpreis auch bei der Erstellung der Checkout-Sitzung festlegen. Definieren Sie zuerst ein [Produkt](https://docs.stripe.com/api/products.md). Erstellen Sie dann mithilfe der Produkt-ID eine Checkout-Sitzung, indem Sie sie in [price_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data) mit den Details `unit_amount`, `currency` und `recurring` details übergeben: #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=paypal \-d line_items[0][price_data][unit_amount]=5000 \ -d line_items[0][price_data][currency]=eur\ -d line_items[0][price_data][product]="{{PRODUCT_ID}}" \ -d line_items[0][price_data][recurring][interval]=month \ -d line_items[0][quantity]=1 \ -d mode=subscription \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Wenn Sie auch Produkte inline erstellen müssen, haben Sie mit [product_data](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-price_data-product_data) hierzu zu Möglichkeit: #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=paypal \-d "line_items[][price_data][currency]"=eur\ -d "line_items[][price_data][product_data][name]"=T-shirt \ -d "line_items[][price_data][unit_amount]"=2000 \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` ## Optional: Bestehende Kund/innen [Serverseitig] Wenn Sie bereits ein *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)-Objekt für einen Kunden oder eine Kundin erstellt haben, können Sie mit dem Argument [Kunde/Kundin](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer) die Kunden-ID beim Erstellen einer Bezahlvorgang übergeben. Dadurch wird sichergestellt, dass alle während der Sitzung erstellten Objekte dem richtigen Kundenobjekt zugeordnet werden. Wenn Sie eine Kunden-ID übergeben, verwendet Stripe auch die im Customer-Objekt gespeicherte E-Mail-Adresse, um das entsprechende Feld auf der Checkout-Seite vorab auszufüllen. Wenn Kund/innen ihre E-Mail-Adresse auf der Checkout-Seite ändern, wird diese nach erfolgreicher Zahlung im Customer-Objekt aktualisiert. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method_types[]"="paypal" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" ``` ## Optional: Kundendaten vorab angeben [Serverseitig] Wenn Sie die E-Mail-Adresse Ihrer Kundin/Ihres Kunden bereits erfasst haben und sie in einer Checkout-Sitzung vorab angeben möchten, übergeben Sie [customer_email](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_email) beim Erstellen der Checkout-Sitzung. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \-d customer_email="customer@example.com" \ -d "payment_method_types[]"=paypal \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \ -d mode=subscription \ -d success_url="https://example.com/success" \ ``` ## Optional: Testzeiträume handhaben [Serverseitig] Mit [trial_end](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-trial_end) oder [trial_period_days](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-trial_period_days) können Sie in der Checkout-Sitzung die Dauer des Testzeitraums angeben. In diesem Beispiel verwenden wir `trial_period_days`, um eine Checkout-Sitzung für ein Abonnement mit einem Testzeitraum von 30 Tagen zu erstellen. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=paypal \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "subscription_data[trial_period_days]"=30 \ -d mode=subscription \ -d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ ``` Checkout zeigt die folgenden Informationen automatisch für Abonnements mit Testzeiträumen an: - Testzeitraum - Häufigkeit und Höhe der Zahlungen nach Ablauf des Testzeitraums Weitere Informationen zu Compliance-Anforderungen finden Sie in den Anleitungen zum [Verwalten von Compliance-Anforderungen](https://docs.stripe.com/billing/subscriptions/trials/manage-trial-compliance.md) oder in den [Support](https://support.stripe.com/questions/2020-visa-trial-subscription-requirement-changes-guide)-Anleitungen. ## Optional: Steuersätze [Serverseitig] Sie können [Steuersätze](https://docs.stripe.com/billing/taxes/tax-rates.md), (Verkäufe, USt., GST und mehr) in Checkout-Sitzungen angeben, um Steuern auf *Abonnements* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) anzuwenden. - Verwenden Sie feste Steuersätze, wenn Sie den exakten Steuersatz kennen, den Sie Ihrem Kunden/Ihrer Kundin berechnen müssen, bevor sie den Bezahlvorgang starten (wenn Sie beispielsweise nur an Kund/innen in Großbritannien verkaufen und immer 20 % Mehrwertsteuer berechnen). - Mit der *Prices* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) API können Sie dynamische Steuersätze verwenden, wenn Sie weitere Informationen von Ihren Kund/innen benötigen (beispielsweise ihre Rechnungs- oder Versandadresse), bevor Sie den fälligen Steuersatz ermitteln. Mit dynamischen Steuersätzen erstellen Sie Steuersätze für verschiedene Regionen (beispielsweise einen Mehrwertsteuersatz von 20 % für Kund/innen in Großbritannien und einen Umsatzsteuersatz von 7,25 % für Kund/innen in Kalifornien, USA). Stripe versucht, den Standort Ihrer Kund/innen diesen Steuersätzen zuzuordnen. #### Feste Steuersätze Legen Sie [subscription_data.default_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-default_tax_rates) fest, um einen Standardsteuersatz auf ein Abonnement anzuwenden, das ohne Checkout gestartet wurde. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=paypal \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "subscription_data[default_tax_rates][]"="{{TAX_RATE_ID}}" \ -d mode=subscription \ -d success_url="https://example.com/success" \ ``` Sie können auch [line_items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-tax_rates) oder [subscription_data.items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-items-tax_rates) angeben, um Steuersätze auf bestimmte Pläne oder Rechnungsposten anzuwenden. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="paypal" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "line_items[][tax_rates][0]"="{{TAX_RATE_ID}}" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` #### Dynamische Steuersätze Übergeben Sie ein Array mit [Steuersätzen](https://docs.stripe.com/api/tax_rates/object.md) an [line_items.dynamic_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates). Für jeden Steuersatz ist ein [unterstütztes](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates) `country` erforderlich und für die USA zusätzlich ein `state`. Auf dieser Liste werden die Steuersätze mit der [Versandadresse](https://docs.stripe.com/payments/collect-addresses.md), der Rechnungsadresse oder dem Land Ihrer Kundin/Ihres Kunden abgeglichen. Die Versandadresse hat für die Bestimmung des zu berechnenden Steuersatzes Vorrang vor der Rechnungsadresse. Wenn Sie keine Versand- oder Rechnungsadresse erfassen, wird der Steuersatz anhand des Landes (und gegebenenfalls der Postleitzahl) Ihrer Kund/innen ermittelt. Wenn Sie keinen Steuersatz übergeben haben, der mit der Versand- oder Rechnungsadresse Ihres Kunden/Ihrer Kundin übereinstimmt, wird kein Steuersatz angewendet. #### Curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="paypal" \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "line_items[][dynamic_tax_rates][]"="{{FIRST_TAX_RATE_ID}}" \ -d "line_items[][dynamic_tax_rates][]"="{{SECOND_TAX_RATE_ID}}" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` > [subscription_data.default_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-subscription_data-default_tax_rates) und [line_items.tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-tax_rates) können nicht in Verbindung mit [line_items.dynamic_tax_rates](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items-dynamic_tax_rates) verwendet werden. Sie können die Datenexporte von Stripe verwenden, um die für die Überweisung erforderlichen regelmäßigen Berichte auszufüllen. Weitere Informationen finden Sie unter [Steuerberichterstattung und Überweisung](https://docs.stripe.com/billing/taxes/tax-rates.md#remittance). ## Optional: Gutscheine hinzufügen [Serverseitig] Sie können [Gutscheine](https://docs.stripe.com/billing/subscriptions/coupons.md) auf Abonnements in einer Checkout-Sitzung anwenden, indem Sie [Rabatte](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts) einrichten. Diese Gutscheine überschreiben alle Gutscheine für die Kundin/den Kunden. Wenn Sie ein Abonnement für [bestehende Kundinnen/Kunden](https://docs.stripe.com/billing/subscriptions/paypal.md#handling-existing-customers) erstellen, werden alle mit der Kundin/dem Kunden verknüpften Gutscheine auf die *Rechnungen* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) des jeweiligen Abonnements angewendet. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"=paypal \ -d "line_items[][price]"="{{PRICE_ID}}" \ -d "line_items[][quantity]"=1 \-d "discounts[][coupon]"="{{COUPON_ID}}" \ -d "mode"="subscription" \ -d success_url="https://example.com/success" \ ``` ### Promo-Codes für Kund/innen hinzufügen Sie können auch [Promo-Codes](https://docs.stripe.com/billing/subscriptions/coupons.md#promotion-codes) für Kundinnen/Kunden aktivieren, indem Sie in Checkout-Sitzungen den Parameter [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) verwenden. Wenn `allow_promotion_codes` in einer Checkout-Sitzung aktiviert ist, zeigt Checkout ein Feld zum Einlösen von Promo-Codes, das Ihre Kundinnen/Kunden nutzen können. Sie können Ihre [Gutscheine](https://docs.stripe.com/billing/subscriptions/coupons.md) und Promo-Codes über das Dashboard oder die API erstellen, damit Ihre Kundinnen/Kunden sie in Checkout einlösen können. #### curl ```bash curl https://api.stripe.com/v1/checkout/sessions \ -u <>: \ -d "payment_method_types[]"="paypal" \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][price_data][currency]"="eur" \ -d "line_items[0][price_data][product]={{PRODUCT_ID}}" \ -d "line_items[0][price_data][recurring][interval]=month" \ -d "line_items[0][quantity]"=1 \-d "allow_promotion_codes"="true" \ -d "mode"="subscription" \ -d "success_url"="https://example.com/success" \ ``` ## See also - [Ihre Integration anpassen](https://docs.stripe.com/payments/checkout/customization.md) - [Verwalten Sie Abos über das Kundenportal](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted) # Direct API > This is a Direct API for when payments-ui-type is direct-api. View the full page at https://docs.stripe.com/billing/subscriptions/paypal?payments-ui-type=direct-api. Verwenden Sie diesen Leitfaden, um ein *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) mit [PayPal](https://docs.stripe.com/payments/paypal.md) als Zahlungsmethode einzurichten. ## Before you begin - Um PayPal-Abos über Stripe zu akzeptieren, müssen Sie im [Dashboard wiederkehrende PayPal-Zahlungen aktivieren](https://docs.stripe.com/payments/paypal/set-up-future-payments.md?platform=web#enable-recurring-payments). - Diese Funktion ist nur für bestimmte Unternehmensstandorte verfügbar. [Prüfen Sie die Unternehmensstandorte, um die Berechtigung zu bestätigen](https://docs.stripe.com/payments/paypal.md). ## Produkt und Preis erstellen [Dashboard] [Produkte](https://docs.stripe.com/api/products.md) stehen für den von Ihnen angebotenen Artikel oder Dienst. [Preise](https://docs.stripe.com/api/prices.md) geben an, wie viel und wie häufig Sie für ein Produkt berechnen. Dies schließt ein, wie viel ein Produkt kostet, welche Währung Sie akzeptieren und ob es sich um eine einmalige oder eine wiederkehrende Zahlung handelt. Wenn Sie nur ein paar wenige Produkte und Preise haben, können Sie diese im Dashboard erstellen und verwalten. In diesem Leitfaden wird ein Stock-Foto-Service als Beispiel verwendet, für den Kund/innen ein monatliches Abonnement mit dem Betrag von 15 EUR berechnet werden. Um dies zu modellieren: 1. Gehen Sie zur Seite [Produkte](https://dashboard.stripe.com/products?active=true) und klicken Sie auf **Produkt erstellen**. 1. Geben Sie einen **Namen** für das Produkt an. Sie können optional eine **Beschreibung** hinzufügen und ein Bild des Produkts hochladen. 1. Wählen Sie einen **Produktsteuercode** aus. Erfahren Sie mehr über [Produktsteuercodes](https://docs.stripe.com/tax/tax-codes.md). 1. Wählen Sie **Wiederkehrend** aus. Geben Sie im Anschluss daran **15** für den Preis ein und wählen Sie **EUR** als Währung aus. 1. Wählen Sie, ob die **Steuer im Preis berücksichtigt** werden soll. Sie können entweder den Standardwert aus Ihren [Steuereinstellungen](https://dashboard.stripe.com/test/settings/tax) verwenden oder den Wert manuell festlegen. Wählen Sie in diesem Beispiel **Auto** aus. 1. Wählen Sie **Monatlich** als **Abrechnungszeitraum** aus. 1. Klicken Sie auf **Weitere Preisoptionen**. Wählen Sie dann **Pauschalpreis** als Preismodell für dieses Beispiel aus. Erfahren Sie mehr über [Pauschalpreise](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate) und andere [Preismodelle](https://docs.stripe.com/products-prices/pricing-models.md). 1. Fügen Sie eine interne **Preisbeschreibung** und einen [Lookup-Schlüssel](https://docs.stripe.com/products-prices/manage-prices.md#lookup-keys) hinzu, um bestimmte Preise in Zukunft zu organisieren, abzufragen und zu aktualisieren. 1. Klicken Sie auf **Weiter**. Klicken Sie dann auf **Produkt hinzufügen**. Zeichnen Sie nach Erstellen des Produkts und des Preises die Preis-ID auf, sodass Sie diese in nachfolgenden Schritten verwenden können. Die ID wird auf der Preisseite angezeigt und sieht in etwa so aus: `price_G0FvDp6vZvdwRZ`. ## Kund/innen vor Einrichtung erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode PayPal für künftige Zahlungen zu hinterlegen, ordnen Sie diese den gewünschten *Kundinnen und Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zu. Sie sollten ein Customer-Objekt erstellen, wenn ein Kunde/eine Kundin ein Konto bei Ihrem Unternehmen anlegt. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung eines Kunden/einer Kundin verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn der Kunde/die Kundin noch kein Konto erstellt hat, können Sie jetzt trotzdem ein Customer-Objekt erstellen und es zu einem späteren Zeitpunkt mit Ihrer eigenen internen Darstellung des Kundenkontos verknüpfen. ```curl curl -X POST https://api.stripe.com/v1/customers \ -u "<>:" ``` ## SetupIntent erstellen [Serverseitig] Ein [SetupIntent](https://docs.stripe.com/api/setup_intents.md) ist ein Objekt, das Ihre Absicht darstellt, die Zahlungsmethode Ihrer Kundinnen/Kunden für zukünftige Zahlungen einzurichten, und die entsprechenden Schritte dokumentiert. Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/setup_intents.md) auf Ihrem Server, wobei die [payment_method_types](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-payment_method_types) auf `paypal` festgelegt sind, und geben Sie die [ID](https://docs.stripe.com/api/customers/object.md#customer_object-id) *des Kunden/der Kundin* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) an: ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_types[]=paypal" \ -d "payment_method_data[type]=paypal" ``` Das SetupIntent-Objekt enthält ein [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret). Dies ist ein eindeutiger Schlüssel, den Sie auf der Client-Seite an Stripe übergeben müssen, um Ihre Käufer/innen an PayPal weiterzuleiten und Mandate zu autorisieren. ## Kund/innen weiterleiten [Clientseitig] Wenn Kundinnen/Kunden versuchen, ihr PayPal-Konto für zukünftige Zahlungen einzurichten, empfehlen wir die Verwendung von [Stripe.js](https://docs.stripe.com/js.md) zur Bestätigung des SetupIntent. Stripe.js ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie verarbeitet automatisch komplexe Szenarien wie die nachfolgend beschriebene Weiterleitung und ermöglicht die Erweiterung Ihrer Integration durch zusätzliche Zahlungsmethoden in der Zukunft. Fügen Sie das Stripe.js-Skript auf Ihrer Bezahlseite ein, indem Sie es zum Header der HTML-Datei hinzufügen. ```html Checkout ``` Erstellen Sie einen Instanz von Stripe.js mit dem folgenden JavaScript auf Ihrer Bezahlseite. ```javascript // Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>', {} ); ``` Um die Einrichtung auf der Client-Seite zu bestätigen, übergeben Sie das Client-Geheimnis des SetupIntent-Objekts, das Sie in Schritt 3 erstellt haben. Das Client-Geheimnis unterscheidet sich von Ihren API-Schlüsseln, die Stripe-API-Anfragen authentifizieren. Dennoch sollte sorgfältig damit umgegangen werden, da damit Zahlungen abgeschlossen werden können. Es darf nicht protokolliert, in URLs eingebettet oder Personen außer den Kundinnen und Kunden selbst zugänglich gemacht werden. ### PayPal-Einrichtung bestätigen Um die Verwendung des PayPal-Kontos für zukünftige Zahlungen zu genehmigen, werden Ihre Kundinnen/Kunden an eine PayPal-Zahlungsvereinbarungsseite weitergeleitet, der sie zustimmen müssen, bevor sie wieder zu Ihrer Website weitergeleitet werden. Verwenden Sie [stripe.confirmPayPalSetup](https://docs.stripe.com/js/setup_intents/confirm_paypal_setup), um die Weiterleitung von Ihrer Seite durchzuführen und die Einrichtung abzuschließen. Fügen Sie dieser Funktion eine `return_url` hinzu, um anzugeben, wohin Stripe die Nutzer/innen weiterleiten soll, nachdem sie die Abrechnungsvereinbarung auf der Website von PayPal bestätigt haben. ```javascript // Redirects away from the client const {error} = await stripe.confirmPayPalSetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/setup/complete', mandate_data: { customer_acceptance: { type: 'online', online: { infer_from_client: true } } }, } ); if (error) { // Inform the customer that there was an error. } ``` Sie finden die ID der zahlenden Person und die ID der Abrechnungsvereinbarung im sich ergebenden [Mandat](https://docs.stripe.com/api/mandates/.md) unter der Eigenschaft [payment_method_details](https://docs.stripe.com/api/mandates/object.md#mandate_object-payment_method_details-paypal)). Die E-Mail-Adresse des Käufers/der Käuferin und die ID der zahlenden Person finden Sie auch in der Eigenschaft [PayPal](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-paypal) der [PaymentMethod](https://docs.stripe.com/api/payment_methods.md). | Feld | Wert | | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payer_email` | Die E-Mail-Adresse der zahlenden Person in ihrem PayPal-Konto. | | `payer_id` | Eine eindeutige ID des PayPal-Kontos der zahlenden Person. | | `billing_agreement_id` | Die PayPal Billing Agreement ID (BAID). Dies ist eine von PayPal erzeugte ID, die das Mandat zwischen dem Unternehmen und der Kundin bzw. dem Kunden darstellt. | ## Webhooks überwachen [Serverseitig] Verwenden Sie eine Methode wie [Webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks), um zu bestätigen, dass die Abrechnungsvereinbarung kundenseitig ordnungsgemäß autorisiert wurde, statt sich darauf zu verlassen, dass Ihre Kunden und Kundinnen zur Zahlungsstatusseite zurückkehren. Wird eine Abrechnungsvereinbarung erfolgreich autorisiert, so gibt der SetupIntent das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus. Wenn Kundinnen/Kunden die Abrechnungsvereinbarung nicht erfolgreich autorisieren, gibt der SetupIntent das Webhook-Ereignis [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus und wechselt wieder in den Status `requires_payment_method`. Wenn ein Kunde/eine Kundin die Abrechnungsvereinbarung von seinem/ihren PayPal-Konto widerruft, wird [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated) ausgegeben. ## Abonnement erstellen [Serverseitig] Erstellen Sie ein [Abonnement](https://docs.stripe.com/api/subscriptions.md) mit dem Preis und dem Kunden/der Kundin: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_Gk0uVzT2M4xOKD \ -d default_payment_method=pm_1F0c9v2eZvKYlo2CJDeTrB4n \ -d "items[0][price]=price_F52b2UdntfQsfR" \ -d "expand[0]=latest_invoice.confirmation_secret" \ -d off_session=true ``` Durch das Erstellen von Abonnements werden Kundenzahlungen automatisch abgewickelt, weil die [Standard-Zahlungsmethode](https://docs.stripe.com/api/customers/create.md#create_customer-invoice_settings-default_payment_method) festgelegt wird. Nach einer erfolgreichen Zahlung ändert sich der Status im [Stripe-Dashboard](https://dashboard.stripe.com/test/subscriptions) in **Aktiv**. Der Preis, den Sie zuvor erstellt haben, bestimmt nachfolgende Abrechnungen. ## Abonnementstatus verwalten [Clientseitig] Wenn die erste Zahlung erfolgreich war, ist der Status des Abonnements `active` und es sind keine weiteren Maßnahmen erforderlich. Wenn Zahlungen fehlschlagen, wird der Status in den **Status des Abonnements** geändert, der in Ihren [Einstellungen für den automatischen Einzug](https://docs.stripe.com/invoicing/automatic-collection.md) konfiguriert ist. Benachrichtigen Sie die Kundin / den Kunden nach einem Fehlschlag und [wickeln Sie die Zahlung mit einer anderen Zahlungsmethode ab](https://docs.stripe.com/billing/subscriptions/overview.md#requires-payment-method). ## Ein Abonnement aktualisieren [Serverseitig] Wenn Sie ein Abonnement aktualisieren, müssen Sie `off_session=true` angeben. Andernfalls ist für jede neue Zahlung eine Weiterleitung der Nutzer/innen an PayPal zur Bestätigung erforderlich. Wenn Sie beispielsweise die Menge eines im Abonnement enthaltenen Artikels ändern möchten, können Sie Folgendes verwenden: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_Gk0uVzT2M4xOKD \ -d default_payment_method=pm_1F0c9v2eZvKYlo2CJDeTrB4n \ -d "items[0][price]=price_F52b2UdntfQsfR" \ -d "items[0][quantity]=2" \ -d off_session=true ``` ## Integration testen Testen Sie Ihre PayPal-Integration mit Ihren [Test-API-Schlüsseln](https://docs.stripe.com/keys.md#test-live-modes), indem Sie die Weiterleitungsseite anzeigen. Sie können die erfolgreiche Zahlung testen, indem Sie die Zahlung auf der Weiterleitungsseite authentifizieren. Der PaymentIntent wechselt von `requires_action` zu `succeeded`. Um den Fall zu testen, in dem Nutzer/innen sich nicht authentifizieren können, verwenden Sie Ihre Test-API-Schlüssel und zeigen Sie die Weiterleitungsseite an. Klicken Sie auf der Weiterleitungsseite auf **Fail test payment** (Testzahlung fehlschlagen lassen). Der PaymentIntent wechselt von `requires_action` zu `requires_payment_method`. ## Optional: Legen Sie den Rechnungsstellungszeitraum fest Wenn Sie ein Abonnement erstellen, wird der Abrechnungszyklus automatisch auf Standard eingestellt. Wenn ein Kunde/eine Kundin beispielsweise am 7. September einen monatlichen Plan abonniert, wird dies danach am 7. jedes Monats in Rechnung gestellt. Manche Unternehmen legen ihren Abrechnungszyklus lieber selbst fest, damit sie ihren Kundinnen/Kunden jeden Zyklus zur selben Zeit in Rechnung stellen können. Das Argument [Abrechnungszyklusanker](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-billing_cycle_anchor) macht dies möglich. ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{PRICE_ID}}" \ -d billing_cycle_anchor=1611008505 ``` Durch manuelles Festlegen des Abrechnungszyklus wird dem Kunden/der Kundin automatisch ein anteilsmäßig verrechneter Betrag für die Zeit zwischen der Erstellung des Abonnements und dem Abrechnungszyklusanker berechnet. Wenn Sie Kundinnen/Kunden diesen Zeitraum nicht in Rechnung stellen möchten, können Sie das Argument [proration_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-proration_behavior) auf `none` setzen. Sie können den Abrechnungszyklusanker auch mit [Testzeiträumen](https://docs.stripe.com/billing/subscriptions/paypal.md#trial-periods) kombinieren, um Nutzern und Nutzerinnen kostenlosen Zugriff auf Ihr Produkt zu gewähren und ihnen dann einen anteiligen Betrag zu berechnen. ## Optional: Abonnement-Testphasen Kostenlose Testphasen ermöglichen Kundinnen/Kunden, Ihr Produkt für einen begrenzten Zeitraum ohne Gebühren zu nutzen. Die Nutzung kostenloser Testphasen unterscheidet sich vom Festlegen bdes [proration_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-proration_behavior) auf `none`, da Sie die Dauer der kostenlosen Testphase anpassen können. Übergeben Sie einen Zeitstempel im [Ablauf der Testphase](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_end), um den Testzeitraum festzulegen. ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{PRICE_ID}}" \ -d trial_end=1610403705 ``` Sie können einen [Abrechnungszyklusanker](https://docs.stripe.com/billing/subscriptions/paypal.md#billing-cycle) auch mit einer kostenlosen Testphase kombinieren. Angenommen, es ist der 15. September und Sie möchten Ihrem Kunden/Ihrer Kundin eine kostenlose siebentägige Testphase schenken und am 1. Oktober mit dem normalen Abrechnungszyklus starten. Sie können den Ablauf der kostenlosen Testphase auf den 22. September festlegen und den Abrechnungszyklusanker auf den 1. Oktober. So kann der Kunde/die Kundin sieben Tage lang eine kostenlose Testversion nutzen und für den Zeitraum zwischen Ablauf der Testphase und dem 1. Oktober wird ein anteilsmäßig verrechneter Betrag berechnet. Am 1. Oktober berechnen Sie dem Kunden/der Kundin dann den normalen Abonnementbetrag für seinen/ihren ersten vollen Abrechnungszyklus. ## Optional: Gespeichertes PayPal-Konto entfernen Mit der API zum [Trennen](https://docs.stripe.com/api/payment_methods/detach.md) können Sie das gespeicherte PayPal-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Wenn Sie eine PayPal-Zahlungsmethode trennen, wird das [Mandat](https://docs.stripe.com/api/mandates.md) widerrufen und außerdem die PayPal API aufgerufen, um die zugehörige PayPal-Abrechnungsvereinbarung zu stornieren. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ```