# Benutzerdefinierte Integration gestalten Erfahren Sie, welche Entscheidungen Sie treffen müssen, bevor Sie eine benutzerdefinierte Payment Element-Integration erstellen. 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. # Checkout Sessions API > This is a Checkout Sessions API for when payment-ui is embedded-components. View the full page at https://docs.stripe.com/payments/payment-element/design-an-integration?payment-ui=embedded-components. Für die meisten Integrationen empfehlen wir die Checkout Sessions API. Sie deckt ähnliche Anwendungsfälle wie Payment Intents ab, darunter Einmalzahlungen und komplexe Bezahlvorgänge mit Steuern, Rabatten, Versandkosten und Abonnements. Es gibt einen Integrationspfad. Weitere Informationen finden Sie im [Quickstart](https://docs.stripe.com/payments/quickstart-checkout-sessions.md)-Leitfaden. # Payment Intents API > This is a Payment Intents API for when payment-ui is elements. View the full page at https://docs.stripe.com/payments/payment-element/design-an-integration?payment-ui=elements. > Die Payment Intents API ist eine Low-Level-API zum Erstellen eines eigenen Bezahlvorgangs. Sie müssen die Checkout-Funktionen, wie Steuern, Rabatte, Versand und Währungsumrechnung, selbst erstellen und verwalten. Für die meisten Integrationen empfehlen wir [Checkout Sessions](https://docs.stripe.com/payments/quickstart-checkout-sessions.md), da diese ähnliche Anwendungsfälle wie Payment Intents und weitere abdecken. Bevor Sie Ihre Payment Element-Integration mit der Payment Intents API erstellen, wählen Sie einen Integrationspfad, der zu Ihren geschäftlichen Anforderungen passt. Das nachfolgende Diagramm gibt einen Überblick über die Integrationsleitfäden, die bei der Integration des Payment Element verfügbar sind. (See full diagram at https://docs.stripe.com/payments/payment-element/design-an-integration) Die nachfolgenden Abschnitte zeigen die beiden Architekturoptionen, die bei der Integration des Payment Element erforderlich sind. ## Auswählen, wann der PaymentIntent bzw. SetupIntent erstellt werden soll Das Payment Element erfasst Zahlungsinformationen von Ihren Kundinnen und Kunden und füllt diese für ein [PaymentIntent](https://docs.stripe.com/api/payment_intents.md)- oder ein [SetupIntent](https://docs.stripe.com/api/setup_intents.md)-Objekt aus. Dabei kommt es darauf an, ob Sie eine Zahlung einziehen oder eine Zahlungsmethode für die zukünftige Verwendung einrichten möchten. Wenn Kundinnen und Kunden den Bezahlvorgang beginnen, können Sie entweder: - **Nur das Payment Element erstellen**: Verzögern Sie die Erstellung und Bestätigung des PaymentIntent oder SetupIntent, bis die Kundin/der Kunde das Zahlungsformular durch Klicken auf die Schaltfläche **Bezahlen** absendet. Wählen Sie diese Option, wenn: - Sie einen mehrseitigen Bezahlvorgang haben, bei dem die Seite zum Erfassen der Zahlungsdetails vor der Seite zur Zahlungsübermittlung oder Bestellübersicht angezeigt wird. Erfahren Sie, wie Sie eine [zweistufige Bestätigung erstellen](https://docs.stripe.com/payments/build-a-two-step-confirmation.md). - Sie eine dynamische Bezahlseite haben, auf der sich der Betrag je nach Kundenauswahl ändern kann, zum Beispiel indem die Artikel oder die Anzahl der gekauften Artikel geändert oder Rabattcodes hinzugefügt wurden. Wenn Sie die Erstellung des Intent aufschieben, bis die Kundin/der Kunde auf **Bezahlen** geklickt hat, müssen Sie Ihren Intent nicht mit den auf dem Client vorgenommenen Änderungen synchronisieren. Dies kann erforderlich sein, da sich Änderungen des Zahlungsbetrags auf die mögliche Nutzung bestimmter Zahlungsmethoden auswirken kann. Erfahren Sie, wie Sie [Zahlungsdetails vor der Erstellung eines PaymentIntent erfassen](https://docs.stripe.com/payments/accept-a-payment-deferred.md), wenn Sie den Intent auf Ihrem Client bestätigen, und wie Sie [Zahlungen auf dem Server abschließen](https://docs.stripe.com/payments/finalize-payments-on-the-server.md), wenn Sie den Intent auf Ihrem Server bestätigen. - **PaymentIntent/SetupIntent als auch das Payment Element erstellen**: Erstellen Sie den PaymentIntent oder SetupIntent, bevor Sie die Bezahlseite laden, und erstellen Sie anschließend das Payment Element. Verknüpfen Sie die beiden miteinander, indem Sie das `client_secret` des Intent [als Parameter angeben, wenn Sie das Elements-Objekt erstellen](https://docs.stripe.com/js/elements_object/create#stripe_elements-options-clientSecret). Wählen Sie diese Option, wenn: - Sie haben eine statische Bezahlvorgangsseite und möchten Ihre Integration schnell einrichten. Erfahren Sie, wie Sie [eine Zahlung akzeptieren](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=elements&api-integration=paymentintents). ## Auswählen, wo der PaymentIntent bzw. SetupIntent bestätigt werden soll Die vom Payment Element erfassten Zahlungsinformationen werden zum Zeitpunkt der Bestätigung auf den PaymentIntent bzw. den SetupIntent übertragen. Wenn die Kundin/der Kunde auf **Bezahlen** klickt, können Sie: - **PaymentIntent/SetupIntent auf Ihrem Client bestätigen**: Der Code auf Ihrem Client ruft ein Stripe SDK auf, das die API aufruft, um den Intent zu bestätigen. Das Stripe SDK verarbeitet auch automatisch zusätzliche nächste Aktionen, die möglicherweise erforderlich werden, wie die Authentifizierung mit [3D Secure](https://docs.stripe.com/payments/3d-secure.md), und lokalisiert auch [Fehlermeldungen](https://docs.stripe.com/api/errors.md). Wählen Sie diese Option, wenn: - Sie benötigen keine zusätzliche Kontrolle über die Bestätigung des Intent auf Ihrem Server und Sie bevorzugen die schnellste Integration. - **PaymentIntent/SetupIntent auf Ihrem Server bestätigen**: Der Code auf Ihrem Server ruft direkt die API auf, um den Intent zu bestätigen. Wenn weitere Aktionen erforderlich sind, müssen Sie diese entweder manuell oder mithilfe eines Stripe SDK erledigen, wie z. B. mit [stripe.handleNextAction](https://docs.stripe.com/js/payment_intents/handle_next_action). Wählen Sie diese Option, wenn Folgendes zutrifft: - Sie vor der Bestätigung die Geschäftslogik auf Ihrem Server ausführen müssen, wie z. B. Einschränkungen der Zahlungsmethode oder die Anpassung der Plattformgebühren. Sobald Ihre Geschäftslogik ausgeführt wird, bestätigen Sie sofort den Intent auf Ihrem Server, um sicherzustellen, dass der Client keine Änderungen vornehmen kann, die Ihre Geschäftslogik ungültig machen könnten.