# Migrieren Sie zu den Payment Intents und Payment Methods APIs Erfahren Sie, wie Sie von der Sources API und der Tokens API zur Payment Methods API wechseln. Die [Payment Methods API](https://docs.stripe.com/api/payment_methods.md) ersetzt die vorhandenen [Token](https://docs.stripe.com/api/tokens.md)- und [Sources](https://docs.stripe.com/api/sources.md) APIs als empfohlene Option zum Erfassen und Speichern von Zahlungsinformationen für Integrationen. Sie arbeitet mit der [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md) zusammen, um Zahlungen für eine Vielzahl von Zahlungsmethoden zu erstellen. Wir planen, die Sources API für *lokale Zahlungsmethoden* (Payment methods used in specific countries or regions, such as bank transfers, vouchers, and digital wallets. Examples include Pix (Brazil, bank transfers), Konbini (Japan, vouchers), and WeChat Pay (China, digital wallet)) zu deaktivieren. Wenn Sie derzeit lokale Zahlungsmethoden mit der Sources API verarbeiten, müssen Sie [diese zur Payment Methods API migrieren](https://docs.stripe.com/payments/payment-methods/transitioning.md#migrate-local-payment-methods). Weite Informationen zur eingestellten Unterstützung der Sources API und der Tokens API senden wir Ihnen per E-Mail. Obwohl wir nicht vorhaben, die Unterstützung für Kartenzahlungsmethoden zu deaktivieren, empfehlen wir Ihnen dennoch, diese auf die Payment Methods API und die Payment Intents API umzustellen. Weitere Informationen zur Umstellung von Kartenzahlungsmethoden finden Sie unter [Auf die Payment Intents API umstellen](https://docs.stripe.com/payments/payment-intents/migration.md). ## Lokale Zahlungsmethoden von der Sources API zur Payment Intents API migrieren Um Ihre Integration für lokale Zahlungsmethoden umzustellen, aktualisieren Sie Ihren Server und Ihr Frontend auf die Verwendung der [PaymentIntents API](https://docs.stripe.com/api/payment_intents.md). Es gibt drei typische Integrationsmöglichkeiten: - Führen Sie für Ihren Zahlungsablauf eine Weiterleitung zu [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) durch. - Verwenden Sie das [Payment Element](https://docs.stripe.com/payments/payment-element.md) von Stripe auf Ihrer eigenen Zahlungsseite. - Erstellen Sie Ihr eigenes Formular und verwenden Sie das Stripe JS SDK, um die Zahlung abzuschließen. Wenn Sie Stripe Checkout oder das Payment Element verwenden, können Sie die meisten Zahlungsmethoden über das Stripe-Dashboard hinzufügen und verwalten, ohne Codeänderungen vornehmen zu müssen. Weitere Informationen zur Integration einer lokalen Zahlungsmethode mithilfe der Payment Methods API finden Sie in den Anweisungen für diese Zahlungsmethode in [der Dokumentation zu den Zahlungsmethoden](https://docs.stripe.com/payments/payment-methods/overview.md). Die folgende Tabelle bietet einen allgemeinen Vergleich der verschiedenen Zahlungsarten. | Alte Integration | Stripe Checkout | Payment Element | Eigenes Formular | | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | Geringer Integrationsaufwand | Mittlerer Integrationsaufwand | Hoher Integrationsaufwand | | Eine Quelle im Frontend oder auf dem Server erstellen | Eine Checkout-Sitzung auf dem Server erstellen | PaymentIntent auf dem Server erstellen | PaymentIntent auf dem Server erstellen | | Zahlung autorisieren, indem ein Widget geladen oder an einen Drittanbieter weitergeleitet wird | Nicht erforderlich | Übergeben Sie das Client-Geheimnis an das Frontend und verwenden Sie das Stripe JS SDK, um ein Payment Element zu rendern und die Zahlung abzuschließen. | Übergeben Sie das Client-Geheimnis an das Frontend, verwenden Sie Ihr eigenes Formular, um Details von Ihren Kundinnen und Kunden zu erfassen, und schließen Sie die Zahlung gemäß der Zahlungsmethode ab | | Bestätigen, dass die Quelle abrechenbar ist, und belasten der Quelle | Nicht erforderlich | Nicht erforderlich | Nicht erforderlich | | Mit dem Webhook `charge.succeeded` bestätigen, dass die Zahlung asynchron erfolgreich durchgeführt wurde | Mit dem Webhook `payment_intent.succeeded` bestätigen, dass die Checkout-Sitzung erfolgreich durchgeführt wurde | Mit dem Webhook `payment_intent.succeeded`bestätigen, dass der PaymentIntent erfolgreich war | Mit dem Webhook `payment_intent.succeeded`bestätigen, dass der PaymentIntent erfolgreich war | > Ein PaymentIntent-Objekt stellt eine Zahlung in der neuen Integration dar und erstellt eine Abbuchung, wenn Sie die Zahlung im Frontend bestätigen. Wenn Sie zuvor Verweise auf die Abbuchung gespeichert haben, können Sie dies weiterhin tun, indem Sie die Abbuchungs-ID aus dem PaymentIntent abrufen, nachdem die Kundin/der Kunde die Zahlung abgeschlossen hat. Wir empfehlen jedoch auch, die PaymentIntent-ID zu speichern. ### Zahlungsstatus überprüfen Zuvor sollte Ihre Integration nach jedem API-Aufruf sowohl den Status der Quelle als auch den Status der Abbuchung überprüft haben. Sie müssen nicht mehr zwei Status überprüfen – Sie müssen nur den Status des PaymentIntent oder der Checkout-Sitzung überprüfen, nachdem Sie diesen im Frontend bestätigt haben. | payment_intent.status | Bedeutung | Besondere Hinweise | | ------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `succeeded` | Die Zahlung war erfolgreich. | Nicht zutreffend | | `requires_payment_method` | Die Zahlung ist fehlgeschlagen. | Nicht zutreffend | | `requires_action` | Die Kundin/der Kunde hat die Autorisierung der Zahlung nicht abgeschlossen. | Wenn die Kundin/der Kunde die Zahlung nicht innerhalb von 48 Stunden abschließt, wechselt der PaymentIntent zu `requires_payment_method`, und Sie können erneut versuchen, die Bestätigung einzuholen. | Bestätigen Sie den Status des PaymentIntent, indem Sie ihn von Ihrem Server abrufen oder die Webhooks auf Ihrem Server überwachen. Verlassen Sie sich nicht nur darauf, dass die Nutzerin/der Nutzer zu der `return_url` zurückkehrt, die angegeben wird, wenn Sie den PaymentIntent bestätigen. ### Rückerstattungen Sie können weiterhin die Refunds API mit einer vom PaymentIntent erstellten Abbuchung aufrufen. Die ID der Abbuchung erhalten Sie über den Parameter `latest_charge`. Alternativ können Sie der Refunds API auch die PaymentIntent-ID anstelle der Abbuchung übermitteln. ### Fehlerbehebung Bisher mussten Fehler bei den Quellen behoben werden. Mit PaymentIntents müssen Sie eine Quelle nicht auf Fehler überprüfen. Stattdessen müssen Sie auf Fehler im PaymentIntent achten, wenn dieser erstellt wird und nachdem die Kundin/der Kunde die Zahlung autorisiert hat. Die meisten Fehler im PaymentIntent treten beim Typ `invalid_request_error` auf, der in einer ungültigen Anfrage zurückgegeben wurde. Beachten Sie bei der Migration Ihrer Integration, dass die Fehlercodes des PaymentIntent von den entsprechenden Fehlercodes der Quellen abweichen können. ### Webhooks Wenn Sie zuvor Source-Ereignisse überwacht haben, müssen Sie möglicherweise Ihre Integration aktualisieren, um neue Ereignistypen zu überwachen. In der nachfolgenden Tabelle zeigen wir Ihnen einige Beispiele. | Alter Webhook | Neuer Webhook in Checkout | Neuer Webhook in PaymentIntents | Besondere Hinweise | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `source.chargeable` | Nicht zutreffend | Nicht zutreffend | | | `source.failed` | Nicht zutreffend | Nicht zutreffend | | | `source.canceled` | Nicht zutreffend | Nicht zutreffend | | | `charge.succeeded` | `checkout.session.completed` | `payment_intent.succeeded` | Der Webhook `charge.succeeded` wird ebenfalls übermittelt, sodass Sie Ihre Integration nicht aktualisieren müssen, um den neuen Webhook zu überwachen. | | `charge.failed` | Nicht zutreffend - Der Kunde/die Kundin kann die Zahlung für dieselbe Checkout-Sitzung bis zum [Ablauf](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-expires_at) wiederholen. Anschließend erhalten Sie das Ereignis `checkout.session.expired`. | `payment_intent.payment_failed` | Der Webhook `charge.failed` wird ebenfalls übermittelt, sodass Sie Ihre Integration nicht aktualisieren müssen, um den neuen Webhook zu überwachen. | | `charge.dispute.created` | `charge.dispute.created` | `charge.dispute.created` | | ## Umstellung auf die Payment Methods API Der Hauptunterschied zwischen der Payment Methods API und der Sources API besteht darin, dass Sources den Transaktionsstatus über die Eigenschaft [Status](https://docs.stripe.com/api/sources/object.md#source_object-status) beschreibt. Das bedeutet, dass jedes `Source`-Objekt in einen abrechenbaren Status übergehen muss, bevor Sie es für eine Zahlung verwenden können. Im Gegensatz dazu befindet sich eine `PaymentMethod` in gar keinem Status und ist auf das *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods)-Objekt angewiesen, um den Zahlungsstatus darzustellen. > Die folgende Tabelle umfasst nicht alle Zahlungsmethoden. Wenn Sie andere Zahlungsmethoden mit der Sources API integrieren, müssen Sie für diese ebenfalls eine Migration mit der Payment Methods API vornehmen. | Zahlungsabläufe | Zahlungsmethode mit Payment Intents API integrieren | Token oder Sources mit der Charges API | | ------------------------ | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | Karten | [Kartenzahlungen](https://docs.stripe.com/payments/cards.md) | [Unterstützt für Token](https://docs.stripe.com/payments/charges-api.md); Nicht empfohlen für Sources | | ACH-Lastschriftverfahren | [US-Bankkonto-Lastschriften](https://docs.stripe.com/payments/ach-direct-debit.md) | [Unterstützt für Token](https://docs.stripe.com/ach-deprecated.md) Nicht unterstützt für Sources | | ACH-Überweisung | [USD-Banküberweisungen](https://docs.stripe.com/payments/customer-balance/migrating-from-sources.md) | [Veraltet](https://docs.stripe.com/sources/ach-credit-transfer.md) | | Alipay | [Alipay-Zahlungen](https://docs.stripe.com/payments/alipay.md) | [Veraltet](https://docs.stripe.com/sources/alipay.md) | | Bancontact | [Bancontact-Zahlungen](https://docs.stripe.com/payments/bancontact.md) | [Veraltet](https://docs.stripe.com/sources/bancontact.md) | | EPS | [EPS-Zahlungen](https://docs.stripe.com/payments/eps.md) | Veraltet | | giropay | [Giropay-Zahlungen](https://docs.stripe.com/payments/giropay.md) | [Veraltet](https://docs.stripe.com/sources/giropay.md) | | iDEAL | [iDEAL-Zahlungen](https://docs.stripe.com/payments/ideal.md) | [Veraltet](https://docs.stripe.com/sources/ideal.md) | | Klarna | [Klarna-Zahlungen](https://docs.stripe.com/payments/klarna.md) | Veraltet | | Multibanco | [Multibanco-Zahlungen](https://docs.stripe.com/payments/multibanco.md) | [Veraltete Beta](https://docs.stripe.com/sources/multibanco.md) | | Przelewy24 | [Przelewy24 payments](https://docs.stripe.com/payments/p24.md) | [Veraltet](https://docs.stripe.com/sources/p24.md) | | SEPA-Überweisung | [EUR-Banküberweisungen](https://docs.stripe.com/payments/customer-balance/migrating-from-sepa-credit-transfer.md) | [Veraltet](https://docs.stripe.com/sources/sepa-credit-transfer.md) | | SEPA-Lastschrift | [Single Euro Payments Area-Lastschriften](https://docs.stripe.com/payments/sepa-debit.md) | [Veraltet](https://docs.stripe.com/sources/sepa-debit.md) | | WeChat Pay | [Zahlungen per WeChat Pay](https://docs.stripe.com/payments/wechat-pay.md) | [Veraltet](https://docs.stripe.com/sources/wechat-pay.md) | Nachdem Sie ausgewählt haben, mit welcher API die Integration stattfinden soll, nutzen Sie den [Leitfaden zu Zahlungsmethoden](https://stripe.com/payments/payment-methods-guide). Dieser hilft Ihnen dabei, die Zahlungsmethoden zu ermitteln, die Sie unterstützen sollten. Dieser Leitfaden enthält detaillierte Beschreibungen der einzelnen Zahlungsmethoden und beschreibt die Unterschiede in den kundenorientierten Abläufen sowie die [geografischen Regionen](https://stripe.com/payments/payment-methods-guide#payment-methods-fact-sheets), in denen sie am relevantesten sind. Sie können jede im [Dashboard](https://dashboard.stripe.com/account/payments/settings) verfügbare Zahlungsmethode aktivieren. Die Aktivierung erfolgt in der Regel sofort und erfordert keine zusätzlichen Vereinbarungen. ## Kompatibilität mit älteren wiederverwendbaren Zahlungsmethoden Wenn Sie zuvor eine der folgenden wiederverwendbaren Zahlungsmethoden mit [Sources](https://docs.stripe.com/sources.md) verarbeitet haben, werden die vorhandenen gespeicherten Quellen nicht automatisch migriert. - Alipay - BACS-Lastschriftverfahren - SEPA-Lastschrift Um die gespeicherten Zahlungsmethoden Ihrer bestehenden Kundinnen und Kunden zu erhalten, müssen Sie diese Quellen mithilfe eines Datenmigrationstools im Stripe-Dashboard in Zahlungsmethoden umwandeln. Anweisungen zur Umwandlung finden Sie auf der [Support-Seite](https://support.stripe.com/questions/reusable-object-migration). ## Kompatibilität mit älteren Card-Objekten Wenn Sie zuvor Kartenzahlungsdetails von Kundinnen und Kunden mit [Karten](https://docs.stripe.com/payments/charges-api.md) oder [Sources](https://docs.stripe.com/sources.md) erfasst haben, können Sie sofort mit der Nutzung der Payment Methods API starten, ohne Zahlungsinformationen übertragen zu müssen. Kompatible Zahlungsmethoden, die für *einen Kunden/eine Kundin* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) gespeichert wurden, können in jeder API verwendet werden, die ein *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs)-Objekt akzeptiert. So können Sie zum Beispiel beim Erstellen eines PaymentIntent eine gespeicherte Karte als PaymentMethod verwenden: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]"=card \ -d amount=1099 \ -d currency=usd \ -d customer="{{CUSTOMER_ID}}" \ -d payment_method="{{CARD_ID}}" ``` Denken Sie daran, die Kunden-ID anzugeben, unter der Ihre kompatible Zahlungsmethode gespeichert ist, wenn Sie das Objekt an einen PaymentIntent anhängen. Sie können alle gespeicherten kompatiblen Zahlungsmethoden über die Payment Methods API [abrufen](https://docs.stripe.com/api/payment_methods/retrieve.md). #### Karte ```json { "id": "card_1EBXBSDuWL9wT9brGOaALeD2", "object": "card", "address_city": "San Francisco", "address_country": "US", "address_line1": "1234 Fake Street", "address_line1_check": null, "address_line2": null, "address_state": null, "address_zip": null, "address_zip_check": null, "brand": "Visa", "country": "US", "customer": "{{CUSTOMER_ID}}", "cvc_check": null, "dynamic_last4": null, "exp_month": 8, "exp_year": 2024, "fingerprint": "53v265akSHAnIk1X", "funding": "credit", "last4": "4242", "metadata": { }, "name": null, "tokenization_method": null } ``` ```json { "id": "card_1EBXBSDuWL9wT9brGOaALeD2", "object": "payment_method", "billing_details": { "address": { "city": "San Francisco", "country": "US", "line1": "1234 Fake Street", "line2": null, "postal_code": null, "state": null }, "name": null, "phone": null, "email": null }, "card": { "brand": "visa", "checks": { "address_line1_check": null, "address_postal_code_check": null, "cvc_check": null }, "country": "US", "exp_month": 8, "exp_year": 2024, "fingerprint": "53v265akSHAnIk1X", "funding": "credit", "last4": "4242", "three_d_secure_usage": { "supported": true }, "wallet": null }, "created": 123456789, "customer": "cus_EepWxEKrgMaywv", "livemode": false, "metadata": { }, "type": "card" } ``` #### Kartenquelle ```json { "id": "src_1AhIN74iJb0CbkEwmbRYPsd4", "object": "source", "amount": null, "client_secret": "src_client_secret_sSPHZ17iQG6j9uKFdAYqPErO", "created": 1500471469, "currency": null, "flow": "none", "livemode": false, "metadata": { }, "owner": { "address": { "city": "Berlin", "country": "DE", "line1": "Nollendorfstraße 27", "line2": null, "postal_code": "10777", "state": null }, "email": "jenny.rosen@example.com", "name": "Jenny Rosen", "phone": null, "verified_address": null, "verified_email": null, "verified_name": null, "verified_phone": null }, "status": "chargeable", "type": "card", "usage": "reusable", "card": { "exp_month": 4, "exp_year": 2024, "address_line1_check": "unchecked", "address_zip_check": "unchecked", "brand": "Visa", "country": "US", "cvc_check": "unchecked", "funding": "credit", "last4": "4242", "three_d_secure": "optional", "tokenization_method": null, "dynamic_last4": null } } ``` ```json { "id": "card_1EBXBSDuWL9wT9brGOaALeD2", "object": "payment_method", "billing_details": { "address": { "city": "Berlin", "country": "DE", "line1": "Nollendorfstraße 27", "line2": null, "postal_code": "10777", "state": null }, "name": "Jenny Rosen", "phone": null, "email": "jenny.rosen@example.com" }, "card": { "brand": "visa", "checks": { "address_line1_check": null, "address_postal_code_check": null, "cvc_check": null }, "country": "US", "exp_month": 4, "exp_year": 2024, "fingerprint": "53v265akSHAnIk1X", "funding": "credit", "last4": "4242", "three_d_secure_usage": { "supported": true }, "wallet": null }, "created": 1500471469, "customer": "{{CUSTOMER_ID}}", "livemode": false, "metadata": { }, "type": "card" } ``` Bei dieser Kompatibilität werden keine neuen Objekte erstellt. Die Payment Methods API bietet eine andere Ansicht desselben zugrunde liegenden Objekts. Aktualisierungen einer kompatiblen Zahlungsmethode über die Payment Methods API sind beispielsweise über die Sources API sichtbar und umgekehrt. ## See also - [Leitfaden zu Zahlungsmethoden](https://stripe.com/payments/payment-methods-guide) - [Connect-Zahlungen](https://docs.stripe.com/connect/charges.md) - [Dokumentation zur Payment Methods API](https://docs.stripe.com/api/payment_methods.md)