# Zukünftige Klarna-Zahlungen einrichten So speichern Sie Klarna-Angaben und akzeptieren Zahlungen Ihrer Kund/innen zu einem späteren Zeitpunkt. Sie können Klarna als *Zahlungsmethode* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) eines Kunden/einer Kundin speichern und künftige Zahlungen abrechnen, um Folgendes zu unterstützen: - Automatische Zahlung für *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), mit oder ohne [kostenlosem Testzeitraum](https://docs.stripe.com/billing/subscriptions/trials.md). - Automatische Bezahlung von Abonnements für Bestellungen, die auch nicht abonnierte Produkte enthalten. - Speichern von Klarna in einer Wallet, um zukünftige *On-Demand* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app) -Käufe zu optimieren, ohne dass eine erneute Kundenauthentifizierung erforderlich ist. In diesem Leitfaden erfahren Sie, wie Sie Klarna als Zahlungsmethode speichern, mit der Sie sofort oder später abrechnen können. Dieser Leitfaden ist nicht für Integrationen gedacht, die [Stripe Billing](https://docs.stripe.com/billing.md) verwenden. Wenn Sie Stripe Billing verwenden, informieren Sie sich unter [Klarna für Abonnements](https://docs.stripe.com/billing/subscriptions/klarna.md). > #### Die verfügbaren Klarna Zahlungsoptionen variieren je nach Anwendungsfall und Käuferland > > Informieren Sie sich, welche [Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) für Ihre Kundinnen und Kunden verfügbar sind, bevor Sie mit der Integration beginnen. Wir empfehlen die Verwendung von [Stripe Checkout](https://docs.stripe.com/payments/checkout.md), um Klarna als Zahlungsmethode zu speichern. # Bezahlvorgang > This is a Bezahlvorgang for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/klarna/set-up-future-payments?payment-ui=checkout. Im ersten Teil dieses Leitfadens wird erklärt, wie Sie [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) verwenden, um Klarna als Zahlungsmethode zu speichern. Im letzten Schritt wird erklärt, wie Sie die gespeicherte Zahlungsmethode für ein Abonnement oder eine *-on-Demand-Zahlung* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app) belasten. ## 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' ``` ## Kund/innen vor Einrichtung erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Klarna für künftige Zahlungen zu hinterlegen, müssen Sie diese den gewünschten *Kund/innen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kund/innen ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung eines/einer Kund/in verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kund/innen noch kein Konto erstellt haben, 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 "<>:" ``` ## Checkout-Sitzung erstellen [Clientseitig] [Serverseitig] Bevor Sie Zahlungen per Klarna annehmen können, müssen Ihre Kund/innen Sie zum Verwenden ihrer Klarna-Konten für künftige Zahlungen über Stripe Checkout autorisieren. Fügen Sie Ihrer Seite eine **Autorisieren**-Schaltfläche zum Bezahlen hinzu, über die ein serverseitiger Endpoint aufgerufen wird, um eine [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) zu erstellen. ```html Authorize
``` #### Abonnement Sie sollten die Abonnementdetails weitergeben, wenn Sie Checkout verwenden, um ein Abonnement einzurichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d mode=setup \ -d customer={{CUSTOMER_ID}} \ -d currency=usd \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][name]=Customer-facing name for subscription" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=10000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` #### On-Demand-Zahlungen ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d mode=setup \ -d customer={{CUSTOMER_ID}} \ -d currency=usd \ --data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}" ``` 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. ## Weiterleitung von Checkout einrichten [Clientseitig] [Serverseitig] Wenn Ihre Kundinnen/Kunden ihre Angaben zur Zahlungsmethode machen, werden sie an die `success_url` weitergeleitet. Hierbei handelt es sich um eine Seite auf Ihrer Website, auf der Ihre Kundinnen/Kunden darüber informiert werden, dass sie ihre Zahlungsmethode erfolgreich gespeichert haben. Stellen Sie die Sitzungs-ID auf Ihrer Bestätigungsseite zur Verfügung, indem Sie die Vorlagenvariable `{CHECKOUT_SESSION_ID}` wie im obigen Beispiel in die `success_url` einfügen. > 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. ## Zahlungsmethode abrufen [Serverseitig] Nachdem ein Kunde/eine Kundin seine/ihre Zahlungsdetails übermittelt hat, rufen Sie das [PaymentMethod](https://docs.stripe.com/payments/payment-methods.md)-Objekt ab. Eine *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) speichert die Klarna account-Informationen der Kundinnen und Kunden für spätere Zahlungen. Sie können die PaymentMethod synchron mit der `success_url` oder asynchron mithilfe von *Webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) abrufen. Ob Sie die PaymentMethod synchron oder asynchron abrufen, hängt von Ihrer Toleranz gegenüber Kaufabbrüchen ab, da Kund/innen in manchen Fällen nach erfolgreicher Zahlung nicht zur `success_url` weitergeleitet werden. (Sie können beispielsweise die Registerkarte im Browser schließen, bevor die Weiterleitung erfolgt ist.) Die Verarbeitung von Webhooks verhindert diese Form von Kaufabbrüchen in Ihrer Integration. #### Webhooks Verarbeiten Sie `checkout.session.completed`-Webhooks, die ein Session-Objekt enthalten. Hier erfahren Sie mehr über das [Einrichten von Webhooks](https://docs.stripe.com/webhooks.md). Beim folgenden Beispiel handelt es sich um eine `checkout.session.completed`-Antwort. ```json { "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "client_reference_id": null, "customer": null, "customer_email": null, "display_items": [], "mode": "setup","setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" } ``` Beachten Sie den Wert des Schlüssels `setup_intent`, der die ID für das SetupIntent ist, das mit dem Bezahlvorgang erstellt wurde. Ein [SetupIntent](https://docs.stripe.com/payments/setup-intents.md) ist ein Objekt, das dazu dient, die Kundinnen und Kunden Klarna account-Informationen für zukünftige Zahlungen einzurichten. [Rufen Sie](https://docs.stripe.com/api/setup_intents/retrieve.md) das SetupIntent-Objekt mit der ID ab. Das zurückgegebene Objekt enthält die `payment_method`-ID. ```curl curl https://api.stripe.com/v1/setup_intents/seti_1EzVO3HssDVaQm2PJjXHmLlM \ -u "<>:" ``` #### Bestätigungs-URL Beziehen Sie die `session_id` aus der URL, wenn Nutzer/innen zu Ihrer Website zurückgeleitet werden, und [rufen Sie](https://docs.stripe.com/api/checkout/sessions/retrieve.md) das Sitzungsobjekt ab. ```curl curl -G https://api.stripe.com/v1/checkout/sessions/{{SESSION_ID}} \ -u "<>:" \ -d "expand[]=setup_intent" ``` > Um sicherzustellen, dass die `session_id` unter der URL verfügbar ist, fügen Sie beim Erstellen der Checkout-Sitzung die Vorlagenvariable `session_id={CHECKOUT_SESSION_ID}` in der `success_url` hinzu. Beachten Sie den SetupIntent, der während des Bezahlvorgangs erstellt wird. Ein [SetupIntent](https://docs.stripe.com/payments/setup-intents.md) ist ein Objekt, das dazu dient, die Kundin bzw. den Kunden Klarna account für zukünftige Zahlungen einzurichten. Das zurückgegebene Objekt enthält die `payment_method`-ID. ## Ereignisse nach Einrichtung verarbeiten [Serverseitig] Verwenden Sie eine Methode wie [Webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks), um zu bestätigen, dass der Kunde/die Kundin die Abrechnungsvereinbarung autorisiert hat. Verlassen Sie sich nicht darauf, dass Ihre Kundinnen und Kunden zur Zahlungsstatusseite zurückkehren. Wenn Kundinnen und Kunden die Abrechnungsvereinbarung erfolgreich autorisieren, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) oder [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus und der Intent-Status wechselt zu `succeeded`. Speichern Sie die resultierende [payment_method](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-payment_method)-ID, um Zahlungen später mit der gespeicherten PaymentMethod vorzunehmen. Wenn eine Kundin/ein Kunde die Abrechnungsvereinbarung nicht erfolgreich autorisiert, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed) oder [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus, und der Intent-Status wechselt wieder zu `requires_payment_method`. ## Zahlungsmethode für künftige Zahlungen verwenden [Serverseitig] #### Verlängerung des Abonnements Wenn Sie bereit sind, Ihrem Kunden/Ihrer Kundin eine Off-Session-Gebühr zu berechnen, verwenden Sie die IDs *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), um eine [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `true`, um anzugeben, dass sich Kundinnen/Kunden während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befinden. Dies hat zur Folge, dass der PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. - Geben Sie eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) an, um anzugeben, wohin Stripe den Kunden/die Kundin weiterleiten soll, nachdem er/sie von der Website von Klarna zurückgekehrt ist. Senden Sie Abonnementdetails und Posten bei jeder Verlängerung. Verwenden Sie für Ihr Abonnement die gleiche `reference` wie bei der Einrichtung der Zahlungsmethode. Wenn sich die Abonnementdetails geändert haben, seit Sie die Zahlungsmethode gespeichert haben, senden Sie die neuen Informationen mit der gleichen `reference`. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` #### On-Demand-Zahlung Wenn Sie bereit sind, Ihre Kundinnen/Kunden zu belasten, verwenden Sie die *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)- und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-IDs, um einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `false`, um anzugeben, dass sich der Kunde/die Kundin während dieses Zahlungsversuchs in einem Bezahlvorgang befindet. Wenn ein Fehler auftritt, z. B. wenn eine Authentifizierung erforderlich ist, wird die Kundin/der Kunde zur Authentifizierung oder Behebung des Problems auf die Seite von Klarna weitergeleitet. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. Das folgende Beispiel enthält optionale Details mit [payment_method_options](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options), um die Risikoevaluation und Autorisierungsquoten von Klarna zu verbessern. Dazu gehören Einzelheiten darüber, wie diese gespeicherte Klarna-Zahlungsmethode in Zukunft verwendet werden soll, wie etwa die erwarteten zukünftigen Bestellbeträge und die Häufigkeit von Zahlungen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=false \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=1099" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]={{SUBSCRIPTION_ID}}" \ -d "payment_method_options[klarna][on_demand][average_amount]=1000" \ -d "payment_method_options[klarna][on_demand][minimum_amount]=100" \ -d "payment_method_options[klarna][on_demand][maximum_amount]=10000" \ -d "payment_method_options[klarna][on_demand][interval]=year" \ -d "payment_method_options[klarna][on_demand][interval_count]=1" ``` ## Umgang mit dem Widerruf wiederverwendbarer Zahlungsmethoden [Serverseitig] Sie können eine wiederverwendbare Zahlungsmethode auf zwei Arten widerrufen: - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode in der mobilen Anwendung von Klarna deaktivieren. In diesem Fall sendet Stripe Ihnen ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis. Zur Verarbeitung abonnieren Sie die [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse und rufen [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) auf, um sie zu deaktivieren. - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode auch auf Ihrer Nutzeroberfläche deaktivieren, sofern dies unterstützt wird. In diesem Szenario kann Ihr Server [PaymentMethod trennen](https://docs.stripe.com/api/payment_methods/detach.md) aufrufen, um die Deaktivierung zu verarbeiten. In beiden Fällen sendet Stripe, nachdem Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) aufgerufen haben, ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. ## Integration testen Wählen Sie beim Testen Ihrer Checkout-Integration Klarna als Zahlungsmethode aus und klicken Sie auf die Schaltfläche **Speichern**. In einer Testumgebung können Sie dann verschiedene Ergebnisse innerhalb der Weiterleitung von Klarna simulieren. > Klarna verwendet Cookies zur Sitzungsverfolgung. Um verschiedene Standorte von Kundinnen und Kunden zu testen, melden Sie sich bitte aus der Klarna-Sandbox der vorherigen Sitzung ab und verwenden Sie die entsprechenden Auslöser. Nachfolgend haben wir speziell ausgewählte Testdaten für die derzeit unterstützten Kundenländer zusammengestellt. In einer Sandbox nutzt Klarna die angegebene E-Mail-Adresse, um eine Transaktion zu genehmigen oder abzulehnen. #### Australien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 03.05.1994 | | Vorname | Test | John | | Nachname | Person-au | schnee | | Straße | Wharf St | Silverwater Rd | | Hausnummer | 4 | 1 bis 5 | | Postleitzahl | 4877 | 2128 | | Stadt | Port Douglas | Silverwater | | Region | QLD | NSW | | Telefon | +61473752244 | +61473763254 | | E-Mail-Adresse | customer@email.au | customer+denied@email.au | #### Österreich | | Genehmigt | Abgelehnt | | -------------- | ------------------ | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-at | Person-at | | E-Mail-Adresse | customer@email.at | customer+denied@email.at | | Straße | Mariahilfer Straße | Mariahilfer Straße | | Hausnummer | 47 | 47 | | Ort | Wien | Wien | | Postleitzahl | 1060 | 1060 | | Telefon | +4306762600456 | +4306762600745 | #### Belgien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-be | Person-be | | E-Mail-Adresse | customer@email.be | customer+denied@email.be | | Straße | Grote Markt | Grote Markt | | Hausnummer | 1 | 1 | | Ort | Belgien | Belgien | | Postleitzahl | 1000 | 1000 | | Telefon | +32485121291 | +32485212123 | #### Kanada | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-ca | Person-ca | | Straße | 2693 Byron Rd | 2693 Byron Rd | | Postleitzahl | V7H 1L9 | V7H 1L9 | | Stadt | Nord-Vancouver | Nord-Vancouver | | Region | BC | BC | | Telefon | +15197438620 | +15197308624 | | E-Mail-Adresse | customer@email.ca | customer+denied@email.ca | #### Tschechien | | Genehmigt | Abgelehnt | | ------------ | ------------------ | ------------------------ | | Geburtsdatum | 01.01.1970 | 27.06.1992 | | Vorname | Test | Test | | Nachname | Person-cz | Person-cz | | E-Mail | customer@email.cz | customer+denied@email.cz | | Straße | Zazvorkova 1480/11 | Zázvorkova 1480/11 | | Postleitzahl | 155 00 | 155 00 | | Stadt | Prag | PRAHA 13 | | Telefon | +420771613715 | +420771623691 | #### Dänemark | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1980 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-dk | Person-dk | | E-Mail-Adresse | customer@email.dk | customer+denied@email.dk | | Straße | Dantes Plads | Nygårdsvej | | Hausnummer | 7 | 65 | | Ort | København Ø | København Ø | | Postleitzahl | 1556 | 2100 | | Telefon | +4542555628 | +4552555348 | #### Finnland | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1999 | 01.01.1999 | | Vorname | Test | Person FI | | Nachname | Person-fi | Test | | E-Mail-Adresse | customer@email.fi | customer+denied@email.fi | | Straße | Mannerheimintie | Mannerheimintie | | Hausnummer | 34 | 34 | | Ort | Helsinki | Helsinki | | Postleitzahl | 00100 | 00100 | | Telefon | +358401234567 | +358401234568 | #### Frankreich | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10.07.1990 | 10.07.1990 | | Geburtsort | Paris | Paris | | Vorname | Test | Test | | Nachname | Person-fr | Person-fr | | E-Mail-Adresse | customer@email.fr | customer+denied@email.fr | | Straße | Rue La Fayette | Rue La Fayette | | Hausnummer | 33 | 33 | | Ort | Paris | Paris | | Postleitzahl | 75009 | 75009 | | Telefon | +33689854321 | +33687984322 | #### Deutschland | | Genehmigt | Abgelehnt | | -------------- | --------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Mock | Test | | Nachname | Mock | Person-de | | E-Mail-Adresse | customer@email.de | customer+denied@email.de | | Straße | Neue Schönhauser Str. | Neue Schönhauser Str. | | Hausnummer | 2 | 2 | | Ort | Berlin | Berlin | | Postleitzahl | 10178 | 10178 | | Telefon | +49017614284340 | +49017610927312 | #### Griechenland | | Genehmigt | Abgelehnt | | ------------ | ----------------- | ------------------------ | | Steuernummer | 090000045 | 090000045 | | Geburtsdatum | 01.01.1960 | 11.11.1970 | | Vorname | Test | Test | | Nachname | Person-gr | Test-gr | | E-Mail | customer@email.gr | customer+denied@email.gr | | Straße | Kifisia | Baralo | | Hausnummer | 37 | 56 | | Postleitzahl | 151 23 | 123 67 | | Stadt | Athen | Athen | | Telefon | +306945553624 | +306945553625 | #### Irland | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-ie | Person-ie | | E-Mail-Adresse | customer@email.ie | customer+denied@email.ie | | Straße | King Street South | King Street South | | Hausnummer | 30 | 30 | | Ort | Dublin | Dublin | | EIR-Code | D02 C838 | D02 C838 | | Telefon | +353855351400 | +353855351401 | #### Italien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1980 | 01.01.1980 | | Vorname | Test | Test | | Nachname | Person-it | Person-it | | E-Mail-Adresse | customer@email.it | customer+denied@email.it | | Steuernummer | RSSBNC80A41H501B | RSSBNC80A41H501B | | Straße | Via Enrico Fermi | Via Enrico Fermi | | Hausnummer | 150 | 150 | | Ort | Rom | Rom | | Postleitzahl | 00146 | 00146 | | Telefon | +393339741231 | +393312232389 | #### Niederlande | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-nl | Person-nl | | E-Mail-Adresse | customer@email.nl | customer+denied@email.nl | | Straße | Osdorpplein | Osdorpplein | | Hausnummer | 137 | 137 | | Ort | Amsterdam | Amsterdam | | Postleitzahl | 1068 SR | 1068 SR | | Telefon | +31689124321 | +31632167678 | #### Neuseeland | | Genehmigt | Abgelehnt | | -------------- | ------------------------ | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-nz | Person-nz | | Straße | Mount Wellington Highway | Mount Wellington Highway | | Hausnummer | 286 | 286 | | Postleitzahl | 6011 | 6011 | | Stadt | Auckland | Wellington | | Telefon | +6427555290 | +642993007712 | | E-Mail-Adresse | customer@email.nz | customer+denied@email.nz | #### Norwegen | | Genehmigt | Abgelehnt | | ------------------ | ------------------- | ------------------------ | | Geburtsdatum | 01.08.1970 | 01.08.1970 | | Vorname | Jane | Test | | Nachname | Test | Person-no | | E-Mail-Adresse | customer@email.no | customer+denied@email.no | | Persönliche Nummer | NO1087000571 | NO1087000148 | | Straße | Edvard Munchs Plass | Sæffleberggate | | Hausnummer | 1 | 56 | | Ort | Oslo | Oslo | | Postleitzahl | 0194 | 0563 | | Telefon | +4740123456 | +4740123457 | #### Polen | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 05.05.1967 | 05.05.1967 | | Vorname | Test | Test | | Nachname | Person-pl | Person-pl | | Straße | Ul. Górczewska | Ul. Górczewska | | Hausnummer | 124 | 124 | | Postleitzahl | 01-460 | 01-460 | | Stadt | Warschau | Warschau | | Telefon | +48795222223 | +48795223325 | | E-Mail-Adresse | customer@email.pl | customer+denied@email.pl | #### Portugal | | Genehmigt | Abgelehnt | | -------------- | ------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-pt | Person-pt | | Straße | Avenida Dom João II | Avenida Dom João II | | Hausnummer | 40 | 40 | | Postleitzahl | 1990-094 | 1990-094 | | Stadt | Lissabon | Lissabon | | Telefon | +351935556731 | +351915593837 | | E-Mail-Adresse | customer@email.pt | customer+denied@email.pt | #### Rumänien | | Genehmigt | Abgelehnt | | --------------------------------------- | ----------------- | ------------------------ | | Geburtsdatum | 25.12.1970 | 25.12.1970 | | Vorname | Test | Test | | Nachname | Person-ro | Person-ro | | E-Mail | customer@email.ro | customer+denied@email.ro | | Straße | Drumul Taberei | Drumul Taberei | | Hausnummer | 35 | 35 | | Stadt | București | București | | Sector | Sectorul 6 | Sectorul 6 | | Postleitzahl | 061357 | 061357 | | Telefon | +40741209876 | +40707127444 | | Persönliche Identifikationsnummer (CNP) | 1701225193558 | | #### Spanien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | DNI/NIE | 99999999R | 99999999R | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-es | Person-es | | E-Mail-Adresse | customer@email.es | customer+denied@email.es | | Straße | C. de Atocha | C. de Atocha | | Hausnummer | 27 | 27 | | Ort | Madrid | Madrid | | Postleitzahl | 28012 | 28012 | | Telefon | +34672563009 | +34682425101 | #### Schweden | | Genehmigt | Abgelehnt | | -------------- | ----------------------- | ------------------------ | | Geburtsdatum | 21.03.1941 | 28.10.1941 | | Vorname | Alice | Test | | Nachname | Test | Person-se | | E-Mail-Adresse | customer@email.se | customer+denied@email.se | | Straße | Södra Blasieholmshamnen | Karlaplan | | Hausnummer | 2 | 3 | | Ort | Stockholm | Stockholm | | Postleitzahl | 11 148 | 11 460 | | Telefon | +46701740615 | +46701740620 | #### Schweiz | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1990 | 01.01.2000 | | Vorname | Akzeptiert | Kund/in | | Nachname | Person-ch | Person-ch | | Straße | Augustinergasse | Bahnhofstrasse | | Hausnummer | 2 | 77 | | Postleitzahl | 4051 | 8001 | | Stadt | Basel | Zürich | | Telefon | +41758680000 | +41758680001 | | E-Mail-Adresse | customer@email.ch | customer+denied@email.ch | #### Großbritannien | | Genehmigt | Abgelehnt | | -------------- | --------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-uk | Person-uk | | E-Mail-Adresse | customer@email.uk | customer+denied@email.uk | | Straße | New Burlington Street | New Burlington Street | | Hausnummer | 10 | 10 | | Apartment | Apt 214 | Apt 214 | | Postleitzahl | W1S 3BE | W1S 3BE | | Ort | London | London | | Telefon | +447755564318 | +447355505530 | #### Vereinigte Staaten | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 07.10.1970 | 07.10.1970 | | Vorname | Test | Test | | Nachname | Person-us | Person-us | | E-Mail-Adresse | customer@email.us | customer+denied@email.us | | Straße | Amsterdam Ave | Amsterdam Ave | | Hausnummer | 509 | 509 | | Ort | New York | New York | | Bundesstaat | New York | New York | | Postleitzahl | 10024-3941 | 10024-3941 | | Telefon | +13106683312 | +13106354386 | ### Zwei-Schritte-Authentifizierung Jede 6-stellige Zahl ist ein gültiger Code für die Zwei-Schritte-Authentifizierung. Verwenden Sie `999999`, damit die Authentifizierung fehlschlägt. ### Rückzahlungmethode Innerhalb des Klarna-Ablaufs können Sie die folgenden Testwerte verwenden, um verschiedene Rückzahlungsarten auszuprobieren: | Typ | Wert | | -------------------- | -------------------------------------------------------------------------------------------------------------- | | Lastschriftverfahren | DE11520513735120710131 | | Banküberweisung | Demo-Bank | | Kreditkarte | - Nummer: 4111 1111 1111 1111 - Prüfziffer: 123 - Gültig bis: ein beliebiges gültiges Datum in der Zukunft | | Debitkarte | - Nummer: 4012 8888 8888 1881 - Prüfziffer: 123 - Gültig bis: ein beliebiges gültiges Datum in der Zukunft | ## Optional: Aktualisieren Sie eine gespeicherte Zahlungsmethode [Serverseitig] Kundinnen/Kunden werden erneut durch den Zahlungsablauf von Klarna geführt, wenn sie ihr Abo aktualisieren. Dadurch stellt Klarna sicher, dass die Abonnementinformationen möglichst genau sind und die Autorisierungsraten werden optimiert. #### Upgrade durchführen und Zahlungsverlängerung Erstellen Sie ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) mit derselben Struktur wie bei der Belastung einer gespeicherten Zahlungsmethode und fügen Sie `setup_future_usage` hinzu, um anzugeben, dass Sie die bestehende Zahlungsmethode aktualisieren möchten. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim ersten Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d setup_future_usage=off_session \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=10000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Das resultierende PaymentIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, [wie Sie die Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md?web-or-mobile=web&payment-ui=elements#web-redirect-customer). #### Upgrade durchführen und später bezahlen Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/payment_intents.md) und übergeben Sie die bereits gespeicherte Zahlungsmethode. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim erstmaligen Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=20000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Das resultierende SetupIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, wie Sie die [Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md?web-or-mobile=web&payment-ui=elements#web-redirect-customer). ## Optional: Ein gespeichertes Klarna Konto entfernen [Serverseitig] Mit der [Detach](https://docs.stripe.com/api/payment_methods/detach.md) API können Sie das gespeicherte Klarna-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Entfernen Sie ein Klarna-Konto, wenn Sie wissen, dass es nicht mehr verwendet wird, z. B. wenn der Kunde/die Kundin sein/ihr Abonnement kündigt. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ``` # Direct API > This is a Direct API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/klarna/set-up-future-payments?payment-ui=direct-api. Wenn Sie eine benutzerdefinierte Nutzeroberfläche für Zahlungen erstellen möchten, verwenden Sie die [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) oder die [Setup Intents API](https://docs.stripe.com/api/setup_intents.md), um Details zur Klarna-Zahlungsmethode zu speichern und eine spätere Zahlung Ihrer Kunden zu akzeptieren. ## Stripe einrichten [Serverseitig] [Clientseitig] 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' ``` ## Kund/innen vor Einrichtung erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Klarna für künftige Zahlungen zu hinterlegen, müssen Sie diese den gewünschten *Kund/innen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kund/innen ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung eines/einer Kund/in verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kund/innen noch kein Konto erstellt haben, 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 "<>:" ``` ## PaymentIntent oder SetupIntent erstellen [Serverseitig] Wählen Sie unten das Szenario aus, das am besten zu Ihrem Anwendungsfall passt. #### Abonnement mit erster Zahlung Wenn Sie ein Abonnement einrichten und die erste Zahlung in Rechnung stellen, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnierte und nicht abonnierte Produkte Wenn Sie ein einmaliges Produkt abrechnen und gleichzeitig ein Abonnement einrichten möchten, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=100000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=One-off product" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][1][product_name]=Annual subscription" \ -d "amount_details[line_items][1][unit_cost]=5000" \ -d "amount_details[line_items][1][quantity]=1" \ -d "amount_details[line_items][1][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnement mit Testzeitraum Wenn Sie ein Abonnement mit Testzeitraum einrichten möchten, verwenden Sie die Setup Intents API. Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Sie Daten für ein Jahresabonnement übergeben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=10000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Der resultierende SetupIntent enthält ein [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### On-Demand-Zahlungen Für einen *On-Demand* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app)-Anwendungsfall können Sie entweder die Payment Intents API oder die Setup Intents API verwenden. Wenn Sie eine Zahlung verarbeiten und gleichzeitig die Zahlungsmethode speichern möchten, verwenden Sie die Payment Intents API. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Your product name" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" ``` Wenn Sie die Zahlungsmethode nur für die spätere Verwendung speichern müssen und keine Zahlung verarbeiten, verwenden Sie die Setup Intents API. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d usage=on_session ``` ## Kund/innen weiterleiten [Clientseitig] Wenn Kundinnen/Kunden versuchen, ihr Klarna-Konto für zukünftige Zahlungen einzurichten, verwenden Sie [Stripe.js](https://docs.stripe.com/js.md) zur Bestätigung des PaymentIntent oder SetupIntent. Stripe.js ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Es verarbeitet automatisch Szenarien wie die nachfolgend beschriebene Weiterleitung und ermöglicht die Erweiterung Ihrer Integration durch zusätzliche Zahlungsmethoden in der Zukunft. ### Stripe.js einrichten 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 auf Ihrer Checkout-Seite mit dem folgenden JavaScript eine Instanz von Stripe.js. ```javascript import {loadStripe} from '@stripe/stripe-js'; const stripe = await loadStripe('<>'); ``` Um die Einrichtung auf der Client-Seite zu bestätigen, übergeben Sie das Client-Geheimnis des in Schritt 3 erstellten PaymentIntent- oder SetupIntent-Objekts. Das Client-Geheimnis unterscheidet sich von Ihren API-Schlüsseln, die die Stripe API-Anfragen authentifizieren. Achten Sie auf einen vorsichtigen Umgang mit dem Client-Geheimnis, da mit ihm die Zahlungen abgeschlossen werden können. Es darf nicht protokolliert, in URLs eingebettet oder Personen zugänglich gemacht werden. ### Bestätigen und weiterleiten Stripe.js leitet Ihre Kundinnen/Kunden automatisch zu Klarna weiter, wenn Sie den PaymentIntent oder SetupIntent bestätigen. Nachdem der Kunde/die Kundin den Vorgang abgeschlossen hat, leitet Klarna ihn/sie zurück zur angegebenen `return_url`. #### PaymentIntent Übergeben Sie das `client_secret`, das Sie bei der Erstellung Ihres PaymentIntent in Schritt 3 erhalten haben. Das Client-Geheimnis unterscheidet sich von Ihren API-Schlüsseln, die Anfragen der Stripe-API authentifizieren. Gehen Sie vorsichtig damit um, da Sie damit die Zahlung durchführen können. Es darf nicht protokolliert, in URLs eingebettet oder Personen außer dem jeweiligen Kunden/der jeweiligen Kundin zugänglich gemacht werden. ```javascript // Redirects away from the client const {error} = await stripe.confirmKlarnaPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { email: 'jenny@example.com', address: { country: 'DE' } } }, return_url: 'https://example.com/setup/complete' } ); if (error) { // Inform the customer that there was an error. } ``` #### SetupIntent Übergeben Sie das `client_secret`, das Sie bei der Erstellung Ihres SetupIntent in Schritt 3 erhalten haben. Das Client-Geheimnis unterscheidet sich von Ihren API-Schlüsseln, die Anfragen der Stripe-API authentifizieren. Gehen Sie vorsichtig damit um, da Sie damit die Zahlung durchführen können. Es darf nicht protokolliert, in URLs eingebettet oder Personen außer dem jeweiligen Kunden/der jeweiligen Kundin zugänglich gemacht werden. ```javascript // Redirects away from the client const {error} = await stripe.confirmKlarnaSetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { email: 'jenny@example.com', address: { country: 'DE', }, }, }, 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. } ``` ## 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 der Kunde/die Kundin die Abrechnungsvereinbarung autorisiert hat. Verlassen Sie sich nicht darauf, dass Ihre Kundinnen und Kunden zur Zahlungsstatusseite zurückkehren. Wenn Kundinnen und Kunden die Abrechnungsvereinbarung erfolgreich autorisieren, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) oder [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus und der Intent-Status wechselt zu `succeeded`. Speichern Sie die resultierende [payment_method](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-payment_method)-ID, um Zahlungen später mit der gespeicherten PaymentMethod vorzunehmen. Wenn eine Kundin/ein Kunde die Abrechnungsvereinbarung nicht erfolgreich autorisiert, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed) oder [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus, und der Intent-Status wechselt wieder zu `requires_payment_method`. ## Eine gespeicherte Klarna-Zahlungsmethode belasten [Serverseitig] #### Verlängerung des Abonnements Wenn Sie bereit sind, Ihrem Kunden/Ihrer Kundin eine Off-Session-Gebühr zu berechnen, verwenden Sie die IDs *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), um eine [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `true`, um anzugeben, dass sich Kundinnen/Kunden während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befinden. Dies hat zur Folge, dass der PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. - Geben Sie eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) an, um anzugeben, wohin Stripe den Kunden/die Kundin weiterleiten soll, nachdem er/sie von der Website von Klarna zurückgekehrt ist. Senden Sie Abonnementdetails und Posten bei jeder Verlängerung. Verwenden Sie für Ihr Abonnement die gleiche `reference` wie bei der Einrichtung der Zahlungsmethode. Wenn sich die Abonnementdetails geändert haben, seit Sie die Zahlungsmethode gespeichert haben, senden Sie die neuen Informationen mit der gleichen `reference`. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` #### On-Demand-Zahlung Wenn Sie bereit sind, Ihre Kundinnen/Kunden zu belasten, verwenden Sie die *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)- und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-IDs, um einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `false`, um anzugeben, dass sich der Kunde/die Kundin während dieses Zahlungsversuchs in einem Bezahlvorgang befindet. Wenn ein Fehler auftritt, z. B. wenn eine Authentifizierung erforderlich ist, wird die Kundin/der Kunde zur Authentifizierung oder Behebung des Problems auf die Seite von Klarna weitergeleitet. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. Das folgende Beispiel enthält optionale Details mit [payment_method_options](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options), um die Risikoevaluation und Autorisierungsquoten von Klarna zu verbessern. Dazu gehören Einzelheiten darüber, wie diese gespeicherte Klarna-Zahlungsmethode in Zukunft verwendet werden soll, wie etwa die erwarteten zukünftigen Bestellbeträge und die Häufigkeit von Zahlungen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=false \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=1099" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]={{SUBSCRIPTION_ID}}" \ -d "payment_method_options[klarna][on_demand][average_amount]=1000" \ -d "payment_method_options[klarna][on_demand][minimum_amount]=100" \ -d "payment_method_options[klarna][on_demand][maximum_amount]=10000" \ -d "payment_method_options[klarna][on_demand][interval]=year" \ -d "payment_method_options[klarna][on_demand][interval_count]=1" ``` ## Umgang mit dem Widerruf wiederverwendbarer Zahlungsmethoden [Serverseitig] Sie können eine wiederverwendbare Zahlungsmethode auf zwei Arten widerrufen: - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode in der mobilen Anwendung von Klarna deaktivieren. In diesem Fall sendet Stripe Ihnen ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis. Zur Verarbeitung abonnieren Sie die [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse und rufen [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) auf, um sie zu deaktivieren. - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode auch auf Ihrer Nutzeroberfläche deaktivieren, sofern dies unterstützt wird. In diesem Szenario kann Ihr Server [PaymentMethod trennen](https://docs.stripe.com/api/payment_methods/detach.md) aufrufen, um die Deaktivierung zu verarbeiten. In beiden Fällen sendet Stripe, nachdem Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) aufgerufen haben, ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. ## Integration testen Beim Testen Ihrer Integration in einer Testumgebung können Sie verschiedene Ergebnisse innerhalb der Weiterleitung von Klarna simulieren. > Klarna verwendet Cookies zur Sitzungsverfolgung. Um verschiedene Standorte von Kundinnen und Kunden zu testen, melden Sie sich bitte aus der Klarna-Sandbox der vorherigen Sitzung ab und verwenden Sie die entsprechenden Auslöser. Nachfolgend haben wir speziell ausgewählte Testdaten für die derzeit unterstützten Kundenländer zusammengestellt. In einer Sandbox nutzt Klarna die angegebene E-Mail-Adresse, um eine Transaktion zu genehmigen oder abzulehnen. #### Australien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 03.05.1994 | | Vorname | Test | John | | Nachname | Person-au | schnee | | Straße | Wharf St | Silverwater Rd | | Hausnummer | 4 | 1 bis 5 | | Postleitzahl | 4877 | 2128 | | Stadt | Port Douglas | Silverwater | | Region | QLD | NSW | | Telefon | +61473752244 | +61473763254 | | E-Mail-Adresse | customer@email.au | customer+denied@email.au | #### Österreich | | Genehmigt | Abgelehnt | | -------------- | ------------------ | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-at | Person-at | | E-Mail-Adresse | customer@email.at | customer+denied@email.at | | Straße | Mariahilfer Straße | Mariahilfer Straße | | Hausnummer | 47 | 47 | | Ort | Wien | Wien | | Postleitzahl | 1060 | 1060 | | Telefon | +4306762600456 | +4306762600745 | #### Belgien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-be | Person-be | | E-Mail-Adresse | customer@email.be | customer+denied@email.be | | Straße | Grote Markt | Grote Markt | | Hausnummer | 1 | 1 | | Ort | Belgien | Belgien | | Postleitzahl | 1000 | 1000 | | Telefon | +32485121291 | +32485212123 | #### Kanada | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-ca | Person-ca | | Straße | 2693 Byron Rd | 2693 Byron Rd | | Postleitzahl | V7H 1L9 | V7H 1L9 | | Stadt | Nord-Vancouver | Nord-Vancouver | | Region | BC | BC | | Telefon | +15197438620 | +15197308624 | | E-Mail-Adresse | customer@email.ca | customer+denied@email.ca | #### Tschechien | | Genehmigt | Abgelehnt | | ------------ | ------------------ | ------------------------ | | Geburtsdatum | 01.01.1970 | 27.06.1992 | | Vorname | Test | Test | | Nachname | Person-cz | Person-cz | | E-Mail | customer@email.cz | customer+denied@email.cz | | Straße | Zazvorkova 1480/11 | Zázvorkova 1480/11 | | Postleitzahl | 155 00 | 155 00 | | Stadt | Prag | PRAHA 13 | | Telefon | +420771613715 | +420771623691 | #### Dänemark | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1980 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-dk | Person-dk | | E-Mail-Adresse | customer@email.dk | customer+denied@email.dk | | Straße | Dantes Plads | Nygårdsvej | | Hausnummer | 7 | 65 | | Ort | København Ø | København Ø | | Postleitzahl | 1556 | 2100 | | Telefon | +4542555628 | +4552555348 | #### Finnland | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1999 | 01.01.1999 | | Vorname | Test | Person FI | | Nachname | Person-fi | Test | | E-Mail-Adresse | customer@email.fi | customer+denied@email.fi | | Straße | Mannerheimintie | Mannerheimintie | | Hausnummer | 34 | 34 | | Ort | Helsinki | Helsinki | | Postleitzahl | 00100 | 00100 | | Telefon | +358401234567 | +358401234568 | #### Frankreich | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10.07.1990 | 10.07.1990 | | Geburtsort | Paris | Paris | | Vorname | Test | Test | | Nachname | Person-fr | Person-fr | | E-Mail-Adresse | customer@email.fr | customer+denied@email.fr | | Straße | Rue La Fayette | Rue La Fayette | | Hausnummer | 33 | 33 | | Ort | Paris | Paris | | Postleitzahl | 75009 | 75009 | | Telefon | +33689854321 | +33687984322 | #### Deutschland | | Genehmigt | Abgelehnt | | -------------- | --------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Mock | Test | | Nachname | Mock | Person-de | | E-Mail-Adresse | customer@email.de | customer+denied@email.de | | Straße | Neue Schönhauser Str. | Neue Schönhauser Str. | | Hausnummer | 2 | 2 | | Ort | Berlin | Berlin | | Postleitzahl | 10178 | 10178 | | Telefon | +49017614284340 | +49017610927312 | #### Griechenland | | Genehmigt | Abgelehnt | | ------------ | ----------------- | ------------------------ | | Steuernummer | 090000045 | 090000045 | | Geburtsdatum | 01.01.1960 | 11.11.1970 | | Vorname | Test | Test | | Nachname | Person-gr | Test-gr | | E-Mail | customer@email.gr | customer+denied@email.gr | | Straße | Kifisia | Baralo | | Hausnummer | 37 | 56 | | Postleitzahl | 151 23 | 123 67 | | Stadt | Athen | Athen | | Telefon | +306945553624 | +306945553625 | #### Irland | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-ie | Person-ie | | E-Mail-Adresse | customer@email.ie | customer+denied@email.ie | | Straße | King Street South | King Street South | | Hausnummer | 30 | 30 | | Ort | Dublin | Dublin | | EIR-Code | D02 C838 | D02 C838 | | Telefon | +353855351400 | +353855351401 | #### Italien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1980 | 01.01.1980 | | Vorname | Test | Test | | Nachname | Person-it | Person-it | | E-Mail-Adresse | customer@email.it | customer+denied@email.it | | Steuernummer | RSSBNC80A41H501B | RSSBNC80A41H501B | | Straße | Via Enrico Fermi | Via Enrico Fermi | | Hausnummer | 150 | 150 | | Ort | Rom | Rom | | Postleitzahl | 00146 | 00146 | | Telefon | +393339741231 | +393312232389 | #### Niederlande | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-nl | Person-nl | | E-Mail-Adresse | customer@email.nl | customer+denied@email.nl | | Straße | Osdorpplein | Osdorpplein | | Hausnummer | 137 | 137 | | Ort | Amsterdam | Amsterdam | | Postleitzahl | 1068 SR | 1068 SR | | Telefon | +31689124321 | +31632167678 | #### Neuseeland | | Genehmigt | Abgelehnt | | -------------- | ------------------------ | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-nz | Person-nz | | Straße | Mount Wellington Highway | Mount Wellington Highway | | Hausnummer | 286 | 286 | | Postleitzahl | 6011 | 6011 | | Stadt | Auckland | Wellington | | Telefon | +6427555290 | +642993007712 | | E-Mail-Adresse | customer@email.nz | customer+denied@email.nz | #### Norwegen | | Genehmigt | Abgelehnt | | ------------------ | ------------------- | ------------------------ | | Geburtsdatum | 01.08.1970 | 01.08.1970 | | Vorname | Jane | Test | | Nachname | Test | Person-no | | E-Mail-Adresse | customer@email.no | customer+denied@email.no | | Persönliche Nummer | NO1087000571 | NO1087000148 | | Straße | Edvard Munchs Plass | Sæffleberggate | | Hausnummer | 1 | 56 | | Ort | Oslo | Oslo | | Postleitzahl | 0194 | 0563 | | Telefon | +4740123456 | +4740123457 | #### Polen | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 05.05.1967 | 05.05.1967 | | Vorname | Test | Test | | Nachname | Person-pl | Person-pl | | Straße | Ul. Górczewska | Ul. Górczewska | | Hausnummer | 124 | 124 | | Postleitzahl | 01-460 | 01-460 | | Stadt | Warschau | Warschau | | Telefon | +48795222223 | +48795223325 | | E-Mail-Adresse | customer@email.pl | customer+denied@email.pl | #### Portugal | | Genehmigt | Abgelehnt | | -------------- | ------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-pt | Person-pt | | Straße | Avenida Dom João II | Avenida Dom João II | | Hausnummer | 40 | 40 | | Postleitzahl | 1990-094 | 1990-094 | | Stadt | Lissabon | Lissabon | | Telefon | +351935556731 | +351915593837 | | E-Mail-Adresse | customer@email.pt | customer+denied@email.pt | #### Rumänien | | Genehmigt | Abgelehnt | | --------------------------------------- | ----------------- | ------------------------ | | Geburtsdatum | 25.12.1970 | 25.12.1970 | | Vorname | Test | Test | | Nachname | Person-ro | Person-ro | | E-Mail | customer@email.ro | customer+denied@email.ro | | Straße | Drumul Taberei | Drumul Taberei | | Hausnummer | 35 | 35 | | Stadt | București | București | | Sector | Sectorul 6 | Sectorul 6 | | Postleitzahl | 061357 | 061357 | | Telefon | +40741209876 | +40707127444 | | Persönliche Identifikationsnummer (CNP) | 1701225193558 | | #### Spanien | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | DNI/NIE | 99999999R | 99999999R | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-es | Person-es | | E-Mail-Adresse | customer@email.es | customer+denied@email.es | | Straße | C. de Atocha | C. de Atocha | | Hausnummer | 27 | 27 | | Ort | Madrid | Madrid | | Postleitzahl | 28012 | 28012 | | Telefon | +34672563009 | +34682425101 | #### Schweden | | Genehmigt | Abgelehnt | | -------------- | ----------------------- | ------------------------ | | Geburtsdatum | 21.03.1941 | 28.10.1941 | | Vorname | Alice | Test | | Nachname | Test | Person-se | | E-Mail-Adresse | customer@email.se | customer+denied@email.se | | Straße | Södra Blasieholmshamnen | Karlaplan | | Hausnummer | 2 | 3 | | Ort | Stockholm | Stockholm | | Postleitzahl | 11 148 | 11 460 | | Telefon | +46701740615 | +46701740620 | #### Schweiz | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 01.01.1990 | 01.01.2000 | | Vorname | Akzeptiert | Kund/in | | Nachname | Person-ch | Person-ch | | Straße | Augustinergasse | Bahnhofstrasse | | Hausnummer | 2 | 77 | | Postleitzahl | 4051 | 8001 | | Stadt | Basel | Zürich | | Telefon | +41758680000 | +41758680001 | | E-Mail-Adresse | customer@email.ch | customer+denied@email.ch | #### Großbritannien | | Genehmigt | Abgelehnt | | -------------- | --------------------- | ------------------------ | | Geburtsdatum | 10-07-1970 | 10-07-1970 | | Vorname | Test | Test | | Nachname | Person-uk | Person-uk | | E-Mail-Adresse | customer@email.uk | customer+denied@email.uk | | Straße | New Burlington Street | New Burlington Street | | Hausnummer | 10 | 10 | | Apartment | Apt 214 | Apt 214 | | Postleitzahl | W1S 3BE | W1S 3BE | | Ort | London | London | | Telefon | +447755564318 | +447355505530 | #### Vereinigte Staaten | | Genehmigt | Abgelehnt | | -------------- | ----------------- | ------------------------ | | Geburtsdatum | 07.10.1970 | 07.10.1970 | | Vorname | Test | Test | | Nachname | Person-us | Person-us | | E-Mail-Adresse | customer@email.us | customer+denied@email.us | | Straße | Amsterdam Ave | Amsterdam Ave | | Hausnummer | 509 | 509 | | Ort | New York | New York | | Bundesstaat | New York | New York | | Postleitzahl | 10024-3941 | 10024-3941 | | Telefon | +13106683312 | +13106354386 | ### Zwei-Schritte-Authentifizierung Jede 6-stellige Zahl ist ein gültiger Code für die Zwei-Schritte-Authentifizierung. Verwenden Sie `999999`, damit die Authentifizierung fehlschlägt. ### Rückzahlungmethode Innerhalb des Klarna-Ablaufs können Sie die folgenden Testwerte verwenden, um verschiedene Rückzahlungsarten auszuprobieren: | Typ | Wert | | -------------------- | -------------------------------------------------------------------------------------------------------------- | | Lastschriftverfahren | DE11520513735120710131 | | Banküberweisung | Demo-Bank | | Kreditkarte | - Nummer: 4111 1111 1111 1111 - Prüfziffer: 123 - Gültig bis: ein beliebiges gültiges Datum in der Zukunft | | Debitkarte | - Nummer: 4012 8888 8888 1881 - Prüfziffer: 123 - Gültig bis: ein beliebiges gültiges Datum in der Zukunft | ## Optional: Klarna-Weiterleitung manuell handhaben [Serverseitig] Wir empfehlen, Stripe.js zu verwenden, um Klarna-Weiterleitungen und Abrechnungsautorisierungen auf dem Client zu verarbeiten. Wenn Sie das native SDK verwenden, können Sie Ihre Integration um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen/Kunden jedoch mit den folgenden Schritten manuell an Ihren Server weiterleiten. *Bestätigen* (Confirming an intent indicates that the customer intends to use the current or provided payment method. Upon confirmation, the intent attempts to initiate the portions of the flow that have real-world side effects) Sie den PaymentIntent oder SetupIntent zur Erstellungszeit, indem Sie `confirm: true` einfügen. Geben Sie eine `return_url` an, um anzugeben, wohin Stripe den/die Nutzer/in weiterleiten soll, nachdem er/sie die Einrichtung auf der Website von Klarna oder in der mobilen Anwendung abgeschlossen hat. Der Intent-Status ist `requires_action` und der `next_action`-Typ ist `redirect_to_url`. ```json { "id": "seti_1IQ9hjJJahOk1vSNevPWnhEN", "object": "setup_intent","status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/setup/complete" } }, "application": null, "cancellation_reason": null, "client_secret": "seti_1IQ9hjJJahOk1vSNevPWnhEN_secret_J2EAlI0GQbQKV9tg7ITRcUWRBiAwvUV", "created": 1614597263, "customer": null, "description": null, "last_setup_error": null, "latest_attempt": "setatt_1IQ9hkJJahOk1vSN0rsCpnLI", "livemode": false, "mandate": null, "metadata": {}, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1IQ9hjJJahOk1vSNDc5lQWia", "payment_method_options": {}, "payment_method_types": ["klarna"], "single_use_mandate": null, "usage": "off_session" } ``` Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft `next_action.redirect_to_url.url` angegebene URL weiter. ## Optional: Aktualisieren Sie eine gespeicherte Zahlungsmethode [Serverseitig] Kundinnen/Kunden werden erneut durch den Zahlungsablauf von Klarna geführt, wenn sie ihr Abo aktualisieren. Dadurch stellt Klarna sicher, dass die Abonnementinformationen möglichst genau sind und die Autorisierungsraten werden optimiert. #### Upgrade durchführen und Zahlungsverlängerung Erstellen Sie ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) mit derselben Struktur wie bei der Belastung einer gespeicherten Zahlungsmethode und fügen Sie `setup_future_usage` hinzu, um anzugeben, dass Sie die bestehende Zahlungsmethode aktualisieren möchten. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim ersten Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d setup_future_usage=off_session \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=10000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Das resultierende PaymentIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, [wie Sie die Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md?web-or-mobile=web&payment-ui=elements#web-redirect-customer). #### Upgrade durchführen und später bezahlen Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/payment_intents.md) und übergeben Sie die bereits gespeicherte Zahlungsmethode. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim erstmaligen Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=20000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Das resultierende SetupIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, wie Sie die [Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md?web-or-mobile=web&payment-ui=elements#web-redirect-customer). ## Optional: Ein gespeichertes Klarna Konto entfernen [Serverseitig] Mit der [Detach](https://docs.stripe.com/api/payment_methods/detach.md) API können Sie das gespeicherte Klarna-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Entfernen Sie ein Klarna-Konto, wenn Sie wissen, dass es nicht mehr verwendet wird, z. B. wenn der Kunde/die Kundin sein/ihr Abonnement kündigt. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ``` # iOS > This is a iOS for when payment-ui is mobile and platform is ios. View the full page at https://docs.stripe.com/payments/klarna/set-up-future-payments?payment-ui=mobile&platform=ios. Verwenden Sie die [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) oder die [Setup Intents API](https://docs.stripe.com/api/setup_intents.md), um Angaben zur Klarna-Zahlungsmethode zu speichern. ## Stripe einrichten [Serverseitig] [Clientseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). ### Serverseitig Diese Integration erfordert Endpoints auf Ihrem Server, die mit der Stripe-API kommunizieren können. Nutzen Sie die offiziellen Bibliotheken für den Zugriff auf die Stripe-API von Ihrem Server aus: #### 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' ``` ### Clientseitig Das [Stripe iOS SDK](https://github.com/stripe/stripe-ios) ist Open Source, [vollständig dokumentiert](https://stripe.dev/stripe-ios/index.html) und kompatibel mit Apps, die iOS 13 oder höher unterstützen. #### Swift Package Manager Führen Sie zur Installation des SDK die folgenden Schritte aus: 1. Wählen Sie in Xcode **Datei** > **Add Package Dependencies** (Paketabhängigkeiten hinzufügen) aus und geben Sie als Repository-URL `https://github.com/stripe/stripe-ios-spm` ein. 1. Wählen auf unserer [Veröffentlichungsseite](https://github.com/stripe/stripe-ios/releases) die neueste Version aus. 1. Fügen Sie das Produkt **StripePaymentsUI** zum [Ziel Ihrer App](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app) hinzu. #### CocoaPods 1. Falls noch nicht geschehen, installieren Sie bitte die aktuellste Version von [CocoaPods](https://guides.cocoapods.org/using/getting-started.html). 1. Wenn Sie keine bestehende [Podfile](https://guides.cocoapods.org/syntax/podfile.html) haben, führen Sie folgenden Befehl aus, um eine zu erstellen: ```bash pod init ``` 1. Fügen Sie folgende Zeile in Ihre `Podfile` ein: ```podfile pod 'StripePaymentsUI' ``` 1. Führen Sie folgenden Befehl aus: ```bash pod install ``` 1. Vergessen Sie nicht, ab jetzt in Zukunft anstelle der Datei `.xcodeproj` die Datei `.xcworkspace` zum Öffnen Ihres Projekts in Xcode zu verwenden. 1. Führen Sie für zukünftige Updates auf die jeweils aktuelle Version des SDK Folgendes aus: ```bash pod update StripePaymentsUI ``` #### Carthage 1. Falls noch nicht geschehen, installieren Sie bitte die aktuelle Version von [Carthage](https://github.com/Carthage/Carthage#installing-carthage). 1. Fügen Sie folgende Zeile in Ihre `Cartfile` ein: ```cartfile github "stripe/stripe-ios" ``` 1. Befolgen Sie die [Carthage-Installationsanweisungen](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos). Vergewissern Sie sich, dass Sie alle [hier](https://github.com/stripe/stripe-ios/tree/master/StripePaymentsUI/README.md#manual-linking) aufgeführten erforderlichen Frameworks einbetten. 1. Führen Sie für zukünftige Updates auf die aktuelle Version unseres SDK einfach folgenden Befehl aus: ```bash carthage update stripe-ios --platform ios ``` #### Manuelles Framework 1. Gehen Sie auf unsere [GitHub-Release-Seite](https://github.com/stripe/stripe-ios/releases/latest), laden Sie **Stripe.xcframework.zip** herunter und entpacken Sie die Datei. 1. Ziehen Sie **StripePaymentsUI.xcframework** in den Abschnitt **Embedded Binaries** (Eingebettete Binärdateien) der Einstellungen unter **General** (Allgemeines) Ihres Xcode-Projekts. Aktivieren Sie dabei die Option **Copy items if needed** (Elemente kopieren, falls nötig). 1. Wiederholen Sie Schritt 2 für alle [hier](https://github.com/stripe/stripe-ios/tree/master/StripePaymentsUI/README.md#manual-linking) aufgeführten erforderlichen Frameworks. 1. Wiederholen Sie für zukünftige Updates auf die jeweils aktuelle Version des SDK die Schritte 1–3. > Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite [Releases](https://github.com/stripe/stripe-ios/releases) auf GitHub. Um bei Veröffentlichung einer neuen Version eine Benachrichtigung zu erhalten, [achten Sie auf die Releases zum jeweiligen Repository](https://help.github.com/en/articles/watching-and-unwatching-releases-for-a-repository#watching-releases-for-a-repository). Konfigurieren Sie das SDK mit Ihrem [veröffentlichbaren Schlüssel](https://dashboard.stripe.com/test/apikeys) von Stripe, um es beim Start der App auszuführen. Dadurch kann Ihre App Anfragen an die Stripe-API senden. #### Swift ```swift import UIKitimportStripePaymentsUI @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {StripeAPI.defaultPublishableKey = "<>" // do any other necessary launch configuration return true } } ``` > Verwenden Sie Ihre [Testschlüssel](https://docs.stripe.com/keys.md#obtain-api-keys) beim Testen und Entwickeln Ihrer App und Ihre [Live-Modus](https://docs.stripe.com/keys.md#test-live-modes)-Schlüssel beim Veröffentlichen Ihrer App. ## Kundinnen/Kunden erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Klarna für künftige Zahlungen zu hinterlegen, müssen Sie diese den gewünschten *Kund/innen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kund/innen ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung eines/einer Kund/in verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kund/innen noch kein Konto erstellt haben, 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 "<>:" ``` ## PaymentIntent oder SetupIntent erstellen [Serverseitig] Wählen Sie unten das Szenario aus, das am besten zu Ihrem Anwendungsfall passt. #### Abonnement mit erster Zahlung Wenn Sie ein Abonnement einrichten und die erste Zahlung in Rechnung stellen, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnierte und nicht abonnierte Produkte Wenn Sie ein einmaliges Produkt abrechnen und gleichzeitig ein Abonnement einrichten möchten, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=100000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=One-off product" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][1][product_name]=Annual subscription" \ -d "amount_details[line_items][1][unit_cost]=5000" \ -d "amount_details[line_items][1][quantity]=1" \ -d "amount_details[line_items][1][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnement mit Testzeitraum Wenn Sie ein Abonnement mit Testzeitraum einrichten möchten, verwenden Sie die Setup Intents API. Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Sie Daten für ein Jahresabonnement übergeben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=10000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Der resultierende SetupIntent enthält ein [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### On-Demand-Zahlungen Für einen *On-Demand* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app)-Anwendungsfall können Sie entweder die Payment Intents API oder die Setup Intents API verwenden. Wenn Sie eine Zahlung verarbeiten und gleichzeitig die Zahlungsmethode speichern möchten, verwenden Sie die Payment Intents API. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Your product name" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" ``` Wenn Sie die Zahlungsmethode nur für die spätere Verwendung speichern müssen und keine Zahlung verarbeiten, verwenden Sie die Setup Intents API. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d usage=on_session ``` ## Angaben zur Zahlungsmethode erfassen [Clientseitig] #### Swift ```swift // Klarna doesn't require additional parameters so we only need to pass the initialized // STPPaymentMethodKlarnaParams instance to STPPaymentMethodParams let klarnaParams = STPPaymentMethodKlarnaParams() let paymentMethodParams = STPPaymentMethodParams(klarna: klarnaParams, billingDetails: nil, metadata: nil) ``` ## Zahlung an Stripe senden [Clientseitig] Rufen Sie das Client-Geheimnis von dem erstellten Intent ab und rufen Sie [confirmPaymentIntent](https://stripe.dev/stripe-ios/stripepayments/documentation/stripepayments/stppaymenthandler/confirmpayment\(_:with:completion:\)) oder [confirmSetupIntent](https://stripe.dev/stripe-ios/stripepayments/documentation/stripepayments/stppaymenthandler/confirmsetupintent\(_:with:completion:\)) auf. Dies entspricht einer Webansicht, in der die Kundinnen/Kunden die Zahlung über Klarna durchführen können. Danach wird der Completion-Block mit dem Ergebnis der Zahlung aufgerufen. #### PaymentIntent #### Swift ```swift let paymentIntentParams = STPPaymentIntentParams(clientSecret: paymentIntentClientSecret) paymentIntentParams.paymentMethodParams = paymentMethodParams paymentIntentParams.returnURL = "payments-example://stripe-redirect" STPPaymentHandler.shared().confirmPayment(withParams: paymentIntentParams, authenticationContext: self) { (handlerStatus, paymentIntent, error) in switch handlerStatus { case .succeeded: // Payment succeeded case .canceled: // Payment was canceled case .failed: // Payment failed @unknown default: fatalError() } } ``` #### SetupIntent #### Swift ```swift let setupIntentParams = STPSetupIntentConfirmParams(clientSecret: setupIntentClientSecret) setupIntentParams.paymentMethodParams = paymentMethodParams setupIntentParams.returnURL = "payments-example://stripe-redirect" STPPaymentHandler.shared().confirmSetupIntent(withParams: setupIntentParams, authenticationContext: self) { (handlerStatus, setupIntent, error) in switch handlerStatus { case .succeeded: // Setup succeeded case .canceled: // Setup was canceled case .failed: // Setup failed @unknown default: fatalError() } } ``` ## 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 der Kunde/die Kundin die Abrechnungsvereinbarung autorisiert hat. Verlassen Sie sich nicht darauf, dass Ihre Kundinnen und Kunden zur Zahlungsstatusseite zurückkehren. Wenn Kundinnen und Kunden die Abrechnungsvereinbarung erfolgreich autorisieren, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) oder [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus und der Intent-Status wechselt zu `succeeded`. Speichern Sie die resultierende [payment_method](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-payment_method)-ID, um Zahlungen später mit der gespeicherten PaymentMethod vorzunehmen. Wenn eine Kundin/ein Kunde die Abrechnungsvereinbarung nicht erfolgreich autorisiert, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed) oder [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus, und der Intent-Status wechselt wieder zu `requires_payment_method`. ## Eine gespeicherte Klarna-Zahlungsmethode belasten [Serverseitig] #### Verlängerung des Abonnements Wenn Sie bereit sind, Ihrem Kunden/Ihrer Kundin eine Off-Session-Gebühr zu berechnen, verwenden Sie die IDs *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), um eine [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `true`, um anzugeben, dass sich Kundinnen/Kunden während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befinden. Dies hat zur Folge, dass der PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. - Geben Sie eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) an, um anzugeben, wohin Stripe den Kunden/die Kundin weiterleiten soll, nachdem er/sie von der Website von Klarna zurückgekehrt ist. Senden Sie Abonnementdetails und Posten bei jeder Verlängerung. Verwenden Sie für Ihr Abonnement die gleiche `reference` wie bei der Einrichtung der Zahlungsmethode. Wenn sich die Abonnementdetails geändert haben, seit Sie die Zahlungsmethode gespeichert haben, senden Sie die neuen Informationen mit der gleichen `reference`. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` #### On-Demand-Zahlung Wenn Sie bereit sind, Ihre Kundinnen/Kunden zu belasten, verwenden Sie die *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)- und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-IDs, um einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `false`, um anzugeben, dass sich der Kunde/die Kundin während dieses Zahlungsversuchs in einem Bezahlvorgang befindet. Wenn ein Fehler auftritt, z. B. wenn eine Authentifizierung erforderlich ist, wird die Kundin/der Kunde zur Authentifizierung oder Behebung des Problems auf die Seite von Klarna weitergeleitet. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. Das folgende Beispiel enthält optionale Details mit [payment_method_options](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options), um die Risikoevaluation und Autorisierungsquoten von Klarna zu verbessern. Dazu gehören Einzelheiten darüber, wie diese gespeicherte Klarna-Zahlungsmethode in Zukunft verwendet werden soll, wie etwa die erwarteten zukünftigen Bestellbeträge und die Häufigkeit von Zahlungen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=false \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=1099" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]={{SUBSCRIPTION_ID}}" \ -d "payment_method_options[klarna][on_demand][average_amount]=1000" \ -d "payment_method_options[klarna][on_demand][minimum_amount]=100" \ -d "payment_method_options[klarna][on_demand][maximum_amount]=10000" \ -d "payment_method_options[klarna][on_demand][interval]=year" \ -d "payment_method_options[klarna][on_demand][interval_count]=1" ``` ## Umgang mit dem Widerruf wiederverwendbarer Zahlungsmethoden [Serverseitig] Sie können eine wiederverwendbare Zahlungsmethode auf zwei Arten widerrufen: - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode in der mobilen Anwendung von Klarna deaktivieren. In diesem Fall sendet Stripe Ihnen ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis. Zur Verarbeitung abonnieren Sie die [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse und rufen [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) auf, um sie zu deaktivieren. - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode auch auf Ihrer Nutzeroberfläche deaktivieren, sofern dies unterstützt wird. In diesem Szenario kann Ihr Server [PaymentMethod trennen](https://docs.stripe.com/api/payment_methods/detach.md) aufrufen, um die Deaktivierung zu verarbeiten. In beiden Fällen sendet Stripe, nachdem Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) aufgerufen haben, ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. ## Optional: Klarna-Weiterleitung manuell handhaben [Serverseitig] Wir empfehlen, das iOS SDK zu verwenden, um Klarna-Weiterleitungen und Abrechnungsautorisierungen auf dem Client zu verarbeiten. Wenn Sie das native SDK verwenden, können Sie Ihre Integration um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen/Kunden jedoch mit den folgenden Schritten manuell an Ihren Server weiterleiten. *Bestätigen* (Confirming an intent indicates that the customer intends to use the current or provided payment method. Upon confirmation, the intent attempts to initiate the portions of the flow that have real-world side effects) Sie den PaymentIntent oder SetupIntent zur Erstellungszeit, indem Sie `confirm: true` einfügen. Geben Sie eine `return_url` an, um anzugeben, wohin Stripe den/die Nutzer/in weiterleiten soll, nachdem er/sie die Einrichtung auf der Website von Klarna oder in der mobilen Anwendung abgeschlossen hat. Nach der Erstellung ist der Intent-Status `requires_action` und der `next_action`-Typ ist `redirect_to_url`. ```json { "id": "seti_1IQ9hjJJahOk1vSNevPWnhEN", "object": "setup_intent","status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/setup/complete" } }, "application": null, "cancellation_reason": null, "client_secret": "seti_1IQ9hjJJahOk1vSNevPWnhEN_secret_J2EAlI0GQbQKV9tg7ITRcUWRBiAwvUV", "created": 1614597263, "customer": null, "description": null, "last_setup_error": null, "latest_attempt": "setatt_1IQ9hkJJahOk1vSN0rsCpnLI", "livemode": false, "mandate": null, "metadata": {}, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1IQ9hjJJahOk1vSNDc5lQWia", "payment_method_options": {}, "payment_method_types": ["klarna"], "single_use_mandate": null, "usage": "off_session" } ``` Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft `next_action.redirect_to_url.url` angegebene URL weiter. ## Optional: Aktualisieren Sie eine gespeicherte Zahlungsmethode [Serverseitig] Führen Sie Kundinnen/Kunden erneut durch den Zahlungsablauf von Klarna, wenn sie ihr Abo aktualisieren. Dadurch stellt Klarna sicher, dass die Abonnementinformationen möglichst genau sind und die Autorisierungsraten werden optimiert. #### Upgrade durchführen und Zahlungsverlängerung Erstellen Sie ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) mit derselben Struktur wie bei der Belastung einer gespeicherten Zahlungsmethode und fügen Sie `setup_future_usage` hinzu, um anzugeben, dass Sie die bestehende Zahlungsmethode aktualisieren möchten. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim ersten Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d setup_future_usage=off_session \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=10000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Das resultierende PaymentIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, [wie Sie die Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#ios-submit-payment). #### Upgrade durchführen und später bezahlen Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/payment_intents.md) und übergeben Sie die bereits gespeicherte Zahlungsmethode. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim erstmaligen Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=20000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Das resultierende SetupIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, wie Sie die [Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#ios-submit-payment). ## Optional: Ein gespeichertes Klarna Konto entfernen [Serverseitig] Mit der [Detach](https://docs.stripe.com/api/payment_methods/detach.md) API können Sie das gespeicherte Klarna-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Entfernen Sie ein Klarna-Konto, wenn Sie wissen, dass es nicht mehr verwendet wird, z. B. wenn der Kunde/die Kundin sein/ihr Abonnement kündigt. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ``` # Android > This is a Android for when payment-ui is mobile and platform is android. View the full page at https://docs.stripe.com/payments/klarna/set-up-future-payments?payment-ui=mobile&platform=android. Verwenden Sie die [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) oder die [Setup Intents API](https://docs.stripe.com/api/setup_intents.md), um Angaben zur Klarna-Zahlungsmethode zu speichern. ## Stripe einrichten [Serverseitig] [Clientseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). ### Serverseitig Diese Integration erfordert Endpoints auf Ihrem Server, die mit der Stripe-API kommunizieren können. Nutzen Sie diese offiziellen Bibliotheken für den Zugriff auf die Stripe-API von Ihrem Server aus: #### 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' ``` ### Clientseitig Das [Stripe Android SDK](https://github.com/stripe/stripe-android) ist Open Source und [vollständig dokumentiert](https://stripe.dev/stripe-android/). Um das SDK zu installieren, fügen Sie `stripe-android` in den Block `dependencies` Ihrer [app/build.gradle](https://developer.android.com/studio/build/dependencies)-Datei ein: #### Kotlin ```kotlin plugins { id("com.android.application") } android { ... } dependencies { // ... // Stripe Android SDK implementation("com.stripe:stripe-android:23.8.0") // Include the financial connections SDK to support US bank account as a payment method implementation("com.stripe:financial-connections:23.8.0") } ``` > Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite [Releases](https://github.com/stripe/stripe-android/releases) auf GitHub. Um bei Veröffentlichung eines neuen Release eine Benachrichtigung zu erhalten, [beobachten Sie Veröffentlichungen für das jeweilige Repository](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository). Konfigurieren Sie das SDK mit Ihrem [veröffentlichbaren Schlüssel](https://dashboard.stripe.com/apikeys) von Stripe so, dass dieser Anfragen an die API stellen kann, wie beispielsweise in Ihrer Unterklasse `Application`: #### Kotlin ```kotlin import com.stripe.android.PaymentConfiguration class MyApp : Application() { override fun onCreate() { super.onCreate() PaymentConfiguration.init( applicationContext, "<>" ) } } ``` > Verwenden Sie Ihre [Testschlüssel](https://docs.stripe.com/keys.md#obtain-api-keys) beim Testen und Entwickeln Ihrer App und Ihre [Live-Modus](https://docs.stripe.com/keys.md#test-live-modes)-Schlüssel beim Veröffentlichen Ihrer App. Stripe-Beispiele nutzen auch [OkHttp](https://github.com/square/okhttp) und [GSON](https://github.com/google/gson), um HTTP-Anfragen an einen Server zu stellen. ## Kundinnen/Kunden erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Klarna für künftige Zahlungen zu hinterlegen, müssen Sie diese den gewünschten *Kund/innen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kund/innen ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung eines/einer Kund/in verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kund/innen noch kein Konto erstellt haben, 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 "<>:" ``` ## PaymentIntent oder SetupIntent erstellen [Serverseitig] Wählen Sie unten das Szenario aus, das am besten zu Ihrem Anwendungsfall passt. #### Abonnement mit erster Zahlung Wenn Sie ein Abonnement einrichten und die erste Zahlung in Rechnung stellen, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnierte und nicht abonnierte Produkte Wenn Sie ein einmaliges Produkt abrechnen und gleichzeitig ein Abonnement einrichten möchten, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=100000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=One-off product" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][1][product_name]=Annual subscription" \ -d "amount_details[line_items][1][unit_cost]=5000" \ -d "amount_details[line_items][1][quantity]=1" \ -d "amount_details[line_items][1][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnement mit Testzeitraum Wenn Sie ein Abonnement mit Testzeitraum einrichten möchten, verwenden Sie die Setup Intents API. Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Sie Daten für ein Jahresabonnement übergeben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=10000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Der resultierende SetupIntent enthält ein [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### On-Demand-Zahlungen Für einen *On-Demand* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app)-Anwendungsfall können Sie entweder die Payment Intents API oder die Setup Intents API verwenden. Wenn Sie eine Zahlung verarbeiten und gleichzeitig die Zahlungsmethode speichern möchten, verwenden Sie die Payment Intents API. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Your product name" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" ``` Wenn Sie die Zahlungsmethode nur für die spätere Verwendung speichern müssen und keine Zahlung verarbeiten, verwenden Sie die Setup Intents API. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d usage=on_session ``` ## Angaben zur Zahlungsmethode erfassen [Clientseitig] #### Kotlin ```swift // Klarna doesn't require additional parameters so we only need to pass the initialized // STPPaymentMethodKlarnaParams instance to STPPaymentMethodParams val klarnaParams = STPPaymentMethodKlarnaParams() val paymentMethodParams = STPPaymentMethodParams.paramsWithKlarna(klarnaParams, null, null) ``` ## Angaben zur Zahlungsmethode an Stripe senden [Clientseitig] Rufen Sie das Client-Geheimnis aus dem von Ihnen erstellten PaymentIntent oder SetupIntent ab und rufen Sie [PaymentLauncher bestätigen](https://stripe.dev/stripe-android/payments-core/com.stripe.android.payments.paymentlauncher/-payment-launcher/confirm.html) auf. Dies entspricht einer Webansicht, über die die Kundinnen/Kunden den Bezahlvorgang mit Klarna durchführen können. Nach Abschluss wird der angegebene `PaymentResultCallback` mit dem Ergebnis der Zahlung aufgerufen. #### PaymentIntent #### Kotlin ```kotlin class KlarnaPaymentActivity : AppCompatActivity() { // ... private val paymentLauncher: PaymentLauncher by lazy { val paymentConfiguration = PaymentConfiguration.getInstance(this) PaymentLauncher.create( activity = this, publishableKey = paymentConfiguration.publishableKey, stripeAccountId = paymentConfiguration.stripeAccountId, callback = ::onPaymentResult, ) } override fun onCreate(savedInstanceState: Bundle?) { // … startCheckout() } private fun startCheckout() { // Create a PaymentIntent on your backend and return the client_secret here val paymentIntentClientSecret = // … val klarnaParams = PaymentMethodCreateParams.createKlarna() val confirmParams = ConfirmPaymentIntentParams.create( paymentMethodCreateParams = klarnaParams, clientSecret = paymentIntentClientSecret, ) paymentLauncher.confirm(confirmParams) } private fun onPaymentResult(paymentResult: PaymentResult) { // Handle the setup result… } } ``` #### SetupIntent #### Kotlin ```kotlin class KlarnaSetupActivity : AppCompatActivity() { // ... private val paymentLauncher: PaymentLauncher by lazy { val paymentConfiguration = PaymentConfiguration.getInstance(this) PaymentLauncher.create( activity = this, publishableKey = paymentConfiguration.publishableKey, stripeAccountId = paymentConfiguration.stripeAccountId, callback = ::onPaymentResult, ) } override fun onCreate(savedInstanceState: Bundle?) { // … startCheckout() } private fun startCheckout() { // Create a SetupIntent on your backend and return the client_secret here val setupIntentClientSecret = // … val klarnaParams = PaymentMethodCreateParams.createKlarna() val confirmParams = ConfirmSetupIntentParams.create( paymentMethodCreateParams = klarnaParams, clientSecret = setupIntentClientSecret, // Add a mandate ID or MandateDataParams… ) paymentLauncher.confirm(confirmParams) } private fun onPaymentResult(paymentResult: PaymentResult) { // Handle the setup result… } } ``` ## 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 der Kunde/die Kundin die Abrechnungsvereinbarung autorisiert hat. Verlassen Sie sich nicht darauf, dass Ihre Kundinnen und Kunden zur Zahlungsstatusseite zurückkehren. Wenn Kundinnen und Kunden die Abrechnungsvereinbarung erfolgreich autorisieren, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) oder [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus und der Intent-Status wechselt zu `succeeded`. Speichern Sie die resultierende [payment_method](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-payment_method)-ID, um Zahlungen später mit der gespeicherten PaymentMethod vorzunehmen. Wenn eine Kundin/ein Kunde die Abrechnungsvereinbarung nicht erfolgreich autorisiert, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed) oder [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus, und der Intent-Status wechselt wieder zu `requires_payment_method`. ## Eine gespeicherte Klarna-Zahlungsmethode belasten [Serverseitig] #### Verlängerung des Abonnements Wenn Sie bereit sind, Ihrem Kunden/Ihrer Kundin eine Off-Session-Gebühr zu berechnen, verwenden Sie die IDs *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), um eine [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `true`, um anzugeben, dass sich Kundinnen/Kunden während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befinden. Dies hat zur Folge, dass der PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. - Geben Sie eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) an, um anzugeben, wohin Stripe den Kunden/die Kundin weiterleiten soll, nachdem er/sie von der Website von Klarna zurückgekehrt ist. Senden Sie Abonnementdetails und Posten bei jeder Verlängerung. Verwenden Sie für Ihr Abonnement die gleiche `reference` wie bei der Einrichtung der Zahlungsmethode. Wenn sich die Abonnementdetails geändert haben, seit Sie die Zahlungsmethode gespeichert haben, senden Sie die neuen Informationen mit der gleichen `reference`. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` #### On-Demand-Zahlung Wenn Sie bereit sind, Ihre Kundinnen/Kunden zu belasten, verwenden Sie die *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)- und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-IDs, um einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `false`, um anzugeben, dass sich der Kunde/die Kundin während dieses Zahlungsversuchs in einem Bezahlvorgang befindet. Wenn ein Fehler auftritt, z. B. wenn eine Authentifizierung erforderlich ist, wird die Kundin/der Kunde zur Authentifizierung oder Behebung des Problems auf die Seite von Klarna weitergeleitet. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. Das folgende Beispiel enthält optionale Details mit [payment_method_options](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options), um die Risikoevaluation und Autorisierungsquoten von Klarna zu verbessern. Dazu gehören Einzelheiten darüber, wie diese gespeicherte Klarna-Zahlungsmethode in Zukunft verwendet werden soll, wie etwa die erwarteten zukünftigen Bestellbeträge und die Häufigkeit von Zahlungen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=false \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=1099" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]={{SUBSCRIPTION_ID}}" \ -d "payment_method_options[klarna][on_demand][average_amount]=1000" \ -d "payment_method_options[klarna][on_demand][minimum_amount]=100" \ -d "payment_method_options[klarna][on_demand][maximum_amount]=10000" \ -d "payment_method_options[klarna][on_demand][interval]=year" \ -d "payment_method_options[klarna][on_demand][interval_count]=1" ``` ## Umgang mit dem Widerruf wiederverwendbarer Zahlungsmethoden [Serverseitig] Sie können eine wiederverwendbare Zahlungsmethode auf zwei Arten widerrufen: - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode in der mobilen Anwendung von Klarna deaktivieren. In diesem Fall sendet Stripe Ihnen ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis. Zur Verarbeitung abonnieren Sie die [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse und rufen [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) auf, um sie zu deaktivieren. - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode auch auf Ihrer Nutzeroberfläche deaktivieren, sofern dies unterstützt wird. In diesem Szenario kann Ihr Server [PaymentMethod trennen](https://docs.stripe.com/api/payment_methods/detach.md) aufrufen, um die Deaktivierung zu verarbeiten. In beiden Fällen sendet Stripe, nachdem Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) aufgerufen haben, ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. ## Optional: Klarna-Weiterleitung manuell handhaben [Serverseitig] Wir empfehlen, das native SDK zu verwenden, um Klarna-Weiterleitungen und Abrechnungsautorisierungen auf dem Client zu verarbeiten. Wenn Sie das native SDK verwenden, können Sie Ihre Integration um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen/Kunden jedoch mit den folgenden Schritten manuell an Ihren Server weiterleiten. *Bestätigen* (Confirming an intent indicates that the customer intends to use the current or provided payment method. Upon confirmation, the intent attempts to initiate the portions of the flow that have real-world side effects) Sie den PaymentIntent oder SetupIntent zur Erstellungszeit, indem Sie `confirm: true` einfügen. Geben Sie eine `return_url` an, um anzugeben, wohin Stripe den/die Nutzer/in weiterleiten soll, nachdem er/sie die Einrichtung auf der Website von Klarna oder in der mobilen Anwendung abgeschlossen hat. Überprüfen Sie, ob der Intent-Status `requires_action` und der `next_action`-Typ `redirect_to_url` ist. ```json { "id": "seti_1IQ9hjJJahOk1vSNevPWnhEN", "object": "setup_intent","status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/setup/complete" } }, "application": null, "cancellation_reason": null, "client_secret": "seti_1IQ9hjJJahOk1vSNevPWnhEN_secret_J2EAlI0GQbQKV9tg7ITRcUWRBiAwvUV", "created": 1614597263, "customer": null, "description": null, "last_setup_error": null, "latest_attempt": "setatt_1IQ9hkJJahOk1vSN0rsCpnLI", "livemode": false, "mandate": null, "metadata": {}, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1IQ9hjJJahOk1vSNDc5lQWia", "payment_method_options": {}, "payment_method_types": ["klarna"], "single_use_mandate": null, "usage": "off_session" } ``` Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft `next_action.redirect_to_url.url` angegebene URL weiter. ## Optional: Aktualisieren Sie eine gespeicherte Zahlungsmethode [Serverseitig] Führen Sie Kundinnen/Kunden erneut durch den Zahlungsablauf von Klarna, wenn sie ihr Abo aktualisieren. Dadurch stellt Klarna sicher, dass die Abonnementinformationen möglichst genau sind und die Autorisierungsraten werden optimiert. #### Upgrade durchführen und Zahlungsverlängerung Erstellen Sie ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) mit derselben Struktur wie bei der Belastung einer gespeicherten Zahlungsmethode und fügen Sie `setup_future_usage` hinzu, um anzugeben, dass Sie die bestehende Zahlungsmethode aktualisieren möchten. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim ersten Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d setup_future_usage=off_session \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=10000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Das resultierende PaymentIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, [wie Sie die Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#submit-payment). #### Upgrade durchführen und später bezahlen Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/payment_intents.md) und übergeben Sie die bereits gespeicherte Zahlungsmethode. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim erstmaligen Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=20000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Das resultierende SetupIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, wie Sie die [Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#submit-payment). ## Optional: Ein gespeichertes Klarna Konto entfernen [Serverseitig] Mit der [Detach](https://docs.stripe.com/api/payment_methods/detach.md) API können Sie das gespeicherte Klarna-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Entfernen Sie ein Klarna-Konto, wenn Sie wissen, dass es nicht mehr verwendet wird, z. B. wenn der Kunde/die Kundin sein/ihr Abonnement kündigt. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ``` # React Native > This is a React Native for when payment-ui is mobile and platform is react-native. View the full page at https://docs.stripe.com/payments/klarna/set-up-future-payments?payment-ui=mobile&platform=react-native. Verwenden Sie die [Payment Intents API](https://docs.stripe.com/api/payment_intents.md) mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) oder die [Setup Intents API](https://docs.stripe.com/api/setup_intents.md), um Angaben zur Klarna-Zahlungsmethode zu speichern. ## Stripe einrichten [Serverseitig] [Clientseitig] Zunächst benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/register). ### Serverseitig Für diese Integration sind Endpoints auf Ihrem Server erforderlich, die mit der Stripe API kommunizieren können. Nutzen Sie die offiziellen Bibliotheken für den Zugriff auf die Stripe API von Ihrem Server aus: #### 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' ``` ### Clientseitig Das [React Native SDK](https://github.com/stripe/stripe-react-native) ist Open Source und vollständig dokumentiert. Intern werden [native iOS](https://github.com/stripe/stripe-ios) und [Android](https://github.com/stripe/stripe-android) SDKs verwendet. Um das React Native SDK von Stripe zu installieren, führen Sie einen der folgenden Befehle im Verzeichnis Ihres Projekts aus (je nachdem, welchen Paket-Manager Sie verwenden): #### yarn ```bash yarn add @stripe/stripe-react-native ``` #### npm ```bash npm install @stripe/stripe-react-native ``` Installieren Sie als Nächstes einige weitere erforderliche Abhängigkeiten: - Für iOS wechseln Sie in das Verzeichnis **ios** und führen Sie `pod install` aus, um sicherzustellen, dass Sie auch die erforderlichen nativen Dependencies installiert haben. - Für Android müssen keine Abhängigkeiten mehr installiert werden. > Wir empfehlen Ihnen, die [offizielle Anleitung zu TypeScript](https://reactnative.dev/docs/typescript#adding-typescript-to-an-existing-project) zu befolgen, um TypeScript zu unterstützen. ### Stripe Initialisierung Um Stripe in Ihrer React Native-App zu initialisieren, umschließen Sie entweder Ihren Zahlungsbildschirm mit der Komponente `StripeProvider` oder verwenden Sie die Initialisierungsmethode `initStripe`. Nur der [veröffentlichbare API-Schlüssel](https://docs.stripe.com/keys.md#obtain-api-keys) in `publishableKey` ist erforderlich. Das folgende Beispiel zeigt, wie Stripe mithilfe der Komponente `StripeProvider` initialisiert wird. ```jsx import { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( {/* Your app code here */} ); } ``` > Verwenden Sie Ihre API-[Testschlüssel](https://docs.stripe.com/keys.md#obtain-api-keys) beim Testen und Entwickeln Ihrer App und Ihre [Live-Modus](https://docs.stripe.com/keys.md#test-live-modes)-Schlüssel beim Veröffentlichen Ihrer App. ## Rückgabe-URL einrichten (nur für iOS) [Clientseitig] Wenn Kundinnen/Kunden Ihre App verlassen (zum Beispiel um sich in Safari oder ihrer Banking-App zu authentifizieren), bieten Sie ihnen eine Möglichkeit, automatisch zu Ihrer App zurückzukehren. Für viele Arten von Zahlungsmethoden *ist* eine Rückgabe-URL erforderlich. Wenn Sie keine angeben, können wir Ihren Nutzer/innen keine Zahlungsmethoden anbieten, für die eine Rückgabe-URL erforderlich ist, selbst wenn Sie diese aktiviert haben. So geben Sie eine Rückgabe-URL an: 1. [Registrieren](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app#Register-your-URL-scheme) Sie eine benutzerdefinierte URL. Universelle Links werden nicht unterstützt. 1. [Konfigurieren](https://reactnative.dev/docs/linking) Sie Ihre benutzerdefinierte URL. 1. Richten Sie Ihre Root-Komponente so ein, dass sie die URL an das Stripe SDK weitergibt, wie unten gezeigt. > Wenn Sie Expo verwenden, [stellen Sie Ihr Schema](https://docs.expo.io/guides/linking/#in-a-standalone-app) in der Datei `app.json` ein. ```jsx import { useEffect, useCallback } from 'react'; import { Linking } from 'react-native'; import { useStripe } from '@stripe/stripe-react-native'; export default function MyApp() { const { handleURLCallback } = useStripe(); const handleDeepLink = useCallback( async (url: string | null) => { if (url) { const stripeHandled = await handleURLCallback(url); if (stripeHandled) { // This was a Stripe URL - you can return or add extra handling here as you see fit } else { // This was NOT a Stripe URL – handle as you normally would } } }, [handleURLCallback] ); useEffect(() => { const getUrlAsync = async () => { const initialUrl = await Linking.getInitialURL(); handleDeepLink(initialUrl); }; getUrlAsync(); const deepLinkListener = Linking.addEventListener( 'url', (event: { url: string }) => { handleDeepLink(event.url); } ); return () => deepLinkListener.remove(); }, [handleDeepLink]); return ( ); } ``` Weitere Informationen zu nativen URL-Schemen finden Sie in der Dokumentation für [Android](https://developer.android.com/training/app-links/deep-linking) und [iOS](https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app). ## Kund/innen vor Einrichtung erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Klarna für künftige Zahlungen zu hinterlegen, müssen Sie diese den gewünschten *Kund/innen* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Sie sollten ein Customer-Objekt erstellen, wenn Ihre Kundinnen/Kunden ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Customer-Objekts mit Ihrer eigenen Darstellung einer Kundin/eines Kunden verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wenn Ihre Kundinnen/Kunden noch kein Konto erstellt haben, können Sie 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 "<>:" ``` ## PaymentIntent oder SetupIntent erstellen [Serverseitig] Wählen Sie unten das Szenario aus, das am besten zu Ihrem Anwendungsfall passt. #### Abonnement mit erster Zahlung Wenn Sie ein Abonnement einrichten und die erste Zahlung in Rechnung stellen, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnierte und nicht abonnierte Produkte Wenn Sie ein einmaliges Produkt abrechnen und gleichzeitig ein Abonnement einrichten möchten, verwenden Sie die Payment Intents API mit [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage). Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Details für ein Jahresabonnement übergeben werden. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=100000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=One-off product" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][1][product_name]=Annual subscription" \ -d "amount_details[line_items][1][unit_cost]=5000" \ -d "amount_details[line_items][1][quantity]=1" \ -d "amount_details[line_items][1][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" ``` Die resultierende PaymentIntent enthält ein [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### Abonnement mit Testzeitraum Wenn Sie ein Abonnement mit Testzeitraum einrichten möchten, verwenden Sie die Setup Intents API. Sie sollten die Abonnementdaten übergeben, wenn Sie das Abonnement einrichten. Abonnementdetails übergeben: - Stellt sicher, dass Ihre Kundinnen und Kunden Zugang zu allen anwendbaren [Klarna-Zahlungsoptionen](https://docs.stripe.com/payments/klarna.md#payment-options) haben, einschließlich „In 3 oder 4 Raten bezahlen“, die nur für Abonnements mit bestimmten Laufzeiten verfügbar sind. - Senkt die Support-Raten und Kundenabbrüche aufgrund unklarer Kaufdetails in der Klarna App, in der Klarna Abo-Daten für Ihre Kundinnen und Kunden anzeigt. Verwenden Sie den Parameter [payment_method_options](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-klarna), um Abonnementdetails zu übergeben. Die Abonnement-[Referenz](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-klarna-subscriptions-reference) ist eine beliebige, von Ihnen gewählte Kennung, die auf Kundenseite nicht sichtbar ist (zum Beispiel `GYM_ANNUAL_MEMBERSHIP` oder `ID_123`). > #### Verwenden Sie dieselbe Referenz, um mit der gespeicherten Zahlungsmethode die Zahlung abzuwickeln. > > Wenn Sie die gespeicherte Zahlungsmethode aufladen, verwenden Sie dieselbe Abonnementreferenz. Der Referenzwert muss mit dem Wert des Feldes `amount_details[line_items][payment_method_options][klarna][subscription_reference]` übereinstimmen, wenn Sie es später zur Integration verwenden. Wenn der Wert nicht übereinstimmt, erhalten Sie eine Fehlermeldung. Das folgende Beispiel zeigt, wie Sie Daten für ein Jahresabonnement übergeben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=10000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Der resultierende SetupIntent enthält ein [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret). Übergeben Sie das Geheimnis an die Client-Seite, um Ihre Käuferinnen und Käufer an Klarna weiterzuleiten und die gespeicherte Zahlungsmethode zu autorisieren. #### On-Demand-Zahlungen Für einen *On-Demand* (When a customer stores their payment method with a business, they can make on-demand future purchases without re-authenticating, such as ordering a ride in their ride-share app)-Anwendungsfall können Sie entweder die Payment Intents API oder die Setup Intents API verwenden. Wenn Sie eine Zahlung verarbeiten und gleichzeitig die Zahlungsmethode speichern möchten, verwenden Sie die Payment Intents API. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d setup_future_usage=off_session \ -d "amount_details[line_items][0][product_name]=Your product name" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][quantity]=1" ``` Wenn Sie die Zahlungsmethode nur für die spätere Verwendung speichern müssen und keine Zahlung verarbeiten, verwenden Sie die Setup Intents API. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d usage=on_session ``` ## Kund/innen weiterleiten [Clientseitig] Verwenden Sie das Stripe React Native SDK, um den PaymentIntent oder SetupIntent zu bestätigen. Es verarbeitet automatisch Szenarien wie die nachfolgend beschriebene Weiterleitung und ermöglicht die Erweiterung Ihrer Integration durch zusätzliche Zahlungsmethoden in der Zukunft. Ihre Kundinnen/Kunden werden zu einer Klarna-Zahlungsvereinbarungsseite weitergeleitet. Dort müssen sie Sie autorisieren, um ihr Klarna-Konto für zukünftige Zahlungen verwenden zu können, bevor sie wieder zu Ihrer App zurückgeleitet werden. #### PaymentIntent ```js import { confirmPayment } from '@stripe/stripe-react-native'; // In your component... const { error, paymentIntent } = await confirmPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { paymentMethodType: 'Klarna', paymentMethodData: { billingDetails: { email: 'jenny@example.com', address: { country: 'DE' } }, mandateData: { // Add mandate data... } } }); if (error) { // Something went wrong } ``` #### SetupIntent ```js import { confirmSetupIntent } from '@stripe/stripe-react-native'; // In your component... const { error, setupIntent } = await confirmSetupIntent( '{{SETUP_INTENT_CLIENT_SECRET}}', { paymentMethodType: 'Klarna', paymentMethodData: { billingDetails: { email: 'jenny@example.com', address: { country: 'DE' } }, mandateData: { // Add mandate data... } } }); if (error) { // Something went wrong } ``` ## 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 der Kunde/die Kundin die Abrechnungsvereinbarung autorisiert hat. Verlassen Sie sich nicht darauf, dass Ihre Kundinnen und Kunden zur Zahlungsstatusseite zurückkehren. Wenn Kundinnen und Kunden die Abrechnungsvereinbarung erfolgreich autorisieren, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) oder [setup_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.succeeded) aus und der Intent-Status wechselt zu `succeeded`. Speichern Sie die resultierende [payment_method](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-payment_method)-ID, um Zahlungen später mit der gespeicherten PaymentMethod vorzunehmen. Wenn eine Kundin/ein Kunde die Abrechnungsvereinbarung nicht erfolgreich autorisiert, gibt Stripe das *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed) oder [setup_intent.setup_failed](https://docs.stripe.com/api/events/types.md#event_types-setup_intent.setup_failed) aus, und der Intent-Status wechselt wieder zu `requires_payment_method`. ## Eine gespeicherte Klarna-Zahlungsmethode belasten [Serverseitig] #### Verlängerung des Abonnements Wenn Sie bereit sind, Ihrem Kunden/Ihrer Kundin eine Off-Session-Gebühr zu berechnen, verwenden Sie die IDs *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), um eine [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `true`, um anzugeben, dass sich Kundinnen/Kunden während dieses Zahlungsversuchs nicht in Ihrem Bezahlvorgang befinden. Dies hat zur Folge, dass der PaymentIntent einen Fehler ausgibt, wenn eine Authentifizierung erforderlich ist. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. - Geben Sie eine [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) an, um anzugeben, wohin Stripe den Kunden/die Kundin weiterleiten soll, nachdem er/sie von der Website von Klarna zurückgekehrt ist. Senden Sie Abonnementdetails und Posten bei jeder Verlängerung. Verwenden Sie für Ihr Abonnement die gleiche `reference` wie bei der Einrichtung der Zahlungsmethode. Wenn sich die Abonnementdetails geändert haben, seit Sie die Zahlungsmethode gespeichert haben, senden Sie die neuen Informationen mit der gleichen `reference`. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=5000 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=5000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` #### On-Demand-Zahlung Wenn Sie bereit sind, Ihre Kundinnen/Kunden zu belasten, verwenden Sie die *Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments)- und *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-IDs, um einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) zu erstellen. Legen Sie einige weitere Parameter fest, um die *Off-Session-Zahlung* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information) durchzuführen: - Setzen Sie [off_session](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-off_session) auf `false`, um anzugeben, dass sich der Kunde/die Kundin während dieses Zahlungsversuchs in einem Bezahlvorgang befindet. Wenn ein Fehler auftritt, z. B. wenn eine Authentifizierung erforderlich ist, wird die Kundin/der Kunde zur Authentifizierung oder Behebung des Problems auf die Seite von Klarna weitergeleitet. - Legen Sie den Wert der Eigenschaft [confirm](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-confirm) des PaymentIntent auf `true` fest. Dadurch erfolgt die Bestätigung sofort, wenn der PaymentIntent erstellt wird. - Setzen Sie [payment_method](https://docs.stripe.com/api.md#create_payment_intent-payment_method) auf die ID der PaymentMethod und [Kunde/Kundin](https://docs.stripe.com/api.md#create_payment_intent-customer) auf die ID des Kunden/der Kundin. Das folgende Beispiel enthält optionale Details mit [payment_method_options](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options), um die Risikoevaluation und Autorisierungsquoten von Klarna zu verbessern. Dazu gehören Einzelheiten darüber, wie diese gespeicherte Klarna-Zahlungsmethode in Zukunft verwendet werden soll, wie etwa die erwarteten zukünftigen Bestellbeträge und die Häufigkeit von Zahlungen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=false \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=1099" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]={{SUBSCRIPTION_ID}}" \ -d "payment_method_options[klarna][on_demand][average_amount]=1000" \ -d "payment_method_options[klarna][on_demand][minimum_amount]=100" \ -d "payment_method_options[klarna][on_demand][maximum_amount]=10000" \ -d "payment_method_options[klarna][on_demand][interval]=year" \ -d "payment_method_options[klarna][on_demand][interval_count]=1" ``` ## Umgang mit dem Widerruf wiederverwendbarer Zahlungsmethoden [Serverseitig] Sie können eine wiederverwendbare Zahlungsmethode auf zwei Arten widerrufen: - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode in der mobilen Anwendung von Klarna deaktivieren. In diesem Fall sendet Stripe Ihnen ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis. Zur Verarbeitung abonnieren Sie die [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse und rufen [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) auf, um sie zu deaktivieren. - Ein/e Kundin/Kunde kann eine wiederverwendbare Zahlungsmethode auch auf Ihrer Nutzeroberfläche deaktivieren, sofern dies unterstützt wird. In diesem Szenario kann Ihr Server [PaymentMethod trennen](https://docs.stripe.com/api/payment_methods/detach.md) aufrufen, um die Deaktivierung zu verarbeiten. In beiden Fällen sendet Stripe, nachdem Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) aufgerufen haben, ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. ## Optional: Klarna-Weiterleitung manuell handhaben [Serverseitig] Wir empfehlen, die Abwicklung von Klarna-Weiterleitungen und Abrechnungsautorisierungen auf Client-Seite mit `confirmSetupIntent` dem Stripe React Native SDK zu überlassen. Wenn Sie das native SDK verwenden, können Sie Ihre Integration einfach um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen/Kunden jedoch auch mithilfe der folgenden Schritte manuell an Ihren Server weiterleiten: *Bestätigen* (Confirming an intent indicates that the customer intends to use the current or provided payment method. Upon confirmation, the intent attempts to initiate the portions of the flow that have real-world side effects) Sie den SetupIntent zur Erstellungszeit, indem Sie `confirm: true` festlegen. Bei der Bestätigung eines SetupIntent müssen Sie eine `return_url` bereitstellen, um anzugeben, wohin Stripe Nutzer/innen weiterleiten soll, nachdem sie die Einrichtung auf der Website von Klarna oder in der mobilen Anwendung abgeschlossen haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_types[]=klarna" \ -d "payment_method_data[type]=klarna" \ --data-urlencode "payment_method_data[billing_details][email]=jenny@example.com" \ -d "payment_method_data[billing_details][address][country]=DE" \ -d usage=off_session \ -d confirm=true \ --data-urlencode "return_url=https://example.com/setup/complete" ``` Überprüfen Sie, ob der Status des SetupIntent `requires_action` und der `next_action`-Typ `redirect_to_url` ist. ```json { "id": "seti_1IQ9hjJJahOk1vSNevPWnhEN", "object": "setup_intent","status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/setup/complete" } }, "application": null, "cancellation_reason": null, "client_secret": "seti_1IQ9hjJJahOk1vSNevPWnhEN_secret_J2EAlI0GQbQKV9tg7ITRcUWRBiAwvUV", "created": 1614597263, "customer": null, "description": null, "last_setup_error": null, "latest_attempt": "setatt_1IQ9hkJJahOk1vSN0rsCpnLI", "livemode": false, "mandate": null, "metadata": {}, "next_action": null, "on_behalf_of": null, "payment_method": "pm_1IQ9hjJJahOk1vSNDc5lQWia", "payment_method_options": {}, "payment_method_types": ["klarna"], "single_use_mandate": null, "usage": "off_session" } ``` Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft `next_action.redirect_to_url.url` angegebene URL weiter. ## Optional: Aktualisieren Sie eine gespeicherte Zahlungsmethode [Serverseitig] Führen Sie Kundinnen/Kunden erneut durch den Zahlungsablauf von Klarna, wenn sie ihr Abo aktualisieren. Dadurch stellt Klarna sicher, dass die Abonnementinformationen möglichst genau sind und die Autorisierungsraten werden optimiert. #### Upgrade durchführen und Zahlungsverlängerung Erstellen Sie ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) mit derselben Struktur wie bei der Belastung einer gespeicherten Zahlungsmethode und fügen Sie `setup_future_usage` hinzu, um anzugeben, dass Sie die bestehende Zahlungsmethode aktualisieren möchten. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim ersten Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=10000 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d setup_future_usage=off_session \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "amount_details[line_items][0][product_name]=Annual subscription renewal" \ -d "amount_details[line_items][0][quantity]=1" \ -d "amount_details[line_items][0][unit_cost]=10000" \ -d "amount_details[line_items][0][payment_method_options][klarna][subscription_reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=year" ``` Das resultierende PaymentIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, [wie Sie die Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#react-native-redirect-customer). #### Upgrade durchführen und später bezahlen Erstellen Sie einen [SetupIntent](https://docs.stripe.com/api/payment_intents.md) und übergeben Sie die bereits gespeicherte Zahlungsmethode. Übergeben Sie die neuen Abonnement-Informationen und verwenden Sie dieselbe `reference`, die Sie beim erstmaligen Speichern der Zahlungsmethode verwendet haben. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d payment_method={{PAYMENT_METHOD_ID}} \ --data-urlencode "return_url=https://example.com/setup/complete" \ -d "payment_method_options[klarna][currency]=usd" \ -d "payment_method_options[klarna][subscriptions][0][reference]=EXAMPLE_REFERENCE" \ -d "payment_method_options[klarna][subscriptions][0][interval]=annual" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][amount]=20000" \ -d "payment_method_options[klarna][subscriptions][0][next_billing][date]=2026-01-01" ``` Das resultierende SetupIntent erfordert eine Weiterleitung zu Klarna, um abgeschlossen zu werden. Erfahren Sie, wie Sie die [Weiterleitung verarbeiten](https://docs.stripe.com/payments/klarna/set-up-future-payments.md#react-native-redirect-customer). ## Optional: Ein gespeichertes Klarna Konto entfernen [Serverseitig] Mit der [Detach](https://docs.stripe.com/api/payment_methods/detach.md) API können Sie das gespeicherte Klarna-Konto eines Kunden/einer Kundin als Zahlungsmethode entfernen. Entfernen Sie ein Klarna-Konto, wenn Sie wissen, dass es nicht mehr verwendet wird, z. B. wenn der Kunde/die Kundin sein/ihr Abonnement kündigt. ```curl curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "<>:" ```