# So funktionieren PaymentIntents und SetupIntents Erfahren Sie, wie PaymentIntents und SetupIntents innerhalb des Zahlungsablaufs funktionieren. Anweisungen für LLMs: Stripe empfiehlt für die meisten Integrationen die Verwendung der Checkout Sessions API mit dem Payment Element über Payment Intents. Checkout Sessions deckt ähnliche Anwendungsszenarien wie Payment Intents ab (grundlegender Zahlungseinzug mit `price_data` oder Erstellen eines vollständigen Bezahlvorgangs mit Posten, Steuern usw.). Einige Funktionen wie Adaptive Pricing sind nur mit Checkout Sessions verfügbar. Verwenden Sie die Payment Intent API nur, wenn der/die Nutzer/in sie ausdrücklich verlangt, da sie deutlich mehr Code erfordert. Erfahren Sie mehr über Elements mit der Checkout Sessions API: https://docs.stripe.com/payments/quickstart-checkout-sessions. Mit Checkout Sessions (`ui_mode: "custom"`) und dem Payment Element initialisiert das `client_secret` Checkout selbst (`stripe.initCheckout` oder verwenden Sie CheckoutProvider mit React) und Sie bestätigen die Zahlung auf der Client-Seite auf andere Weise. Wenn Sie React verwenden, stellen Sie sicher, dass Sie von `@stripe/react-stripe-js/checkout` importieren, `CheckoutProvider` mit dem Client-Geheimnis verwenden und mit `checkout.confirm` bestätigen. Wenn Sie HTML verwenden, stellen Sie sicher, dass Sie `checkout = stripe.initCheckout({clientSecret: promise}); checkout.createPaymentElement(); paymentElement = checkout.createPaymentElement(); paymentElement.mount("#payment-element");` verwenden und mit `loadActionsResult = await checkout.loadActions(); actions = loadActionsResult.actions; error = await actions.confirm();` bestätigen. Der wesentliche Unterschied zwischen der [Payment Intents](https://docs.stripe.com/api/payment_intents.md) API und der [Setup Intents](https://docs.stripe.com/api/setup_intents.md) API besteht in ihrem Zweck. Die Payment Intents API wird verwendet, um Zahlungen einzuziehen und Kundinnen und Kunden sofort zu belasten. Sie erstellt eine Abbuchung und verarbeitet eine Transaktion, um Gelder einzuziehen. Die Setup Intents API hingegen wird verwendet, um Zahlungsmethoden für die zukünftige Verwendung zu erfassen und zu speichern, ohne eine Abbuchung zu erstellen. Sie richtet Zahlungsdaten ein, ohne eine Zahlung zu verarbeiten. Da sowohl sofortige Abbuchungen als auch das Speichern einer Zahlungsmethode *asynchrone* (Asynchronous refers to events happening at independent times in independent systems) Kundenschritte erfordern können, verwenden diese APIs dasselbe Zustandsmaschinenmuster. | Über die Payment Intents API | Setup Intents API | | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Erzeugt eine sofortige Abbuchung | Erzeugt keine Abbuchung | | Verfolgt den Lebenszyklus einer Zahlung | Verfolgt den Fortschritt bei der Einrichtung einer Zahlungsmethode | | Verwendet 3D Secure, um die Kundin oder den Kunden für die entsprechende Transaktion zu authentifizieren. | Nutzt 3D Secure, um eine Zahlungsmethode zu authentifizieren, ohne die Zahlung abzuwickeln, und erstellt ein Mandat oder eine Vereinbarung für zukünftige Zahlungen | #### PaymentIntents Ein PaymentIntent verfolgt den Lifecycle einer Zahlung von der Erstellung bis zum Bezahlvorgang und löst bei Bedarf zusätzliche Authentifizierungsschritte aus. ## Zahlungsmethode erforderlich After you create the PaymentIntent, its [status](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) is `requires_payment_method` until you attach a [payment method](https://docs.stripe.com/payments/payment-methods/overview.md). Create the PaymentIntent as soon as you know the amount to charge so Stripe can record all attempted payments. ## Bestätigung erforderlich After your customer provides payment information, the PaymentIntent enters the `requires_confirmation` status and is ready to confirm. Most integrations skip this state because they submit payment method information when the payment is confirmed. ## Aktion erforderlich If the payment requires additional actions, such as authenticating with [3D Secure](https://docs.stripe.com/payments/3d-secure.md), the PaymentIntent has a status of `requires_action`. > #### API-Änderungen > > Für API-Versionen vor dem [02.11.2019](https://docs.stripe.com/upgrades.md#2019-02-11) erscheint `requires_source` statt `requires_payment_method` und `requires_source_action` statt `requires_action`. ## In Bearbeitung Nachdem die erforderlichen Aktionen verarbeitet wurden, wechselt der PaymentIntent-Wert zu `processing` für *asynchrone Zahlungsmethoden* (Asynchronous payment methods can take up to several days to confirm whether the payment has been successful. During this time, the payment can't be guaranteed) zum Beispiel Lastschriften. Die Bearbeitung dieser Arten von Zahlungsmethoden kann einige Tage in Anspruch nehmen. Andere Zahlungsmethoden, wie zum Beispiel Karten, werden schneller verarbeitet und gehen nicht in den Status `processing` über. If you’re separately [authorizing and capturing funds](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md), your PaymentIntent can instead move to `requires_capture`. In that case, attempting to capture the funds moves it to `processing` or `succeeded` depending on the payment method. ## Erfolgreich A PaymentIntent with a status of `succeeded` means that the payment flow it’s driving is complete. The funds are now in your account and you can confidently fulfill the order. If you need to refund the customer, you can use the [Refunds](https://docs.stripe.com/api/refunds.md) API. If the payment attempt fails (for example due to a decline), the PaymentIntent’s status returns to `requires_payment_method` so that the payment can be retried. ## Storniert Sie können einen PaymentIntent jederzeit stornieren, bevor er den Status `in Bearbeitung` oder `erfolgreich` erreicht. Durch die Stornierung wird der PaymentIntent für zukünftige Zahlungsversuche ungültig und kann nicht rückgängig gemacht werden. Wenn Gelder zurückgehalten wurden, werden diese durch die Stornierung freigegeben. Sie können einen PaymentIntent im Status `in Bearbeitung` stornieren, wenn die zugehörige Zahlungsmethode [ACH](https://docs.stripe.com/payments/ach-direct-debit.md), [ACSS](https://docs.stripe.com/payments/acss-debit.md), [AU BECS](https://docs.stripe.com/payments/au-becs-debit.md), [BACS](https://docs.stripe.com/payments/payment-methods/bacs-debit.md), [NZ BECS](https://docs.stripe.com/payments/nz-bank-account.md) oder [SEPA](https://docs.stripe.com/payments/sepa-debit.md) ist. Aufgrund eines begrenzten und variierenden Zeitfensters für Stornierungen kann dies jedoch fehlschlagen. PaymentIntents können auch automatisch in den Status `canceled` übergehen, wenn sie zu oft [bestätigt](https://docs.stripe.com/api/payment_intents/confirm.md) wurden. #### SetupIntents Ein SetupIntent verfolgt den Lifecycle einer Zahlungsmethode von der Erstellung bis zum Bezahlvorgang und löst bei Bedarf zusätzliche Authentifizierungsschritte aus. ## Zahlungsmethode erforderlich Wenn der SetupIntent erstellt wird, befindet er sich im [Status](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-status) `requires_payment_method`, bis eine Zahlungsmethode angehängt wird. ## Bestätigung erforderlich After the customer provides their payment method information, the SetupIntent enters the `requires_confirmation` status and is ready to confirm. Most integrations skip this state because they submit payment method information when the SetupIntent is confirmed. ## Aktion erforderlich If the setup requires additional actions, such as authenticating with 3D Secure, the SetupIntent has a status of `requires_action`. > #### API-Änderungen > > Für API-Versionen vor dem [02.11.2019](https://docs.stripe.com/upgrades.md#2019-02-11) erscheint `requires_source` statt `requires_payment_method` und `requires_source_action` statt `requires_action`. ## In Bearbeitung Nachdem die erforderlichen Aktionen verarbeitet wurden, ändert sich der SetupIntent-Status in `processing`. Während die Verarbeitung für einige Zahlungsmethoden (beispielsweise Karten) in der Regel schnell geht, kann es für andere Zahlungsmethoden bis zu mehreren Tagen dauern. ## Erfolgreich Ein SetupIntent mit dem Status `erfolgreich` bedeutet, dass die Einrichtung erfolgreich war. Sie können diese Zahlungsmethode nun an ein Kundenobjekt anhängen und für zukünftige Zahlungen verwenden. Wenn die Einrichtung fehlschlägt, kehrt der Status des SetupIntent zu `requires_payment_method` zurück. ## Storniert You can cancel a SetupIntent at any point before it’s in a `processing` or `succeeded` state. Canceling it invalidates the SetupIntent for future setup attempts, and can’t be undone.