# Auf die Payment Intents API migrieren > #### Funktionen der Payment Element-Integration > > Sie können das Payment Element integrieren, um Abos, Steuern, Rabatte, Versandkosten und Währungsumrechnung zu verwalten. Weitere Informationen finden Sie im Leitfaden [Erstellung einer Bezahlvorgangseite](https://docs.stripe.com/payments/quickstart-checkout-sessions.md). Erfahren Sie, wie Sie Ihre vorhandenen Karten und die Charges-API-Integration umstellen Die Migration Ihres Zahlungsablaufes kann eine Herausforderung darstellen. Es ist ratsam, die Payment Intents API schrittweise einzuführen und parallel zur Charges API zu verwenden. Zu diesem Zweck können Sie die Migration in die folgenden Schritte unterteilen: 1. [Aktualisieren Sie Ihre API-Version und Ihre Client-Bibliothek](https://docs.stripe.com/payments/payment-intents/migration.md#api-version). 1. Gegebenenfalls: [Migrieren Sie den Code, der Daten aus den Charge-Eigenschaften ausliest](https://docs.stripe.com/payments/payment-intents/migration/charges.md), damit Sie einen konsistenten Lesepfad zwischen durch die Charges API erstellten Buchungen und durch die Payment Intents API erstellten Buchungen einrichten können. So wird eine leseseitige Integration sichergestellt, die sowohl für Ihre alten als auch für Ihre neuen Zahlungsintegrationen funktioniert. 1. Migrieren Sie Ihre bestehende Charges API-Integration auf [Web](https://docs.stripe.com/payments/payment-intents/migration.md#web), [iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) und [Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android), um die Payment Intents API zu verwenden. 1. Migrieren Sie Ihre Integration zur [Speicherung von Karten in Customer-Objekten](https://docs.stripe.com/payments/payment-intents/migration.md#saved-cards). 1. [Führen Sie einen Test mit vorgeschriebenen Testkarten durch](https://docs.stripe.com/testing.md#regulatory-cards), um sicherzustellen, dass Ihre Integration nach dem Upgrade die Authentifizierung korrekt abwickelt. ## Ihre API-Version und Client-Bibliothek aktualisieren Die Payment Intents API funktioniert zwar in allen API-Versionen, aber wir empfehlen [ein Upgrade auf die aktuelle API-Version](https://docs.stripe.com/upgrades.md#how-can-i-upgrade-my-api). Wenn Sie eine API-Version verwenden, die älter ist als die auf den [11.02.2019](https://docs.stripe.com/upgrades.md#2019-02-11) datierte Version, beachten Sie bitte die folgenden beiden Änderungen, wenn Sie die Codebeispiele bearbeiten: - `requires_source` wurde in `requires_payment_method` umbenannt - `requires_source_action` wurde in `requires_action` umbenannt Außerdem sollten Sie ein Upgrade auf die neueste Bibliotheksversion durchführen, wenn Sie eins unserer [SDKs](https://docs.stripe.com/sdks.md) verwenden, damit Sie die Payment Intents API nutzen können. ## Stellen Sie Zahlungsabläufe für Einmalzahlungen um #### Elements Eine mit Stripe.js entwickelte Integration umfasst folgende Schritte: 1. Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen 1. Erfassen Sie die Zahlungsdetails auf Client-Seite 1. Veranlassen Sie die Erstellung einer Zahlung 1. Wickeln Sie die Bestellung des/der Kund/in auf Server-Seite ab ### Schritt 1: Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen [Erstellen Sie einen PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) auf Ihrem Server und ermöglichen Sie den [Zugriff darauf auf Client-Seite](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Schritt 2: Erfassen Sie die Zahlungsdetails auf Client-Seite Verwenden Sie die Funktion [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), die Zahlungsinformationen erfasst und diese direkt an Stripe weitergibt. ### Schritt 3: Veranlassen Sie die Erstellung einer Zahlung In Ihrer vorhandenen Integration besteht der letzte Schritt darin, mithilfe von tokenisierten Zahlungsinformationen eine Zahlung auf Ihrem Server zu erstellen. Dies ist nicht mehr erforderlich, da die im vorherigen Schritt aufgerufene Funktion `confirmCardPayment` die Erstellung der Zahlung veranlasst. ### Schritt 4: Wickeln Sie die Bestellung des/der Kund/in ab Bei der automatischen Bestätigung wird die Zahlung für Sie asynchron basierend auf Kundenaktionen auf der Client-Seite erstellt. Sie müssen daher [Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md), um zu ermitteln, wann die Zahlung erfolgreich abgeschlossen wurde. Um Schritte wie die Auftragsabwicklung nach erfolgreicher Zahlung eines Kunden/einer Kundin auszuführen, unterstützen Sie Webhooks und überwachen Sie das Ereignis `payment_intent.succeeded`. ### Before Bei erfolgreicher Zahlung abwickeln. ### After Abonnieren Sie den Webhook `payment_intent.succeeded` und führen Sie die Abwicklung im Webhook-Handler aus. Nachdem Sie Ihre Umstellung abgeschlossen haben, nutzen Sie die Testkarten im folgenden Abschnitt, um zu verifizieren, dass Ihre aktualisierte Integration die 3D-Secure-Authentifizierung verarbeiten kann. #### Schaltfläche für Zahlungsanfrage Die [Schaltfläche für Zahlungsanfragen](https://docs.stripe.com/stripe-js/elements/payment-request-button.md) in Stripe.js funktioniert mit der Payment Intents API, indem das aus einer herkömmlichen PaymentRequest-Integration bezogene Token verwendet und an eine PaymentIntent gehängt wird. Eine mit PaymentRequest entwickelte Integration umfasst folgende Schritte: 1. Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen 1. Erfassen Sie die Zahlungsdetails auf Client-Seite 1. Veranlassen Sie die Erstellung einer Zahlung 1. Wickeln Sie die Bestellung des/der Kund/in auf Server-Seite ab Alternativ können Sie das [Express-Checkout-Element](https://docs.stripe.com/elements/express-checkout-element.md) verwenden, um Ihren Kundinnen und Kunden mehrere Ein-Klick-Zahlungsschaltflächen anzubieten, darunter Apple Pay, Google Pay, Link und PayPal. ### Schritt 1: Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen [Erstellen Sie einen PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) auf Ihrem Server und ermöglichen Sie den [Zugriff darauf auf Client-Seite](https://docs.stripe.com/payments/payment-intents.md#passing-to-client). ### Schritt 2: Erfassen Sie die Zahlungsdetails auf Client-Seite Warten Sie auf das `token`-Ereignis des `PaymentRequest`-Objekts, welches einen Token und eine Rückruffunktion bereitstellt, die Ihnen anzeigen kann, wann der Zahlungsvorgang abgeschlossen ist. Um diese Integration so anzupassen, dass sie die Payment Intents API unterstützt, nutzen Sie die Funktion [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment) und übergeben Sie die Token-ID, statt das Token an Ihren Server zu senden. Wenn das von der Funktion `confirmCardPayment` zurückgegebene Promise erfüllt ist, rufen Sie den Abschluss-Callback auf. ### Schritt 3: Veranlassen Sie die Erstellung einer Zahlung In Ihrer vorhandenen Integration besteht der letzte Schritt darin, mithilfe von tokenisierten Zahlungsinformationen eine Zahlung auf Ihrem Server zu erstellen. Dies ist nicht mehr erforderlich, da die im vorherigen Schritt aufgerufene Funktion `confirmCardPayment` die Erstellung der Zahlung veranlasst. ### Schritt 4: Wickeln Sie die Bestellung des/der Kund/in ab Bei der automatischen Bestätigung wird die Zahlung für Sie asynchron basierend auf Kundenaktionen auf der Client-Seite erstellt. Sie müssen daher [Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md), um zu ermitteln, wann die Zahlung erfolgreich abgeschlossen wurde. Um Schritte wie die Auftragsabwicklung nach erfolgreicher Zahlung eines Kunden/einer Kundin auszuführen, unterstützen Sie Webhooks und überwachen Sie das Ereignis `payment_intent.succeeded`. ### Before Bei erfolgreicher Zahlung abwickeln. ### After Abonnieren Sie den Webhook `payment_intent.succeeded` und führen Sie die Abwicklung im Webhook-Handler aus. Nachdem Sie Ihre Umstellung abgeschlossen haben, nutzen Sie die Testkarten im folgenden Abschnitt, um zu verifizieren, dass Ihre aktualisierte Integration die 3D-Secure-Authentifizierung verarbeiten kann. #### Ältere Checkout-Version Wenn Sie die ältere Version von Checkout verwenden, führen Sie ein Upgrade auf die [neue Version](https://docs.stripe.com/payments/checkout.md) durch. Dies ist der schnellste Weg, mit Stripe Zahlungen anzunehmen. Sie können Einmalzahlungen und Abonnements annehmen und Checkout außerdem ohne die Stripe-API auf Ihrem Server nutzen. Befolgen Sie die Anweisungen im [Migrationsleitfaden für Checkout](https://docs.stripe.com/payments/checkout/migration.md), um Ihre vorhandene Integration umzustellen. Sollten Sie es vorziehen, Ihren eigenen Bezahlvorgang zu erstellen, wechseln Sie zu [Elements](https://docs.stripe.com/payments/elements.md). Vorausgesetzt, Sie haben ein Upgrade auf Elements durchgeführt, können Sie mithilfe der [Migrationsanleitung für Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web) eine Payment Intents API-Integration erstellen. #### Stripe.js v2 Um eine vorhandene Stripe.js v2-Integration zu aktualisieren, damit die Payment Intents API verwendet werden kann, aktualisieren Sie zuerst Ihre Integration, um Zahlungsinformationen mit Elements zu erfassen. Elements bietet vorgefertigte Nutzeroberflächenkomponenten sowie einfache [PCI-Konformität](https://docs.stripe.com/security/guide.md) mit SBF A-Berichterstattung. Nach dem Upgrade auf Elements können Sie mithilfe der [Migrationsanleitung für Elements](https://docs.stripe.com/payments/payment-intents/migration.md#web) eine Payment Intents API-Integration erstellen. ## Migrieren Sie Ihre Integration zur Speicherung von Karten in Customer-Objekten #### Karten im Bezahlvorgang speichern Eine Payment Intents API-Integration, die Karteninformationen im Bezahlvorgang erfasst, umfasst folgende Schritte: 1. Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen 1. Erfassen Sie die Zahlungsdetails auf Client-Seite 1. Veranlassen Sie die Erstellung einer Zahlung 1. Wickeln Sie die Bestellung des/der Kund/in auf Server-Seite ab ### Schritt 1: Registrieren Sie Ihre Absicht, Zahlungen auf Server-Seite einzuziehen [Erstellen Sie einen PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) auf Ihrem Server. Legen Sie diese Option [setup_future_usage](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-setup_future_usage) auf `off_session` fest, wenn Sie planen, die Konten der Nutzer/innen vorwiegend zu belasten, wenn sie sich außerhalb Ihrer Anwendung befinden, oder auf `on_session`, wenn Sie planen, sie in der Anwendung zu belasten. Wenn Sie die Karte sowohl für On-Session- als auch Off-Session-Zahlungen verwenden möchten, verwenden Sie `off_session`. Durch Angabe des Parameters `setup_future_usage` zusammen mit einer Kunden-ID wird die resultierende PaymentMethod für diese Kundin/diesen Kunden gespeichert, nachdem der PaymentIntent bestätigt und alle erforderlichen Aktionen seitens des Kunden/der Kundin abgeschlossen wurden. Machen Sie als Nächstes den Zugriff auf den PaymentIntent [auf der Client-Seite](https://docs.stripe.com/payments/payment-intents.md#passing-to-client) möglich. ### Schritt 2: Erfassen Sie die Zahlungsdetails auf Client-Seite Verwenden Sie die Funktion [confirmCardPayment](https://docs.stripe.com/js.md#stripe-confirm-card-payment), die Zahlungsinformationen erfasst und diese direkt an Stripe weitergibt. Hängen Sie schließlich die Zahlungsmethode (`paymentIntent.payment_method`) an den Kunden/die Kundin an. ### Schritt 3: Veranlassen Sie die Erstellung einer Zahlung In Ihrer vorhandenen Integration besteht der letzte Schritt darin, mithilfe von tokenisierten Zahlungsinformationen eine Zahlung auf Ihrem Server zu erstellen. Dies ist nicht mehr erforderlich, da die im vorherigen Schritt aufgerufene Funktion `confirmCardPayment` die Erstellung der Zahlung veranlasst. ### Schritt 4: Wickeln Sie die Bestellung des/der Kund/in ab Bei der automatischen Bestätigung wird die Zahlung für Sie asynchron basierend auf Kundenaktionen auf der Client-Seite erstellt. Sie müssen daher [Webhooks überwachen](https://docs.stripe.com/payments/payment-intents/verifying-status.md), um zu ermitteln, wann die Zahlung erfolgreich abgeschlossen wurde. Um Schritte wie die Auftragsabwicklung nach erfolgreicher Zahlung eines Kunden/einer Kundin auszuführen, unterstützen Sie Webhooks und überwachen Sie das Ereignis `payment_intent.succeeded`. ### Before Bei erfolgreicher Zahlung abwickeln. ### After Abonnieren Sie den Webhook `payment_intent.succeeded` und führen Sie die Abwicklung im Webhook-Handler aus. Nachdem Sie Ihre Umstellung abgeschlossen haben, nutzen Sie die Testkarten im folgenden Abschnitt, um zu verifizieren, dass Ihre aktualisierte Integration die 3D-Secure-Authentifizierung verarbeiten kann. #### Karten außerhalb des Bezahlvorgangs speichern Es sind einige Änderungen an Ihrer bestehenden Integration erforderlich, die Kartendaten außerhalb eines Bezahlvorgangs speichert. Erstellen Sie zunächst eine [SetupIntent](https://docs.stripe.com/api/setup_intents.md) auf Ihrem Server. Eine SetupIntent authentifiziert die Karte, ohne eine erste Zahlung durchzuführen. Geben Sie das [Client-Geheimnisl](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) des SetupIntent an Ihren Client weiter und nutzen Sie die [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup)-Funktion statt der Funktion [createToken](https://docs.stripe.com/js.md#stripe-create-token) oder [createSource](https://docs.stripe.com/js.md#stripe-create-source), nachdem Ihr Kunde/Ihre Kundin seine/ihre Kartendaten eingegeben hat. Falls durch Behördenauflagen erforderlich, fordert [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) den Kunden/die Kundin zur Authentifizierung der Karte auf. Wird [confirmCardSetup](https://docs.stripe.com/js.md#stripe-confirm-card-setup) erfolgreich durchgeführt, enthält `setupIntent.payment_method` eine [Zahlungsmethode](https://docs.stripe.com/api/payment_methods/object.md), die Sie dann einem Kunden/einer Kundin zuordnen können. Geben Sie die ID dieser PaymentMethod an Ihren Server weiter und [ordnen Sie diese Zahlungsmethode](https://docs.stripe.com/api/payment_methods/attach.md) dem Kundenobjekt mittels der Payment Methods API zu, statt über die Customers API. #### Mit gespeicherten Karten bezahlen Wenn Sie mit einer zuvor gespeicherten Zahlungsmethode bezahlen, müssen Sie sowohl die ID des Kunden/der Kundin als auch die ID der zuvor gespeicherten Karte, Source oder PaymentMethod angeben. Bisher wird die Standardquelle des Kunden/der Kundin verwendet, wenn keine angegeben wurde. Sie müssen nun explizit die gewünschte Zahlungsmethode übergeben. Wenn der Kunde/die Kundin *nicht anwesend ist* (A payment is described as off-session if it occurs without the direct involvement of the customer, using previously-collected payment information), müssen Sie die Zahlung als Off-Session markieren. Weitere Informationen finden Sie unter [gespeicherte Karten belasten](https://docs.stripe.com/payments/save-and-reuse.md?platform=web&ui=elements#charge-saved-payment-method). ## Greifen Sie auf gespeicherte Zahlungsmethoden zu Um die zuvor gespeicherten Karten, Quellen und Zahlungsmethoden der Kundin bzw. des Kunden anzuzeigen, [listen Sie die Zahlungsmethoden](https://docs.stripe.com/api/payment_methods/list.md) auf, anstatt die [Quellen](https://docs.stripe.com/api/customers/object.md#customer_object-sources)-Eigenschaft des Kundenobjekts auszulesen. Dies ist erforderlich, da neue Zahlungsmethoden, die einer Kundin bzw. einem Kunden hinzugefügt werden, nicht in der Quellen-Eigenschaft des Kundenobjekts dupliziert werden. ## Integration testen Es ist wichtig, dass Sie Ihre Integration sorgfältig testen, um sicherzustellen, dass sowohl die Karten korrekt verarbeitet werden, für die eine zusätzliche Authentifizierung erforderlich ist, als auch solche, für die das nicht gilt. Verwenden Sie diese Kartennummern in einer [Sandbox](https://docs.stripe.com/keys.md#test-live-modes) mit beliebigem Ablaufdatum in der Zukunft und jedem dreistelligen CVC-Code, um Ihre Integration zu validieren, wenn eine Authentifizierung erforderlich ist und wenn sie nicht erforderlich ist. | Nummer | Authentifizierung | Beschreibung | | ---------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4000002500003155 | Bei Einrichtung oder der ersten Transaktion erforderlich | Bei dieser Testkarte ist eine Authentifizierung für [Einmalzahlungen](https://docs.stripe.com/payments/accept-a-payment.md?platform=web) erforderlich. Wenn Sie die Karte jedoch mit der [Setup Intents API](https://docs.stripe.com/payments/save-and-reuse.md) einrichten und die gespeicherte Karte für künftige Zahlungen nutzen, ist keine weitere Authentifizierung erforderlich. | | 4000002760003184 | Pflichtfeld | Diese Testkarte erfordert bei allen Transaktionen eine Authentifizierung. | | 4000008260003178 | Pflichtfeld | Diese Testkarte erfordert eine Authentifizierung, Zahlungen werden nach einer fehlgeschlagenen Authentifizierung allerdings mit dem Fehlercode `insufficient_funds` abgelehnt. | | 4000000000003055 | Unterstützt | Diese Testkarte unterstützt die Authentifizierung durch 3D Secure 2, erfordert sie jedoch nicht. Zahlungen mit dieser Karte erfordern in einer Sandbox nur dann eine zusätzliche Authentifizierung, wenn Ihre [Sandbox-Radar-Regeln](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#three-ds-radar) dies verlangen. | Nutzen Sie diese Karte in Ihrer Anwendung oder der [Zahlungsdemo](https://stripe-payments-demo.appspot.com), um verschiedene Verhaltensweisen zu sehen. ## See also - [PaymentIntents auf iOS](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=ios) - [PaymentIntents auf Android](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=mobile&platform=android)