# So funktionieren PaymentIntents und SetupIntents Erfahren Sie mehr über den Lifecycle von PaymentIntents und SetupIntents. 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. Coding Agents sollten die Stripe-CLI installieren (`npm i -g @stripe/cli`) und den Befehl `stripe sandbox create --help` ausführen, um eine anonyme Stripe-Sandbox mit funktionierenden API-Schlüsseln einzurichten. Eine Kontoregistrierung ist nicht erforderlich. Sie verwenden die API [PaymentIntents](https://docs.stripe.com/api/payment_intents.md), um sofort eine Zahlung bei Endkundinnen/Endkunden abzuwickeln und Gelder einzuziehen, und die API [SetupIntents](https://docs.stripe.com/api/setup_intents.md), um Zahlungsmethoden-Details für die zukünftige Verwendung zu erfassen und zu speichern, ohne eine Abbuchung vorzunehmen. PaymentIntents erstellen Abbuchungen und wickeln Transaktionen ab, um Gelder einzuziehen. SetupIntents richten Zahlungsdaten ein, verarbeiten jedoch keine Zahlungen. ## Authentifizierung PaymentIntents verwenden *3D Secure* (3D Secure (3DS) provides an additional layer of authentication for credit card transactions that protects businesses from liability for fraudulent card payments) (3DS), um die Endkundin/den Endkunden für die jeweilige Transaktion zu authentifizieren. SetupIntents verwenden 3DS, um eine Zahlungsmethode zu authentifizieren, ohne sie zu belasten, und erstellen dann ein Mandat oder eine Vereinbarung für zukünftige Abbuchungen. ## Lifecycle Sowohl PaymentIntents als auch SetupIntents durchlaufen die gleichen Status. Weitere Informationen zur Zuordnung zwischen den Zahlungsstatus im Dashboard und dem `status` des PaymentIntent finden Sie unter [Zahlungsstatus-Zuordnung](https://docs.stripe.com/payments/payment-intents/verifying-status.md#payment-status-mapping). | Status | PaymentIntent | Intent einrichten | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 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. | Nachdem Sie den SetupIntent erstellt haben, hat er den [status](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-status) `requires_payment_method`, bis Sie eine Zahlungsmethode anhängen. | | 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. | Nachdem Ihre Endkundin/Ihr Endkunde die Zahlungsinformationen angegeben hat, wechselt der SetupIntent in den Status `requires_confirmation` und kann bestätigt werden. Die meisten Integrationen überspringen diesen Status, da sie die Informationen zur Zahlungsmethode übermitteln, wenn der SetupIntent bestätigt wird. | | Aktion erforderlich > #### 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`. | 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` | Wenn die Einrichtung zusätzliche Aktionen erfordert, wie eine Authentifizierung mit 3D Secure, befindet sich die SetupIntent im Status `requires_action`. | | In Bearbeitung | Tritt ein, nachdem die erforderlichen Aktionen ausgeführt wurden und die Zahlung eine *asynchrone Zahlungsmethode* (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) (z. B. Lastschriftverfahren) verwendet. Die Verarbeitung dieser Art von Zahlungsmethoden kann bis zu einigen Tagen dauern. Wenn Sie separat [Gelder autorisieren und erfassen](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md), kann Ihr PaymentIntent stattdessen zu `requires_capture` wechseln. In diesem Fall verschiebt der Versuch der Erfassung der Gelder ihn je nach Zahlungsmethode in `processing` oder `succeeded`. | Tritt auf, nachdem die erforderlichen Aktionen verarbeitet wurden. Einige Zahlungsmethoden (z. B. Karten) können schnell verarbeitet werden, während die Verarbeitung anderer Zahlungsmethoden bis zu mehreren Tagen in Anspruch nehmen kann. | | Erfolgreich | Ein PaymentIntent mit dem Status `succeeded` bedeutet, dass der entsprechende Zahlungsablauf abgeschlossen ist. Das Geld befindet sich nun auf Ihrem Konto und Sie können die Bestellung bedenkenlos ausführen. Wenn Sie der Endkundin/dem Endkunden den Betrag zurückerstatten müssen, können Sie die [Rückerstattungs](https://docs.stripe.com/api/refunds.md)-API verwenden. Wenn der Zahlungsversuch fehlschlägt (z. B. aufgrund einer abgelehnten Zahlung), kehrt der Status des PaymentIntent zu `requires_payment_method` zurück, sodass die Zahlung erneut versucht werden kann. | Ein SetupIntent mit dem Status `succeeded` bedeutet, dass die Einrichtung erfolgreich war. Sie können diese Zahlungsmethode nun einem Kundenobjekt anhängen und die Zahlungsmethode 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 PaymentIntent stornieren, bevor er den Status `processing` oder `succeeded` erreicht. Die Stornierung macht den PaymentIntent für zukünftige Zahlungsversuche ungültig, gibt alle einbehaltenen Gelder frei und kann nicht rückgängig gemacht werden. Sie können einen PaymentIntent auch im Status `processing` stornieren, wenn die 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. Die Stornierung kann jedoch aufgrund eines begrenzten und variierenden Stornierungszeitfensters fehlschlagen. PaymentIntents können auch automatisch zu `canceled` übergehen, wenn sie zu oft [confirmed](https://docs.stripe.com/api/payment_intents/confirm.md) werden. | Sie können einen SetupIntent abbrechen, bevor er den Status `processing` oder `succeeded` erreicht. Durch das Abbrechen wird der SetupIntent für zukünftige Einrichtungsversuche ungültig und kann nicht rückgängig gemacht werden. |