# Künftige Zahlungen mit Kakao Pay einrichten Erfahren Sie, wie Sie Kakao Pay speichern können, um die Konten Ihrer Kundinnen/Kunden später zu belasten. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/kakao-pay/set-up-future-payments?payment-ui=checkout. > Kakao Pay ist in Singapur nicht verfügbar. Speichern Sie die Zahlungsangaben von Kakao Pay mit [Checkout](https://docs.stripe.com/payments/checkout.md), unserer vollständig gehosteten Bezahlseite. Erfahren Sie, wie Sie [ein Abonnement mit Kakao Pay einrichten](https://docs.stripe.com/billing/subscriptions/kakao-pay.md) und wiederkehrende Zahlungen erstellen, nachdem Sie Ihre Zahlungsmethode in Checkout gespeichert haben. ## 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' ``` ## Erlaubnis zur Speicherung von Kakao Pay als Zahlungsmethode einholen [Serverseitig] Sie benötigen die Zustimmung Ihrer Kundin/Ihres Kunden, um ihre/seine Zahlungsmethode für die spätere Verwendung zu speichern. Indem Sie im Voraus eine Vereinbarung (auch Mandat bezeichnet) erstellen, können Sie die Zahlungsdaten Ihrer Kundinnen und Kunden speichern und die Kundenkonten auch belasten, wenn diese Ihre Website oder App nicht aktiv nutzen. Binden Sie Geschäftsbedingungen, aus denen hervorgeht, wie Sie die Angaben Ihrer Kundinnen und Kunden zu den Zahlungsmethoden speichern möchten, in Ihre Website oder App ein und holen Sie deren Zustimmung ein. Wenn Sie Zahlungen auch verarbeiten möchten, wenn Ihre Kundinnen und Kunden offline sind, müssen Sie sicherstellen, dass Ihre Geschäftsbedingungen außerdem Folgendes beinhalten: - Die kundenseitige Erlaubnis, eine Zahlung oder mehrere Zahlungen für bestimmte Transaktionen in deren Namen einzuleiten - Die voraussichtliche Häufigkeit (einmalig oder wiederkehrend) und der Zahlungszeitpunkt - Wie Sie den Zahlbetrag ermitteln - Ihre Stornorichtlinie (wenn Sie die Zahlungsmethode für einen Abonnementdienst einrichten) Dokumentieren Sie unbedingt die schriftliche Zustimmung Ihrer Kundinnen und Kunden zu diesen Bedingungen und reichen Sie nur Zahlungen ein, die mit diesen Konditionen übereinstimmen. ## Kundinnen/Kunden erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Kakao Pay für künftige Zahlungen zu hinterlegen, ordnen Sie diese den gewünschten *Kundinnen und Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zu. Erstellen Sie ein [Kundenobjekt](https://docs.stripe.com/api/customers.md), wenn Kundinnen und Kunden ein Konto bei Ihrem Unternehmen anlegen, und verknüpfen Sie die ID des Kundenobjekts mit Ihrer eigenen internen Kundendarstellung. Alternativ können Sie neue Kundinnen und Kunden auch erst erstellen, bevor Sie eine Zahlungsmethode für zukünftige Zahlungen speichern. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ --data-urlencode "description=My First Test Customer (created for API docs)" ``` ## Checkout-Sitzung erstellen [Serverseitig] Ihre Kundin oder Ihr Kunde muss Ihnen die Genehmigung erteilen, sein/ihr NICEPAY-Konto für zukünftige Zahlungen über Stripe Checkout zu verwenden. So können Sie zukünftige Zahlungen mit Kakao Pay akzeptieren. Fügen Sie Ihrer Website eine Schaltfläche hinzu, die einen serverseitigen Endpoint aufruft, um eine [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) zu erstellen. ```html Set up payment
``` Create a Checkout Session in `setup` mode to collect the required information. After creating the Checkout Session, redirect your customer to the [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) in the response. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d mode=setup \ -d "payment_method_types[]=card" \ -d "payment_method_types[]=kakao_pay" \ --data-urlencode "success_url=https://example.com/success" ``` ## Integration testen Wählen Sie beim Testen Ihrer Checkout-Integration **Kakao Pay** aus und klicken Sie auf **Mit Kakao Pay fortfahren**. Sie werden dann auf eine von Stripe gehostete Seite weitergeleitet, auf der Sie die Zahlung autorisieren oder ablehnen können. Erfahren Sie mehr über das [Testen von auf Weiterleitung basierenden Zahlungsmethoden](https://docs.stripe.com/testing.md#redirects). # Direct API > This is a Direct API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/kakao-pay/set-up-future-payments?payment-ui=direct-api. > Kakao Pay ist in Singapur nicht verfügbar. Sie können die [Setup Intents API](https://docs.stripe.com/payments/setup-intents.md) verwenden, um Details zur Zahlungsmethode im Voraus zu erfassen. Der endgültige Betrag bzw. das Zahlungsdatum werden hierbei erst später festgelegt. Dies ist nützlich für Folgendes: - Speichern von Zahlungsmethoden in einer Wallet, um zukünftige Einkäufe zu optimieren - Einziehen von Zuschlägen nach Abwicklung einer Dienstleistung - [Kostenlosen Testzeitraum für ein Abonnement starten](https://docs.stripe.com/billing/subscriptions/trials.md) Verwenden Sie die [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md), um Angaben zur Zahlungsmethode zu erfassen und die gespeicherte Zahlungsmethode umgehend zu belasten. Erfahren Sie, wie Sie [ein Abonnement mit Kakao Pay einrichten](https://docs.stripe.com/billing/subscriptions/kakao-pay.md) und wiederkehrende Zahlungen erstellen, nachdem Sie Ihre Zahlungsmethode in Checkout gespeichert haben. ## Kundinnen/Kunden erstellen oder abrufen [Serverseitig] Um die Zahlungsmethode Kakao Pay für künftige Zahlungen zu speichern, müssen Sie diese den gewünschten *Kundinnen und Kunden* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) zuordnen. Erstellen Sie ein Kundenobjekt, wenn Ihre Kundinnen und Kunden ein Konto bei Ihrem Unternehmen anlegen. Wenn Sie die ID des Kundenobjekts mit Ihrer eigenen Kundendarstellung verknüpfen, können Sie später die gespeicherten Angaben zur Zahlungsmethode abrufen und verwenden. Wurde kundenseitig noch kein Konto erstellt, können Sie dennoch ein Kundenobjekt erstellen und es zu einem späteren Zeitpunkt mit Ihrer eigenen internen Darstellung des Kundenkontos verknüpfen. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ --data-urlencode "description=My First Test Customer (created for API docs)" ``` #### Zahlungsmethode mit der Setup Intents API speichern Verwenden Sie die [Setup Intents API](https://docs.stripe.com/payments/setup-intents.md), um Angaben zur Zahlungsmethode im Voraus zu erfassen. Den endgültigen Betrag bzw. das Zahlungsdatum können Sie zu einem späteren Zeitpunkt bestimmen. Dies ist nützlich für Folgendes: - Zahlungsmethoden für Kundinnen/Kunden speichern, damit für deren künftige Käufe keine Authentifizierungen erforderlich sind - Kostenlosen Testzeitraum für ein *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) starten ## Erlaubnis zur Speicherung von Kakao Pay als Zahlungsmethode einholen [Serverseitig] Sie benötigen die Zustimmung Ihrer Kundin/Ihres Kunden, um ihre/seine Zahlungsmethode für die spätere Verwendung zu speichern. Indem Sie im Voraus eine Vereinbarung (auch Mandat bezeichnet) erstellen, können Sie die Zahlungsdaten Ihrer Kundinnen und Kunden speichern und die Kundenkonten auch belasten, wenn diese Ihre Website oder App nicht aktiv nutzen. Binden Sie Geschäftsbedingungen, aus denen hervorgeht, wie Sie die Angaben Ihrer Kundinnen und Kunden zu den Zahlungsmethoden speichern möchten, in Ihre Website oder App ein und holen Sie deren Zustimmung ein. Wenn Sie Zahlungen auch verarbeiten möchten, wenn Ihre Kundinnen und Kunden offline sind, müssen Sie sicherstellen, dass Ihre Geschäftsbedingungen außerdem Folgendes beinhalten: - Die kundenseitige Erlaubnis, eine Zahlung oder mehrere Zahlungen für bestimmte Transaktionen in deren Namen einzuleiten - Die voraussichtliche Häufigkeit (einmalig oder wiederkehrend) und der Zahlungszeitpunkt - Wie Sie den Zahlbetrag ermitteln - Ihre Stornorichtlinie (wenn Sie die Zahlungsmethode für einen Abonnementdienst einrichten) Dokumentieren Sie unbedingt die schriftliche Zustimmung Ihrer Kundinnen und Kunden zu diesen Bedingungen und reichen Sie nur Zahlungen ein, die mit diesen Konditionen übereinstimmen. ## SetupIntent erstellen und Kakao Pay als Zahlungsmethode speichern [Serverseitig] Ein [SetupIntent](https://docs.stripe.com/api/setup_intents.md) ist ein Objekt, das Ihre Absicht darstellt, die Zahlungsmethode einer Kundin/eines Kunden für zukünftige Zahlungen einzurichten. Der SetupIntent verfolgt die Schritte dieses Einrichtungsvorgangs. Erstellen Sie einen SetupIntent auf Ihrem Server mit [payment_method_types](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-payment_method_types), die auf `kakao_pay` gesetzt sind, und geben Sie die Kunden-ID sowie [usage=off_session](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-usage) oder `usage=on_session` an. ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "payment_method_types[]=kakao_pay" \ -d "payment_method_data[type]=kakao_pay" \ -d usage=off_session \ -d customer={{CUSTOMER_ID}} ``` ### Client-Geheimnis abrufen Im SetupIntent ist ein *Client-Geheimnis* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) enthalten, das auf dem Client verwendet wird, um Zahlungen sicher abzuschließen. Es gibt verschiedene Verfahren zum Übergeben des Client-Geheimnisses an den Client. #### Einseitige Anwendung Rufen Sie das Client-Geheimnis von einem Endpoint auf Ihrem Server ab, indem Sie die Browser-Funktion `fetch` verwenden. Diese Vorgehensweise funktioniert am besten, wenn es sich bei Ihrer Client-Seite um eine einseitige Anwendung handelt, insbesondere wenn sie mit einem modernen Frontend-Framework wie React erstellt wurde. Erstellen Sie den Server-Endpoint, der das Client-Geheimnis bereitstellt: #### Ruby ```ruby get '/secret' do intent = # ... Create or retrieve the SetupIntent {client_secret: intent.client_secret}.to_json end ``` Und dann rufen Sie das Client-Geheimnis mit JavaScript auf der Client-Seite ab: ```javascript (async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })(); ``` #### Serverseitiges Rendering Übergeben Sie das Client-Geheimnis von Ihrem Server an den Client. Diese Vorgehensweise funktioniert am besten, wenn Ihre Anwendung statische Inhalte auf dem Server generiert, bevor sie an den Browser gesendet werden. Fügen Sie das [client_secret](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) in Ihr Bezahlformular ein. Rufen Sie in Ihrem serverseitigen Code das Client-Geheimnis aus dem SetupIntent ab: #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the SetupIntent erb :checkout end ``` Als Nächstes speichern Sie Kakao Pay auf dem Client mit [Stripe.js](https://docs.stripe.com/payments/elements.md). Fügen Sie das Stripe.js-Skript auf Ihrer Bezahlseite ein, indem Sie es zum `head` der HTML-Datei hinzufügen. ```html Checkout ``` Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit Kakao Pay bezahlen, verwenden Sie Stripe.js, um die Zahlungen an Stripe zu übermitteln. [Stripe.js](https://docs.stripe.com/payments/elements.md) ist die grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie verarbeitet automatisch komplexe Szenarien wie die nachfolgend beschriebene Weiterleitung und ermöglicht die Erweiterung Ihrer Integration durch zusätzliche Zahlungsmethoden. Binden Sie das Stripe.js-Skript in Ihre Bezahlseite ein, indem Sie es im `head` Ihrer HTML-Datei einfügen. ```html Checkout ``` Erstellen Sie auf Ihrer Checkout-Seite mit dem folgenden JavaScript eine Instanz von Stripe.js. ```javascript // Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` Verwenden Sie `stripe.confirmKakaoPaySetup`, um den SetupIntent clientseitig zu bestätigen und geben Sie eine [return_url](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-return_url) und [mandate_data](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-mandate_data) an. Verwenden Sie die [return_url](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-return_url), um Kundinnen und Kunden nach einem erfolgreichen SetupIntent auf eine bestimmte Seite weiterzuleiten. ```javascript // Redirects away from the client const {error} = await stripe.confirmKakaoPaySetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/setup/complete', mandate_data: { customer_acceptance: { type: 'online', online: { infer_from_client: true } } }, } ); if (error) { // Inform the customer that there was an error. } ``` ## Optional: Weiterleitungen manuell verarbeiten Wenn Sie Stripe.js verwenden, können Sie Ihre Integration einfacher um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen und Kunden jedoch auch manuell an Ihren Server weiterleiten. 1. Erstellen und *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 einen PaymentIntent vom Typ `kakao_pay`. Durch Angabe von `payment_method_data` wird eine PaymentMethod erstellt und sofort mit dem PaymentIntent verwendet. Im Feld `return_url` müssen Sie auch die URL angeben, an die Ihre Kundinnen/Kunden nach Abschluss ihrer Zahlung weitergeleitet werden. In dieser URL können Sie Ihre eigenen Abfrageparameter angeben. Diese Parameter werden nach Abschluss der Weiterleitung in die endgültige URL aufgenommen. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=krw \ -d "payment_method_types[]=kakao_pay" \ -d "payment_method_data[type]=kakao_pay" \ --data-urlencode "return_url=https://example.com/checkout/complete" \ -d confirm=true ``` 1. Überprüfen Sie, ob der `PaymentIntent` den Status `requires_action` und ob `next_action` den Typ `redirect_to_url` hat. #### JSON ```json {"status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", ... } ``` 1. Leiten Sie die Kundinnen/Kunden an die in der Eigenschaft `next_action.redirect_to_url.url` angegebene URL weiter. Dieses Codebeispiel ist nur eine Annäherung und kann sich vom Weiterleitungsverfahren in Ihrem Web-Framework unterscheiden. #### Ruby ```ruby if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'redirect_to_url' url = payment_intent.next_action.redirect_to_url.url redirect(url) end ``` Bei Abschluss des Bezahlvorgangs werden Ihre Kundinnen/Kunden zu Ihrer `return_url` weitergeleitet. Die URL-Abfrageparameter `payment_intent` und `payment_intent_client_secret` sind zusammen mit Ihren eigenen Abfrageparametern enthalten. Stripe empfiehlt, einen [Webhook-Endpoint](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks) einzurichten, um den Zahlungsstatus programmgesteuert zu bestätigen. #### Zahlungsmethode mit der Payment Intents API speichern Verwenden Sie die [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md), um Angaben zur Zahlungsmethode beim Bezahlvorgang zu erfassen und eine Zahlungsmethode für eine Kundin/einen Kunden zu speichern. Dies ist nützlich für Folgendes: - Zahlungsmethoden für Kundinnen/Kunden speichern, damit für deren künftige Käufe keine Authentifizierungen erforderlich sind - Kostenlosen Testzeitraum für ein *Abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) starten ## PaymentIntent erstellen und Zahlungsmethode speichern [Serverseitig] Ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) ist ein Objekt, das Ihre Absicht darstellt, ein Kundenkonto zu belasten. Wenn Sie bei der PaymentIntent-Anfrage keine gespeicherte Zahlungsmethode angeben, erstellen wir eine neue Zahlungsmethode und fügen diese den Kundinnen und Kunden hinzu, bevor der PaymentIntent bestätigt wird. Erstellen Sie einen PaymentIntent auf Ihrem Server, wobei [payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) auf `kakao_pay` festgelegt ist, und geben Sie die Kunden-ID, `confirm=true`, [setup_future_usage=off_session](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) mit einer [return_url](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-return_url) und optionalen [mandate_data](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-mandate_data) an. Verwenden Sie die [return_url](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-return_url), um Kundinnen und Kunden nach dem erfolgreichen PaymentIntent an eine bestimmte Seite weiterzuleiten. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]=kakao_pay" \ -d "mandate_data[customer_acceptance][type]=online" \ -d "mandate_data[customer_acceptance][online][ip_address]=127.0.0.0" \ -d "mandate_data[customer_acceptance][online][user_agent]=device" \ --data-urlencode "return_url=https://www.stripe.com" \ -d customer={{CUSTOMER_ID}} \ -d setup_future_usage=off_session \ -d amount=1000 \ -d currency=ngn \ -d statement_descriptor=test_statement \ -d capture_method=automatic \ -d confirm=true ``` Der zurückgegebene PaymentIntent enthält ein *Client-Geheimnis* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)), das auf Client-Seite verwendet wird, um die Zahlung sicher abzuschließen, anstatt das gesamte PaymentIntent-Objekt zu übergeben. Übergeben Sie das Client-Geheimnis an die Anwendung auf Client-Seite, um mit dem Zahlungsvorgang fortzufahren. ## PaymentIntent mit einer gespeicherten Zahlungsmethode erstellen [Serverseitig] Nachdem Sie eine [PaymentMethod](https://docs.stripe.com/api/payment_methods.md) erstellt haben, können Sie zukünftige Zahlungen per Kakao Pay annehmen, indem Sie einen [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) erstellen und bestätigen. Verwenden Sie zum Bestätigen eines PaymentIntent dieselbe Zahlungsmethoden-ID aus dem vorherigen SetupIntent- oder PaymentIntent-Objekt. Der `off_session`-Wert muss auch auf „true“ gesetzt sein, wenn sich Kundinnen und Kunden nicht in einem Bezahlvorgang für diesen PaymentIntent befinden. > Wiederkehrende Zahlungen müssen mit `capture_method: "automatic"` getätigt werden. Die manuelle Erfassung wird nicht unterstützt. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]=kakao_pay" \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d amount=1000 \ -d currency=krw \ -d customer={{CUSTOMER_ID}} \ -d statement_descriptor=test_statement \ -d capture_method=automatic \ -d confirm=true \ -d off_session=true ``` ## Eine wiederverwendbare Zahlungsmethode trennen Um eine wiederverwendbare Zahlungsmethode zu deaktivieren, rufen Sie [detach PaymentMethod](https://docs.stripe.com/api/payment_methods/detach.md) von Ihrem Server aus auf. Stripe sendet sowohl ein [mandate.updated](https://docs.stripe.com/api/events/types.md#event_types-mandate.updated)-Ereignis als auch ein [payment_method.detached](https://docs.stripe.com/api/events/types.md#event_types-payment_method.detached)-Ereignis. Wenn Sie Benachrichtigungen erhalten möchten, abonnieren Sie [Webhook](https://docs.stripe.com/webhooks.md)-Ereignisse. ## Integration testen Wählen Sie beim Testen Ihrer Checkout-Integration **Kakao Pay** aus und klicken Sie auf **Bezahlen**. Dadurch werden Sie zu einer von Stripe gehosteten Seite weitergeleitet, auf der Sie die Zahlung autorisieren oder ablehnen können. Wenn Sie die Zahlung autorisieren, wechselt der PaymentIntent von `requires_action` zu `succeeded`. Wenn Sie die Testzahlung fehlschlagen lassen, wechselt der PaymentIntent von `requires_action` zu `requires_payment_method`. Erfahren Sie mehr darüber, wie Sie auf Weiterleitung basierende Zahlungsmethoden [testen](https://docs.stripe.com/testing.md#redirects) können.