# 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.initCheckoutElementsSdk` oder verwenden Sie CheckoutElementsProvider 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, `CheckoutElementsProvider` mit dem Client-Geheimnis verwenden und mit `checkout.confirm` bestätigen. Wenn Sie HTML verwenden, stellen Sie sicher, dass Sie `checkout = stripe.initCheckoutElements({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 Nachdem Sie den PaymentIntent erstattet haben, ist sein [Status](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) `requires_payment_method`, bis Sie eine [Zahlungsmethode](https://docs.stripe.com/payments/payment-methods/overview.md) hinzufügen. Erstellen Sie den PaymentIntent, sobald Sie den zu berechnenden Betrag kennen, damit Stripe alle versuchten Zahlungen erfassen kann. ## Bestätigung erforderlich Nachdem Ihr Kunde die Zahlungsinformationen angegeben hat, wechselt der PaymentIntent in den Status `requires_confirmation` und ist bereit zur Bestätigung. Die meisten Integrationen überspringen diesen Status, da sie die Informationen zur Zahlungsmethode bei Bestätigung der Zahlung übermitteln. ## Aktion erforderlich Wenn die Zahlung zusätzliche Aktionen erfordert, wie eine Authentifizierung mit [3D Secure](https://docs.stripe.com/payments/3d-secure.md), befindet sich der PaymentIntent im Status `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. Wenn Sie die [Autorisierung und die Einziehung des Betrags](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md) getrennt durchführen, kann Ihr PaymentIntent stattdessen in den Status `requires_capture` wechseln. In diesem Fall wechselt der Status beim Versuch, den Betrag einzuziehen, je nach Zahlungsmethode in `processing` oder `succeeded`. ## Erfolgreich Ein PaymentIntent mit dem Status `succeeded` bedeutet, dass der damit verbundene Zahlungsvorgang abgeschlossen ist. Der Betrag befindet sich nun auf Ihrem Konto und Sie können die Bestellung zuverlässig ausführen. Sollten Sie dem Kunden oder der Kundin eine Rückerstattung gewähren müssen, können Sie die [Refunds](https://docs.stripe.com/api/refunds.md)-API verwenden. Wenn der Zahlungsversuch fehlschlägt (z. B. aufgrund einer Ablehnung), kehrt der Status des PaymentIntent zu `requires_payment_method` zurück, sodass die Zahlung erneut versucht werden kann. ## 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 Nachdem der Kunde oder die Kundin seine bzw. ihre Zahlungsdaten angegeben hat, wechselt der SetupIntent in den Status `requires_confirmation` und ist bereit zur Bestätigung. Die meisten Integrationen überspringen diesen Status, da sie die Zahlungsdaten erst bei der Bestätigung des SetupIntents übermitteln. ## Aktion erforderlich Wenn die Einrichtung zusätzliche Aktionen erfordert, wie eine Authentifizierung mit 3D Secure, befindet sich die SetupIntent im Status `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 Sie können einen SetupIntent jederzeit abbrechen, solange er sich noch nicht im Status `processing` oder `succeeded` befindet. Durch das Abbrechen wird der SetupIntent für zukünftige Einrichtungsversuche ungültig, und dieser Vorgang kann nicht rückgängig gemacht werden.