# Konbini-Zahlungen Verwenden Sie die Payment Intents API und Payment Methods API, um Zahlungen über Konbini anzunehmen, eine beliebte Zahlungsmethode für # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=checkout. > Stripe kann Ihren Kundinnen und Kunden automatisch die relevanten Zahlungsmethoden anzeigen, indem Währungen, Einschränkungen der Zahlungsmethode und andere Parameter ausgewertet werden. > > - Befolgen Sie den Leitfaden [Eine Zahlung akzeptieren](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted), um eine Checkout-Integration zu erstellen, die [dynamische Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) verwendet. - Wenn Sie keine dynamischen Zahlungsmethoden verwenden möchten, befolgen Sie die folgenden Schritte, um die Zahlungsmethoden in Ihrer Checkout-Integration manuell zu konfigurieren. Konbini ist eine [einmalig nutzbare](https://docs.stripe.com/payments/payment-methods.md#usage) Zahlungsmethode, bei der die Kundinnen/Kunden [weitere Schritte unternehmen](https://docs.stripe.com/payments/payment-methods.md#customer-actions) müssen, um ihre Zahlung abzuschließen. Die Kundinnen/Kunden können die Zahlung in japanischen Minimärkten bar mit einem Zahlungscode und einer Bestätigungsnummer vornehmen. Stripe benachrichtigt Sie, wenn die Zahlung abgeschlossen ist. ## Kompatibilität bestimmen **Unterstützte Unternehmensstandorte**: JP **Unterstützte Währungen**: `jpy` **Transaktionswährungen**: `jpy` **Zahlungsmodus**: Yes **Einrichtungsmodus**: No **Abonnementmodus**: No Für die Unterstützung von Zahlungen mit Konbini muss eine Checkout-Sitzung alle folgenden Bedingungen erfüllen: - Die *Preise* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) für alle Posten müssen in der gleichen Währung angegeben werden (JPY). - Sie können nur einmalige Posten verwenden (wiederkehrende *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)pläne werden nicht unterstützt). ## Zahlung annehmen > Erstellen Sie zunächst eine Integration, um mit Checkout [Zahlungen anzunehmen](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout), bevor Sie mit diesem Leitfaden fortfahren. Das führt Sie durch die Aktivierung von Konbini und zeigt die Unterschiede zwischen dem Akzeptieren von Zahlungen mit dynamischen Zahlungsmethoden und dem manuellen Konfigurieren von Zahlungsmethoden. ### Konbini als Zahlungsmethode aktivieren Führen Sie bei der Erstellung einer neuen [Checkout-Sitzung](https://docs.stripe.com/api/checkout/sessions.md) folgende Schritte aus: 1. Fügen Sie `konbini` zur Liste der `payment_method_types` hinzu. 1. Stellen Sie sicher, dass alle `line_items` die Währung `jpy` verwenden. #### Von Stripe gehostete Seite ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Vollständige eingebettete Seite ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` ### Zusätzliche Optionen für Zahlungsmethoden Optionen für Zahlungsmethoden können unter dem Schlüssel `konbini` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-konbini) angegeben werden. | Feld | Wert | Erforderlich | Standardwert | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------ | | `expires_after_days` | Die Anzahl der Kalendertage, nach denen eine ausstehende Konbini-Zahlung abläuft. Gültige Werte liegen zwischen 1 und 60 Tagen. Weitere Informationen finden Sie unter [Ablaufdatum](https://docs.stripe.com/payments/konbini/accept-a-payment.md#checkout-additional-options-expiration). | Nein | 3 | #### Ablaufdatum Ausstehende Konbini-Zahlungen laufen am angegebenen Datum kurz vor Mitternacht (23:59:59 JST) ab. Wenn beispielsweise `expires_after_days` auf 2 festgelegt ist und der PaymentIntent am Montag bestätigt wird, läuft die ausstehende Konbini-Zahlung am Mittwoch um 23:59:59 japanischer Zeit (UTC+9) ab. #### Von Stripe gehostete Seite ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Vollständige eingebettete Seite ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` #### Telefonnummer Auf dem Konbini-Zahlungsformular können Ihre Kund/innen optional eine Telefonnummer als ihre Bestätigungsnummer angeben. Dies vereinfacht den Bezahlvorgang in Geschäften, in dem die Benutzeroberfläche vor Ort den/die Kund/in auffordert, einen Zahlungscode und seine/ihre Bestätigungsnummer anzugeben. Beides spiegelt sich in den Zahlungsanweisungen wider, die Stripe anzeigt, nachdem der/die Kund/in sein/ihr Zahlungsformular übermittelt hat. Wenn Ihr/e Kund/in keine Telefonnummer angibt, generiert Stripe eine zufällige Bestätigungsnummer. Stripe blockiert aktiv Telefonnummern, die nur aus Nullen bestehen. ### Auf die von Stripe gehostete Gutscheinseite weiterleiten > Anders als bei Kartenzahlungen werden die Kundinnen/Kunden bei einer Konbini-Zahlung nicht zur [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) weitergeleitet. Nach der erfolgreichen Übermittlung des Checkout-Formulars werden die Kund/innen zur `hosted_voucher_url` weitergeleitet. Die Kund/innen können die Zahlungsanweisungen der gehosteten Seite einsehen, um zu erfahren, wie sie die Zahlung abschließen können. Die Seite kann sowohl auf einem Computer als auch mobil angezeigt werden und lässt sich zudem ausdrucken. Stripe sendet ein [payment_intent.requires_action](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.requires_action)-Ereignis, wenn ein Konbini-Gutschein erfolgreich erstellt wurde. Wenn Sie Ihren Kundinnen/Kunden den Link mit den Zahlungsanweisungen für den Gutschein per E-Mail senden möchten, finden Sie die `hosted_voucher_url` in [payment_intent.next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-hosted_voucher_url). Erfahren Sie mehr darüber, wie Sie [einen PaymentIntent mit Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). Auf der Seite mit den [Branding-Einstellungen](https://dashboard.stripe.com/account/branding) können Sie die Nutzeroberfläche für Ihre Kund/innen anpassen. Folgende Anpassungen sind für Gutscheine möglich: - **Symbol** – Ihr Markenlogo und Ihr offizieller Firmenname - **Akzentfarbe**: Farbe für die Schaltfläche „Nummer kopieren“ - **Markenfarbe** – Die Hintergrundfarbe ### Bestellungen abwickeln Da Konbini eine Zahlungsmethode mit verzögerter Benachrichtigung ist, müssen Sie eine Methode wie *Webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) nutzen, um den Zahlungsstatus zu überwachen und die *Ausführung* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) der Bestellung vorzunehmen. Erfahren Sie mehr zum [Einrichten von Webhooks und der Abwicklung von Bestellungen](https://docs.stripe.com/checkout/fulfillment.md). Die folgenden Ereignisse werden übermittelt, wenn sich der Zahlungsstatus ändert: | Ereignisname | Beschreibung | Nächste Schritte | | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Die Kund/innen haben das Checkout-Formular erfolgreich übermittelt. Stripe hat den Konbini-Gutschein generiert. Sie können die `hosted_voucher_url` per E-Mail an die Kund/innen senden, falls sie den Konbini-Gutschein verloren haben. | Warten Sie, bis die Kund/innen in einem japanischem Minimarkt (Konbini) bezahlt haben. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Die Kund/innen haben den Konbini-Gutschein erfolgreich bezahlt. Der `PaymentIntent` geht in den Status `succeeded` über. | Verarbeiten Sie die Bestellung der Kund/innen. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Der Konbini-Gutschein ist abgelaufen oder die Zahlung ist aus einem anderen Grund fehlgeschlagen. Der `PaymentIntent` kehrt zum Status `requires_payment_method` zurück. | Kontaktieren Sie den Kunden/die Kundin per E-Mail und fordern Sie eine neue Bestellung von ihm/ihr an. | ## Integration testen Wählen Sie beim Testen Ihrer Checkout-Integration „Konbini“ als Zahlungsmethode aus und klicken Sie auf **Bezahlen**. Geben Sie die folgenden Werte im Bezahlformular an, um verschiedene Szenarien zu testen. Sie können die Tests entweder mit einer speziellen Bestätigungsnummer oder einem E-Mail-Muster durchführen. Wenn beides angegeben wird, gilt das Verhalten der speziellen Bestätigungsnummer. | E-Mail | Bestätigungsnummer | Beschreibung | | ---------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{any_prefix}@{any_domain}` | `11111111110` | Simuliert eine Konbini-Zahlung, die nach 3 Minuten erfolgreich ausgeführt wurde, wobei der Webhook `payment_intent.succeeded` danach eingeht. Beispiel: hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Simuliert eine Konbini-Zahlung, die sofort erfolgreich ausgeführt wurde, wobei der Webhook `payment_intent.succeeded` danach eingeht. Beispiel: succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Simuliert eine Konbini-Zahlung, die sofort abläuft, wobei der Webhook `payment_intent.payment_failed` danach eingeht. Das Feld `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) wird auf die aktuelle Zeit festgelegt, unabhängig davon, worauf der Parameter `expires_after_days` oder `expires_at` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) festgelegt wird. Beispiel: expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Simuliert eine Konbini-Zahlung, die nie erfolgreich ist. Sie läuft in 3 Minuten ab, und der Webhook `payment_intent.payment_failed` geht danach ein. Das Feld `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) wird auf 3 Minuten in der Zukunft festgelegt, unabhängig davon, auf welchen Wert der Parameter `expires_after_days` oder `expires_at` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) festgelegt ist. Beispiel: expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Simuliert eine Konbini-Zahlung, die nie erfolgreich ist. Sie läuft entsprechend der Angabe im Feld `expires_at` in den `next_action.konbini_display_details` für die angegebenen Parameter in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) ab, und der Webhook `payment_intent.payment_failed` trifft danach ein. Beispiel: fill_never@test.com | Um Fehler bei der [Bestätigungsnummer](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number) zu testen, können Sie die folgenden Werte verwenden: - `01234567890` simuliert die Ablehnung einer Bestätigungsnummer. - `00000000000` führt zu einem Validierungsfehler. ## Ablauf und Stornierung Nach Ablauf der im Parameter `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) angegebenen Zeit können die Kundinnen und Kunden den Zahlungsvorgang für eine ausstehende Konbini-Zahlung an einem Kiosk in einem Convenience-Store nicht mehr *einleiten*. Haben sie jedoch vor Ablauf der Frist einen gültigen Zahlungsbeleg ausgestellt, können sie die Zahlung möglicherweise auch nach Ablauf der `expires_at`-Zeit an der Kasse *abwickeln*. Es gibt eine Pufferzeit, um in einem solchen Fall vorzeitige Zahlungsausfälle zu vermeiden. Der Status des PaymentIntent ändert sich in `requires_payment_method`. Zu diesem Zeitpunkt können Sie den PaymentIntent stornieren oder mit einer anderen Zahlungsmethode bestätigen. Sie können eine ausstehende Konbini-Zahlung auch nach Bestätigung und vor dem durch `next_action.konbini_display_details.expires_at` angegebenen Zeitpunkt stornieren. Auch durch die Aktualisierung des PaymentIntent oder die Bestätigung mit einer anderen Zahlungsmethode wird die bestehende Konbini-Zahlung implizit storniert. Wenn der Kunde oder die Kundin die Konbini-Zahlung gerade im Minimarkt bezahlt, schlägt die Stornierungsanfrage fehl. Es kann erneut versucht werden, die Stornierung durchzuführen, wenn die Kundin oder der Kunde den Zahlungsversuch abbricht und der Einzahlungsschein abläuft. Beachten Sie, dass [Probleme mit der vorübergehenden Verfügbarkeit von Zahlungsmethoden](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) auch (sowohl explizite als auch implizite) Stornoanfragen betreffen. > Wenn Sie eine ausstehende Zahlung stornieren, verlieren die ursprünglichen Zahlungsanweisungen ihre Gültigkeit. Für die meisten Anwendungsfälle empfehlen wir Ihnen, Ihre Kundin/Ihren Kunden zu kontaktieren, um sie/ihn über die Stornierung zu informieren. > > Wenn Sie einen PaymentIntent mit dem Status `requires_action` erfolgreich erneut bestätigen, erstellen wir neue Anweisungen und eine neue `hosted_voucher_url`. Sie müssen Ihre Kund/innen darüber in Kenntnis setzen. ## Rückerstattungen Es ist möglich, Konbini-Zahlungen über das [Dashboard](https://dashboard.stripe.com/payments) oder die [API](https://docs.stripe.com/api.md#create_refund) zurückzuerstatten. Um eine Rückerstattung abzuwickeln, die direkt auf das Bankkonto eines/einer Kund/in eingegangen ist, müssen die Kund/innen die Kontoverbindung angeben, an die die Rückerstattung erfolgen soll. Stripe kontaktiert die Kund/innen über die E-Mail-Adresse aus den Abrechnungsdaten für die Zahlungsmethode und fordert die benötigten Daten an. Nachdem wir die Bankdaten erhalten haben, bearbeiten wir die Rückerstattung automatisch. Der Status der Rückerstattung ändert sich wie folgt: | Ereignis | Rückerstattungsstatus | | -------------------------------------------------------------------------------------------------------- | --------------------- | | Rückerstattung wird erstellt | `requires_action` | | Der Kunde/Die Kundin reicht die Bankkontodaten ein und Stripe beginnt, die Rückerstattung zu bearbeiten. | `pending` | | Die Rückerstattung wird von der Bank des Kunden/der Kundin erwartet | `succeeded` | | Die Bank des Kunden/der Kundin überweist die Gelder zurück an Stripe. | `requires_action` | | Die Rückerstattung erfolgt `requires_action` 45 Tage nach Erstellung | `failed` | | Rückerstattung wurde aufgrund des Status `requires_action` storniert | `canceled` | Wenn die Bank des Kunden/der Kundin die Überweisung nicht erfolgreich abschließen kann, wird das Geld an Stripe zurückgesendet und die Rückerstattung wechselt in den Status `requires_action`. Dies kann passieren, wenn der Name des Kontoinhabers/der Kontoinhaberin nicht mit den Daten der Empfängerbank übereinstimmt oder wenn die angegebene Bankkontonummer einen Tippfehler enthält. In diesen Fällen informieren wir den Kunden/die Kundin per E-Mail über den Fehler und bitten ihn/sie, seine/ihre Bankkontodaten erneut einzureichen. Wenn die Kontodaten nicht innerhalb von 45 Tagen angegeben werden, wechselt der Status der Rückerstattung zu `failed` und wir senden das Ereignis [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Das bedeutet, dass Stripe die Rückerstattung nicht bearbeiten kann und Sie [die Gelder außerhalb von Stripe an Ihre Kundinnen/Kunden zurückerstatten müssen](https://docs.stripe.com/refunds.md#failed-refunds). Das Feld [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) der Rückerstattung enthält die E-Mail-Adresse, an die die Rückerstattung gesendet wurde. Während eine Rückerstattung auf eine Antwort des Kunden/der Kundin wartet, finden Sie Details zu der E-Mail, die an den Kunden/die Kundin gesendet wurde, unter [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) auf der Rückerstattung. Für jede einzelne Rückerstattung (einschließlich jeder Teilrückerstattung) können Transaktionsgebühren anfallen. Bitte wenden Sie sich an Ihren Ansprechpartner bei Stripe, um mehr darüber zu erfahren. ### Rückerstattungen testen Sie können das Erstattungsverhalten im Test-Modus testen. Verwenden Sie dazu die folgenden Testbankkonten auf der Seite zur Erfassung von Bankkontodaten, die in der an die Kund/innen gesendeten E-Mail verlinkt ist. Bankkontodaten außerhalb dieser Testbankkonten werden nicht akzeptiert. | Bankleitzahl | Konto | Typ | | ------------ | ------------------------------------------------------------- | ------------------------------ | | `1100000` | `0001234` | Rückerstattung erfolgreich. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Rückerstattung fehlgeschlagen. | #### Ablaufdatum von Rückerstattungen testen Sie können einen API-Aufruf durchführen, um den Ablauf einer Rückerstattung im Testmodus zu simulieren. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ``` ## See also - [Checkout-Ausführung](https://docs.stripe.com/checkout/fulfillment.md) - [Checkout anpassen](https://docs.stripe.com/payments/checkout/customization.md) # Direkt-API > This is a Direkt-API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=direct-api. Stripe-Nutzer/innen in Japan können Konbini-Zahlungen von Kund/innen in Japan mit der Payment Intents API und der Payment Methods API annehmen. Kund/innen zahlen, indem sie einen Zahlungscode, eine Bestätigungsnummer und die Option Barzahlung in japanischen Bedarfsartikelgeschäften angeben. Stripe benachrichtigt Sie, wenn die Zahlung abgeschlossen ist. ## Stripe einrichten [Serverseitig] Als Erstes benötigen Sie ein Stripe-Konto. [Registrieren Sie sich jetzt](https://dashboard.stripe.com/test/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' ``` ## PaymentIntent erstellen [Serverseitig] Stripe verwendet ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md)-Objekt, um Ihre Absicht darzustellen, Zahlungen von Kundinnen/Kunden einzuziehen und Statusänderungen vom Konbini PaymentIntent Erstellung bis zum Abschluss zu verfolgen. Erstellen Sie ein PaymentIntent auf Ihrem Server mit einem Betrag und der Währung `JPY` (andere Währungen werden von Konbini nicht unterstützt). Wenn Sie bereits eine Integration mit der [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md) haben, fügen Sie `konbini` zur Liste der [Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) für Ihren PaymentIntent hinzu. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d "payment_method_types[]=konbini" \ -d "payment_method_options[konbini][product_description]=Tシャツ" \ -d "payment_method_options[konbini][expires_after_days]=3" ``` ### Client-Geheimnis abrufen Im PaymentIntent 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 PaymentIntent {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/payment_intents/object.md#payment_intent_object-client_secret) in Ihr Bezahlformular ein. Rufen Sie in Ihrem serverseitigen Code das Client-Geheimnis aus dem PaymentIntent ab: #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ### Zusätzliche Optionen für Zahlungsmethoden Optionen für Zahlungsmethoden können unter dem Schlüssel `konbini` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini) angegeben werden. | Feld | Wert | Erforderlich | Standardwert | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------ | | `expires_after_days` | Die Anzahl der Kalendertage, bevor eine ausstehende Konbini-Zahlung abläuft. Gültige Werte liegen zwischen 1 und 60 Tagen. Weitere Informationen finden Sie unter [Ablaufdatum](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Nein | 3 | | `expires_at` | Ein Unix-Zeitstempel, an dem die ausstehende Konbini-Zahlung abläuft. Dieses Ablaufdatum muss mehr als 30 Minuten nach der aktuellen Uhrzeit und weniger als 60 Tage nach Anwendung der Einstellung auf den PaymentIntent liegen. Weitere Informationen finden Sie unter [Ablaufdatum](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Nein | *nicht festgelegt* | | `product_description` | Eine Produktbeschreibung mit bis zu 22 Zeichen, die den Kundinnen und Kunden im Minimarkt angezeigt wird. Wenn nicht in Shift JIS ([JIS X 0208:1997](https://en.wikipedia.org/wiki/Shift_JIS)) enthaltene Zeichen vorhanden sind, wird ein Fehler zurückgegeben. Es ist zwar nicht erforderlich, wir empfehlen jedoch, diese Option festzulegen. Andernfalls greifen wir auf einen generischen Platzhalter zurück, den wir nach eigenem Ermessen auswählen, zum Beispiel お買い上げ商品・サービス. | Nein | *Platzhalter* | #### Ablaufdatum Ausstehende Konbini-Zahlungen laufen am angegebenen Datum kurz vor Mitternacht (23:59:59 JST) ab. Wenn beispielsweise `expires_after_days` auf 2 festgelegt ist und der PaymentIntent am Montag bestätigt wird, läuft die ausstehende Konbini-Zahlung am Mittwoch um 23:59:59 japanischer Zeit (UTC+9) ab. Die Einstellung `expires_at` ist ein Unix-Zeitstempel in Sekunden. Wenn der Wert weniger als 30 Minuten von der aktuellen Uhrzeit entfernt ist oder die PaymentIntent-Bestätigung weniger als 30 Minuten vor dem Ablaufdatum erfolgt, wird ein Fehler zurückgegeben. `expires_after_days` und `expires_at` schließen sich gegenseitig aus. Wenn beide Werte festgelegt sind, wird ein Fehler zurückgegeben. Beide Werte sind zudem optional, und wenn keiner von beiden festgelegt ist, ist die Ablaufzeit standardmäßig 3 Tage nach der Erstellung des PaymentIntent um 23:59 japanischer Zeit (UTC+9). ### Fehlerbehebung Anfragen an PaymentIntents, wie z. B. das Erstellen, Aktualisieren und Bestätigen, können fehlschlagen. Sie können den `error` der API-Antwort überprüfen, um den Grund dafür festzustellen, und in vielen Fällen die Anfrage erneut senden oder den Fehler beheben. Insbesondere wenn Sie einen Wert für die Zahlungsoptionen-Option `confirmation_number` angeben, sollten Sie bestimmte von uns zurückgegebene Fehlercodes behandeln. Weitere Informationen finden Sie unter [Bestätigungsnummern](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number). Die Zahlungsmethode kann aufgrund von Ausfällen, geplanten Wartungsarbeiten oder Ihren Nutzungsgewohnheiten zeitweise nicht verfügbar sein. Weitere Informationen finden Sie unter [Umgang mit vorübergehenden Verfügbarkeitsproblemen](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues). ## Angaben zur Zahlungsmethode erfassen [Clientseitig] Erstellen Sie ein Zahlungsformular auf Ihrem Client, um die erforderlichen Rechnungsdaten von den Kund/innen zu erfassen: | Feld | Wert | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `name` | Der vollständige Kundenname, gekürzt auf maximal 20 Zeichen auf Benutzeroberflächenelementen und Belegen der Bedarfsartikelgeschäfte. Nicht in Shift JIS ([JIS X 0208:1997](https://en.wikipedia.org/wiki/Shift_JIS)) enthaltene Zeichen werden weggelassen oder ersetzt. | | `email` | Die vollständige E-Mail-Adresse des/der Kund/in. | In diesem Beispielformular wird auch eine Telefonnummer erfasst, die als von den Kund/innen bereitgestellte Bestätigungsnummer verwendet werden soll: ```html
``` ## Zahlung an Stripe übermitteln [Clientseitig] Verwenden Sie Stripe.js zur Übermittlung von Zahlungen an Stripe, wenn Kundinnen/Kunden mit Konbini bezahlen möchten. [Stripe.js](https://docs.stripe.com/payments/elements.md) ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Fügen Sie das Stripe.js-Skript auf Ihrer Bezahlseite ein, indem Sie es zum `head` der HTML-Datei hinzufügen. ```html Checkout ``` Erstellen Sie auf Ihrer Bezahlseite eine Instanz von Stripe.js mit dem folgenden JavaScript. ```javascript // Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` Verwenden Sie [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) und das [Client-Geheimnis](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) des `PaymentIntent`-Objekts, das Sie in [Schritt 2](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-create-payment-intent) erstellt haben, um die Rechnungsdaten der Kundin/des Kunden zu übermitteln. Bei Bestätigung öffnet Stripe automatisch ein Modal, in dem Ihren Kund/innen die Konbini-Zahlungsanweisungen angezeigt werden. ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, } ); // Stripe.js will open a modal to display the Konbini payment instructions to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } }); ``` > Die Ausführung von `stripe.confirmKonbiniPayment` kann einige Sekunden dauern. Während dieser Zeit sollten Sie Ihr Formular deaktivieren, damit keine erneute Absendung erfolgen kann. Lassen Sie stattdessen ein Wartesymbol einblenden, wie beispielsweise eine Sanduhr. Tritt ein Fehler auf, lassen Sie eine Fehlermeldung für den Kunden oder die Kundin anzeigen, aktivieren Sie das Formular erneut und blenden Sie das Wartesymbol aus. ### Zusätzliche Optionen für Zahlungsmethoden Bei der Bestätigung eines Konbini-PaymentIntent können Sie zusätzliche Optionen für Zahlungsmethoden in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-payment_method_options-konbini) unter dem Schlüssel `konbini` angeben. | Feld | Wert | Erforderlich | Standardwert | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------------ | | `confirmation_number` | Eine 10- bis 11-stellige numerische Zeichenfolge. Diese Zeichenfolge wird auch in den Zahlungsanweisungen angezeigt und kann nicht ausschließlich aus Nullen bestehen. Wenn Sie keinen Wert für `confirmation_number` angeben, generiert Stripe einen zufälligen Wert für Sie. Weitere Informationen finden Sie unter [Bestätigungsnummern](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number). | Nein | *nicht festgelegt* | #### Bestätigungsnummern Ihre Kund/innen müssen sich auf die `confirmation_number` beziehen, wenn sie ihre Zahlung abschließen. Wenn Sie diesen Wert festlegen möchten oder den Kund/innen ermöglichen, den Wert festzulegen, wird als zu verwendender Wert die Telefonnummer der Kund/innen empfohlen. Eine `confirmation_number` kann auch während der Erstellung des PaymentIntent auf Serverseite festgelegt werden, wird aber in der Regel bei Bestätigung des PaymentIntent von den Kund/innen auf Client-Seite festgelegt. Sie kann ab der PaymentIntent-Erstellung bis zur PaymentIntent-Bestätigung jederzeit geändert werden. Wenn eine angegebene `confirmation_number` zu häufig bei den laufenden Transaktionen für Minimärkte vorkommt, kann sie bei der PaymentIntent-Bestätigung abgelehnt werden. Der in diesem Fall zurückgegebene Fehlercode ist `payment_intent_konbini_rejected_confirmation_number` (tritt nur bei Bestätigung eines PaymentIntent auf). Stripe blockiert bei der Erstellung des PaymentIntent sowie bei Aktualisierung und Bestätigung proaktiv Bestätigungsnummern, die nur aus Nullen bestehen. Stellen Sie daher sicher, dass Sie diesen Wert nicht verwenden bzw. die Kund/innen nicht die Möglichkeit haben, ihn zu verwenden. ### Fehlerbehebung Die clientseitige Bestätigung eines PaymentIntent kann ebenfalls fehlschlagen. Sie sollten den `error`-Rückgabewert überprüfen, um den Grund für den Fehler zu ermitteln. Diesen können Sie wenn möglich dem Kunden oder der Kundin anzeigen oder ihn korrigieren und es erneut versuchen. ## Optional: Ihren Kund/innen Ihre eigenen Anweisungen für Konbini-Zahlungen anzeigen [Clientseitig] Wir empfehlen, Stripe.js für die Anzeige der Konbini-Zahlungsanweisungen mit `confirmKonbiniPayment` zu nutzen. Sie können Ihren Kund/innen Ihre eigenen Zahlungsanweisungen jedoch auch manuell anzeigen. Um die nächste Aktion, die Anzeige der Konbini-Details für Ihre Kund/innen manuell abzuwickeln, verwenden Sie `handleActions: false` beim Aufruf von `stripe.confirmKonbiniPayment` in [Schritt 4](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-submit-payment). ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, }, {handleActions: false}, ); // This async function finishes when the PaymentIntent is confirmed if (result.error) { // Display error to your customer var errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } else { // A Konbini PaymentIntent was successfully created var amount = result.paymentIntent.amount; var currency = result.paymentIntent.currency; var details = result.paymentIntent.next_action.konbini_display_details; for (var store in details.stores) { // Do something with each store's details } var expires_at = details.expires_at; // Display Konbini details to end customer } }); ``` ### Präsentation Sie geben an, wie Sie den Kund/innen Zahlungsanweisungen präsentieren möchten. Ihre Anweisungen müssen mindestens Folgendes enthalten: - Für den Kauf relevante allgemeine Informationen, wie z. B. die Produktbeschreibung, der Betrag und das Ablaufdatum der Zahlung. - Zahlungs- und Bestätigungscodes für jede Minimarkt-Kette, die über die PaymentIntent-Bestätigung empfangen wurden. - Anweisungen für die Kund/innen, wie sie die Konbini-Zahlung auszuführen haben. Ein Beispiel für eine Zahlungsanweisung lautet wie folgt: ### Anleitung für Konbini-Zahlungen 1. Suchen Sie den Zahlungscode und die Bestätigungsnummer für die Minimarkt-Kette, bei der Sie zu bezahlen beabsichtigen. 1. Geben Sie im Minimarkt den Zahlungscode und die Bestätigungsnummer an das POS-Terminal oder den/die Kassierer/in weiter. 1. Bewahren Sie nach Abschluss der Zahlung den Zahlungsbeleg für Ihre Unterlagen auf. 1. Kontaktieren Sie uns, wenn Sie Fragen haben. ## Optional: Zahlung an Stripe von Ihrem Server aus übermitteln [Serverseitig] Wir empfehlen, die Abwicklung Konbini-Zahlungen auf Client-Seite mit [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) Stripe.js zu überlassen. Wenn Sie Stripe.js verwenden, können Sie Ihre Integration um weitere Zahlungsmethoden erweitern. Sie können Ihre Kundinnen/Kunden jedoch mit den folgenden Schritten auch manuell an Ihren Server weiterleiten: - Legen Sie `confirm` auf `true` fest, wenn Sie Ihren [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) vom Typ `konbini` erstellen oder einen bestehenden PaymentIntent [bestätigen](https://docs.stripe.com/api/payment_intents/confirm.md). Sie müssen die Eigenschaften `payment_method_data.billing_details.name` und `payment_method_data.billing_details.email` angeben. Optional können Sie auch `payment_method_options.konbini.confirmation_number` oder andere [payment_method_options](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options) angeben. Durch Angabe von `payment_method_data` erstellen wir eine *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) und verwenden sie sofort mit diesem PaymentIntent. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d confirm=true \ -d "payment_method_types[]=konbini" \ -d "payment_method_data[type]=konbini" \ -d "payment_method_data[billing_details][name]=Jenny Rosen" \ --data-urlencode "payment_method_data[billing_details][email]=jenny@example.com" ``` Der erstellte `PaymentIntent` hat den Status `requires_action`, und der Typ für `next_action` ist `konbini_display_details`. #### JSON ```json {"status": "requires_action", "next_action": { "type": "konbini_display_details", "konbini_display_details": { "expires_at": 1642431599, "hosted_voucher_url": "https://payments.stripe.com/konbini/voucher/...", "stores": { "familymart": { "confirmation_number": "12345678901", "payment_code": "123456" }, ... } } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", "amount": 1099, "client_secret": "pi_1G1sgdKi6xqXeNtkldRRE6HT_secret_h9B56ObhTN72fQiBAuzcVPb2E", "confirmation_method": "automatic", "created": 1642126547, "currency": "jpy", "livemode": true, "charges": { "data": [], "object": "list", "has_more": false, "url": "/v1/charges?payment_intent=pi_1G1sgdKi6xqXeNtkldRRE6HT" }, "payment_method_options": { "konbini": { "confirmation_number": null, "expires_after_days": null, "expires_at": null, "product_description": null } }, "payment_method_types": [ "konbini" ] } ``` - Leiten Sie den Kunden bzw. die Kundin auf die URL weiter, die in der Eigenschaft `next_action.konbini_display_details.hosted_voucher_url` angegeben ist. Das hier gezeigte Codebeispiel dient nur zur Veranschaulichung. Die Methode zur Weiterleitung kann in Ihrem Web-Framework abweichen. #### Ruby ```ruby if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'konbini_display_details' url = payment_intent.next_action.konbini_display_details.hosted_voucher_url redirect(url) end ``` Wir empfehlen die Verwendung von [Webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks), um den Zahlungsstatus zu bestätigen. ## Optional: Zahlungsanweisungen anpassen Auf der Seite [Branding-Einstellungen](https://dashboard.stripe.com/account/branding) können Sie anpassen, was Ihren Kundinnen und Kunden angezeigt wird. Wenn [ein Kunde/eine Kundin](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) mit dem PaymentIntent verknüpft wurde, wird für die gehosteten Zahlungsanweisungen die bevorzugte Sprache der Kundinnen/Kunden verwendet. Andernfalls wird die Browsersprache der Kundin/des Kunden verwendet. Sie können die folgenden Markeneinstellungen auf die gehosteten Zahlungsanweisungen anwenden: - **Symbol**: Ihr Markenlogo und Unternehmensname - **Logo**: Ihr Markenlogo - **Akzentfarbe**: Die Farbe für die Schaltfläche „Drucken“ - **Markenfarbe**: Die Hintergrundfarbe ## Optional: Zahlungsanweisungen via E-Mail senden Sie können Konbini-Zahlungsanweisungen und Erinnerungs-E-Mails auf der Seite [E-Mail-Einstellungen](https://dashboard.stripe.com/settings/emails) im Dashboard aktivieren. Nach der Aktivierung von Anweisungs-E-Mails sendet Stripe E-Mails mit Zahlungsanweisungen nachdem der PaymentIntent bestätigt wurde. Diese E-Mails enthalten den Zahlungscode, die Bestätigungsnummer und andere Details, um eine Zahlung in einem Minimarkt zu tätigen. Dies beinhaltet einen Link zur gehosteten Seite mit Zahlungsanweisungen. ## Optional: Erinnerungen per E-Mail senden Sie können Zahlungserinnerungs-E-Mails aktivieren und die maximale Anzahl von Erinnerungs-E-Mails pro PaymentIntent auf der Seite [E-Mail-Einstellungen](https://dashboard.stripe.com/settings/emails) im Dashboard konfigurieren. Stripe sendet höchstens eine Erinnerungs-E-Mail pro Tag, bis eine Zahlung erfolgreich ist, abläuft oder storniert wird. > In Testumgebungen werden Anweisungs- und Erinnerungs-E-Mails nur an E-Mail-Adressen gesendet, die mit dem Stripe-Konto verknüpft sind. ## Ereignisse nach Zahlung verarbeiten [Serverseitig] Bei Konbini handelt es sich um eine Zahlungsmethode mit [verzögerter Benachrichtigung](https://docs.stripe.com/payments/payment-methods.md#payment-notification). Daher sind die Geldmittel nicht sofort verfügbar. Es kann vorkommen, dass Kundinnen und Kunden die ausstehende Konbini-Zahlung nicht sofort bei Abschluss des Bestellvorgangs im Minimarkt erledigen. Nach Abschluss einer ausstehenden Konbini-Zahlung sendet Stripe das Ereignis [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) für diese Zahlung. Verwenden Sie das Dashboard oder erstellen Sie einen *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)-Handler, um diese Ereignisse zu erhalten und Aktionen auszuführen. Beispiele für Aktionen sind u. a. das Senden einer E-Mail zur Bestellbestätigung an Ihre Kundinnen/Kunden, das Protokollieren des Verkaufs in einer Datenbank oder das Starten eines Versand-Workflows. Wenn es eindeutig ist, dass eine ausstehende Konbini-Zahlung nicht durchgeführt wurde, in der Regel etwa eine Stunde nach Ablauf der Frist, sendet Stripe das Ereignis [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed). | Ereignis | Beschreibung | Nächste Schritte | | -------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Die ausstehende Konbini-Zahlung wurde erstellt. | Senden Sie den/die Kund/in optional auf die Seite mit den Zahlungsanweisungen. Warten Sie, bis der/die Kund/in die Konbini-Zahlung durchführt. | | `payment_intent.succeeded` | Der/die Kundin hat vor Ablauf für die ausstehende Konbini-Zahlung bezahlt. | Wickeln Sie die Bestellung der Waren oder Dienstleistungen ab, die der/die Kund/in gekauft hat. | | `payment_intent.payment_failed` | Der/die Kund/in hat die ausstehende Konbini-Zahlung vor Ablauf nicht bezahlt. | Kontaktieren Sie Ihre/n Kund/in per E-Mail oder Push-Benachrichtigung, um eine andere Zahlungsmethode anzufordern. | > Während des Testens kann sich der Status eines Konbini-PaymentIntent automatisch basierend auf den gesendeten Parametern, z. B. `email`, ändern. Sie können alle Aktualisierungen im [Dashboard](https://dashboard.stripe.com/test/payments) bestätigen. Weitere Informationen finden Sie unter [Integration testen](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-test-integration). ### Ereignisse empfangen und Geschäftsaktionen ausführen #### Manuell Im Stripe-Dashboard können Sie alle Stripe-Zahlungen anzeigen, Zahlungsbelege per E-Mail versenden, Auszahlungen abwickeln oder fehlgeschlagene Zahlungen erneut durchführen. - [Testzahlungen im Dashboard anzeigen](https://dashboard.stripe.com/test/payments) #### Benutzerdefinierter Code Erstellen Sie einen Webhook-Handler, um Ereignisse zu überwachen und benutzerdefinierte asynchrone Zahlungsabläufe zu erstellen. Mit der Stripe-CLI können Sie Ihre Webhook-Integration lokal testen und Fehler beheben. - [Erstellen eines benutzerdefinierten Webhooks](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) ## Integration testen Legen Sie `payment_method.billing_details.email` beim Testen auf die folgenden Werte fest, wenn Sie [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) aufrufen, um verschiedene Szenarien zu testen. Sie können die Tests entweder mit einer speziellen Bestätigungsnummer oder einem E-Mail-Muster durchführen. Wenn beides angegeben wird, gilt das Verhalten der speziellen Bestätigungsnummer. | E-Mail | Bestätigungsnummer | Beschreibung | | ---------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{any_prefix}@{any_domain}` | `11111111110` | Simuliert eine Konbini-Zahlung, die nach 3 Minuten erfolgreich ausgeführt wurde, wobei der Webhook `payment_intent.succeeded` danach eingeht. Beispiel: hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Simuliert eine Konbini-Zahlung, die sofort erfolgreich ausgeführt wurde, wobei der Webhook `payment_intent.succeeded` danach eingeht. Beispiel: succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Simuliert eine Konbini-Zahlung, die sofort abläuft, wobei der Webhook `payment_intent.payment_failed` danach eingeht. Das Feld `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) wird auf die aktuelle Zeit festgelegt, unabhängig davon, worauf der Parameter `expires_after_days` oder `expires_at` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) festgelegt wird. Beispiel: expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Simuliert eine Konbini-Zahlung, die nie erfolgreich ist. Sie läuft in 3 Minuten ab, und der Webhook `payment_intent.payment_failed` geht danach ein. Das Feld `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) wird auf 3 Minuten in der Zukunft festgelegt, unabhängig davon, auf welchen Wert der Parameter `expires_after_days` oder `expires_at` in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) festgelegt ist. Beispiel: expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Simuliert eine Konbini-Zahlung, die nie erfolgreich ist. Sie läuft entsprechend der Angabe im Feld `expires_at` in den `next_action.konbini_display_details` für die angegebenen Parameter in den [Optionen für Zahlungsmethoden](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days) ab, und der Webhook `payment_intent.payment_failed` trifft danach ein. Beispiel: fill_never@test.com | Um die [Bestätigungsnummer](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number) zu testen, können Sie die folgenden Werte für `payment_method_options[confirmation_number]` verwenden: - `01234567890` ergibt den Fehlercode `payment_intent_konbini_rejected_confirmation_number`. - `00000000000` ergibt einen generischen Validierungsfehlercode. Sie sollten diesen Fehler mithilfe der Vorabvalidierung in Ihrer Integration vermeiden. ## Ablauf und Stornierung Nach Ablauf der im Parameter `expires_at` in [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) angegebenen Zeit können die Kundinnen und Kunden den Zahlungsvorgang für eine ausstehende Konbini-Zahlung an einem Kiosk in einem Convenience-Store nicht mehr *einleiten*. Haben sie jedoch vor Ablauf der Frist einen gültigen Zahlungsbeleg ausgestellt, können sie die Zahlung möglicherweise auch nach Ablauf der `expires_at`-Zeit an der Kasse *abwickeln*. Es gibt eine Pufferzeit, um in einem solchen Fall vorzeitige Zahlungsausfälle zu vermeiden. Der Status des PaymentIntent ändert sich in `requires_payment_method`. Zu diesem Zeitpunkt können Sie den PaymentIntent stornieren oder mit einer anderen Zahlungsmethode bestätigen. Sie können eine ausstehende Konbini-Zahlung auch nach Bestätigung und vor dem durch `next_action.konbini_display_details.expires_at` angegebenen Zeitpunkt stornieren. Auch durch die Aktualisierung des PaymentIntent oder die Bestätigung mit einer anderen Zahlungsmethode wird die bestehende Konbini-Zahlung implizit storniert. Wenn der Kunde oder die Kundin die Konbini-Zahlung gerade im Minimarkt bezahlt, schlägt die Stornierungsanfrage fehl. Es kann erneut versucht werden, die Stornierung durchzuführen, wenn die Kundin oder der Kunde den Zahlungsversuch abbricht und der Einzahlungsschein abläuft. Beachten Sie, dass [Probleme mit der vorübergehenden Verfügbarkeit von Zahlungsmethoden](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) auch (sowohl explizite als auch implizite) Stornoanfragen betreffen. > Wenn Sie eine ausstehende Zahlung stornieren, verlieren die ursprünglichen Zahlungsanweisungen ihre Gültigkeit. Für die meisten Anwendungsfälle empfehlen wir Ihnen, Ihre Kundin/Ihren Kunden zu kontaktieren, um sie/ihn über die Stornierung zu informieren. > > Wenn Sie einen PaymentIntent mit dem Status `requires_action` erfolgreich erneut bestätigen, erstellen wir neue Anweisungen und eine neue `hosted_voucher_url`. Sie müssen Ihre Kund/innen darüber in Kenntnis setzen. ## Umgang mit vorübergehenden Verfügbarkeitsproblemen Die folgenden Fehlercodes weisen auf vorübergehende Probleme mit der Verfügbarkeit der Zahlungsmethode hin: | Code | Beschreibung | Handling | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Für diese Zahlungsmethode, die strengeren Limits als unseren [API-weiten Ratenlimits](https://docs.stripe.com/rate-limits.md) unterliegt, werden in kurzer Zeit zu viele Anfragen gestellt. | Ein erneuter Versuch mit Backoff löst das Problem in der Regel. Bei anhaltender starker Nutzung der Zahlungsmethode (z. B. während eines laufenden Verkaufs auf Ihrer Website) können diese Fehler jedoch bei einer gewissen Anzahl von Anfragen weiter auftreten. In diesem Fall können Sie Ihre Kund/innen zusätzlich darum bitten, eine andere Zahlungsmethode zu wählen. | | `payment_method_not_available` | Bei der Zahlungsmethode treten unbekannte vorübergehende Probleme auf, die möglicherweise eine Weile andauern können (z. B. bei Ausfällen oder geplanten Wartungsarbeiten). | Fordern Sie Ihre Nutzer/innen am besten auf, ihren Kauf mit einer anderen Zahlungsmethode abzuschließen oder es zu einem späteren Zeitpunkt erneut zu versuchen. | > Sollten Sie generell mit einer hohen Auslastung rechnen oder eine bevorstehende Veranstaltung planen, kontaktieren Sie uns bitte rechtzeitig im Voraus. ## Rückerstattungen Es ist möglich, Konbini-Zahlungen über das [Dashboard](https://dashboard.stripe.com/payments) oder die [API](https://docs.stripe.com/api.md#create_refund) zurückzuerstatten. Um eine Rückerstattung abzuwickeln, die direkt auf das Bankkonto eines/einer Kund/in eingegangen ist, müssen die Kund/innen die Kontoverbindung angeben, an die die Rückerstattung erfolgen soll. Stripe kontaktiert die Kund/innen über die E-Mail-Adresse aus den Abrechnungsdaten für die Zahlungsmethode und fordert die benötigten Daten an. Nachdem wir die Bankdaten erhalten haben, bearbeiten wir die Rückerstattung automatisch. Der Status der Rückerstattung ändert sich wie folgt: | Ereignis | Rückerstattungsstatus | | -------------------------------------------------------------------------------------------------------- | --------------------- | | Rückerstattung wird erstellt | `requires_action` | | Der Kunde/Die Kundin reicht die Bankkontodaten ein und Stripe beginnt, die Rückerstattung zu bearbeiten. | `pending` | | Die Rückerstattung wird von der Bank des Kunden/der Kundin erwartet | `succeeded` | | Die Bank des Kunden/der Kundin überweist die Gelder zurück an Stripe. | `requires_action` | | Die Rückerstattung erfolgt `requires_action` 45 Tage nach Erstellung | `failed` | | Rückerstattung wurde aufgrund des Status `requires_action` storniert | `canceled` | Wenn die Bank des Kunden/der Kundin die Überweisung nicht erfolgreich abschließen kann, wird das Geld an Stripe zurückgesendet und die Rückerstattung wechselt in den Status `requires_action`. Dies kann passieren, wenn der Name des Kontoinhabers/der Kontoinhaberin nicht mit den Daten der Empfängerbank übereinstimmt oder wenn die angegebene Bankkontonummer einen Tippfehler enthält. In diesen Fällen informieren wir den Kunden/die Kundin per E-Mail über den Fehler und bitten ihn/sie, seine/ihre Bankkontodaten erneut einzureichen. Wenn die Kontodaten nicht innerhalb von 45 Tagen angegeben werden, wechselt der Status der Rückerstattung zu `failed` und wir senden das Ereignis [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Das bedeutet, dass Stripe die Rückerstattung nicht bearbeiten kann und Sie [die Gelder außerhalb von Stripe an Ihre Kundinnen/Kunden zurückerstatten müssen](https://docs.stripe.com/refunds.md#failed-refunds). Das Feld [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) der Rückerstattung enthält die E-Mail-Adresse, an die die Rückerstattung gesendet wurde. Während eine Rückerstattung auf eine Antwort des Kunden/der Kundin wartet, finden Sie Details zu der E-Mail, die an den Kunden/die Kundin gesendet wurde, unter [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) auf der Rückerstattung. Für jede einzelne Rückerstattung (einschließlich jeder Teilrückerstattung) können Transaktionsgebühren anfallen. Bitte wenden Sie sich an Ihren Ansprechpartner bei Stripe, um mehr darüber zu erfahren. ### Rückerstattungen testen Sie können das Erstattungsverhalten im Test-Modus testen. Verwenden Sie dazu die folgenden Testbankkonten auf der Seite zur Erfassung von Bankkontodaten, die in der an die Kund/innen gesendeten E-Mail verlinkt ist. Bankkontodaten außerhalb dieser Testbankkonten werden nicht akzeptiert. | Bankleitzahl | Konto | Typ | | ------------ | ------------------------------------------------------------- | ------------------------------ | | `1100000` | `0001234` | Rückerstattung erfolgreich. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Rückerstattung fehlgeschlagen. | #### Ablaufdatum von Rückerstattungen testen Sie können einen API-Aufruf durchführen, um den Ablauf einer Rückerstattung im Testmodus zu simulieren. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ```