Auf das Payment Element mit Payment Intents umstellen
Akzeptieren Sie mehrere Zahlungsmethoden mit einem einzigen Element.
Notiz
Wenn Ihre Integration noch die Charges API mit Token verwendet, informieren Sie sich zuvor im Leitfaden Umstieg auf die Payment Intents API.
Möchten Sie Stripe Billing, Tax, Rabatte, Versand oder Währungsumrechnung nutzen?
Wir entwickeln derzeit eine Payment Element-Integration, die Abonnements, Steuern, Rabatte, Versand und Währungsumrechnung verwaltet. Weitere Informationen finden Sie unter Erstellen einer Bezahlseite.
Bisher erforderte jede Zahlungsmethode (Karten, iDEAL etc.) ein separates Element. Durch die Migration zu Payment Element können Sie viele Zahlungsmethoden mit einem einzelnen Element akzeptieren.
PaymentIntents und SetupIntents haben jeweils eigene Migrationsleitfäden. Sehen Sie sich den entsprechenden Leitfaden für Ihren Integrationspfad und die Codebeispiele an.
Wenn Ihre bestehende Integration die API Setup Intents für künftige Zahlungen verwendet, führen Sie die folgenden Schritte zur Verwendung von Payment Element aus.
Zahlungsmethoden aktivieren
Vorsicht
Dieser Integrationspfad unterstützt weder BLIK noch vorab autorisierte Lastschriften, die das Automated Clearing Settlement System (ACSS) verwenden.
Zeigen Sie Ihre Einstellungen für Zahlungsmethoden an und aktivieren Sie die Zahlungsmethoden, die Sie unterstützen möchten. Sie müssen mindestens eine Zahlungsmethode aktiviert haben, um einen SetupIntent zu erstellen.
By default, Stripe enables cards and other prevalent payment methods that can help you reach more customers, but we recommend turning on additional payment methods that are relevant for your business and customers. See Payment method support for product and payment method support, and our pricing page for fees.
Eine Elements-Instanz aktualisierenClientseitig
Aktualisieren Sie als Nächstes Ihren clientseitigen Code, um beim Erstellen der Elements-Instanz den Parameter mode
und currency
zu übergeben. Für die Verwendung mit einem SetupIntent setzen Sie den mode
auf 'setup'
und die currency
auf das, was Sie Ihrem/Ihrer Kund/in zukünftig in Rechnung stellen werden.
Payment Element hinzufügenClientseitig
Sie können jetzt das Card Element und die Elemente der einzelnen Zahlungsmethoden durch das Payment Element ersetzen. Das Payment Element passt basierend auf der Zahlungsmethode und dem Land die zu erfassenden Eingabefelder automatisch an (z. B. Erfassung der vollständigen Rechnungsadresse), sodass Sie keine nutzerdefinierten Eingabefelder pflegen müssen.
Im folgenden Beispiel wird CardElement
durch PaymentElement
ersetzt:
Wenn in Ihrem Zahlungsablauf bereits immer Details wie der Name oder die E-Mail-Adresse der Kundinnen und Kunden erfasst wird, können Sie verhindern, dass das Payment Element diese Informationen erfasst, indem Sie die Option Felder beim Erstellen des Payment Element übergeben. Wenn Sie die Erfassung eines bestimmten Felds deaktivieren, müssen Sie die gleichen Daten mit stripe.confirmSetup zurückgeben.
Aktualisieren Sie Ihren Erstellungsaufruf für SetupIntentsServerseitig
Da Sie mit dem Payment Element mehrere Zahlungsmethoden akzeptieren können, empfehlen wir die Verwendung von automatic_
. Wenn Sie sie aktivieren, wertet Stripe die Währung, Einschränkungen der Zahlungsmethode und andere Parameter aus, um die Liste der für Ihre Kund/innen verfügbaren Zahlungsmethoden zu ermitteln. Wir bevorzugen Zahlungsmethoden, die die Konversionsrate erhöhen und die für die Währung und den Standort der Kund/innen am relevantesten sind.
Fügen Sie das Attribut automatic_
dem Endpoint auf Ihrem Server hinzu. Dieser erstellt den SetupIntent.
Alle zusätzlichen Elementoptionen, die beim Erstellen der Elements-Gruppe im vorherigen Schritt übergeben wurden, sollten auch beim Erstellen des SetupIntent übergeben werden.
Vorsicht
Sie können einige Zahlungsmethoden nicht für zukünftige Zahlungen speichern. Weitere Informationen finden Sie unter Optionen für die Integration von Zahlungsmethoden.
Submit-Handler aktualisierenClientseitig
Statt einzelne Bestätigungsmethoden wie stripe.
oder stripe.
zu verwenden, verwenden Sie stripe.confirmSetup, um Zahlungsinformationen zu erfassen und an Stripe zu übermitteln.
Um den SetupIntent zu bestätigen, nehmen Sie die folgenden Änderungen an Ihrem Submit-Handler vor:
- Rufen Sie
await elements.
auf, um die Formularvalidierung auszulösen und alle Daten zu erfassen, die für Wallets erforderlich sind.submit() - Optional: Verschieben Sie die SetupIntent-Erstellung an den Setup-Handler. Auf diese Weise erstellen Sie den SetupIntent erst, wenn Nutzer/innen bereit sind, ihre Angaben zur Zahlungsmethode zu übermitteln.
- Übergeben Sie die
elements
-Instanz, die Sie zum Erstellen des Payment Element verwendet haben, und dasclientSecret
aus dem SetupIntent als Parameter anstripe.
.confirmSetup
Beim Aufruf versucht stripe.
, alle erforderlichen Aktionen durchzuführen, wie z. B. die Authentifizierung Ihrer Kundinnen/Kunden durch Anzeigen eines 3DS-Dialogfelds oder die Weiterleitung an eine Bankautorisierungsseite. Nach der Bestätigung werden die Nutzer/innen an die von Ihnen konfigurierte return_
weitergeleitet. Dies entspricht in der Regel einer Seite auf Ihrer Website, die Auskunft zum Status des SetupIntent
gibt.
Wenn Sie den gleichen Bezahlvorgang zum Speichern der Kartendaten beibehalten möchten und Weiterleitungen nur für Zahlungsmethoden mit Weiterleitung vornehmen möchten, können Sie die Weiterleitung auf if_
festlegen.
Im folgenden Codebeispiel wird stripe.
durch stripe.
ersetzt:
// Create the SetupIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await stripe.confirmCardSetup(clientSecret, { payment_method: { card: elements.getElement(CardElement) } }); if (error) { handleError(error); } };
const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); // Trigger form validation and wallet collection const {error: submitError} = await elements.submit(); if (submitError) { handleError(submitError); return; } // Create the SetupIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); // Use the clientSecret and Elements instance to confirm the setup const {error} = await stripe.confirmSetup({ elements, clientSecret, confirmParams: { return_url: 'https://example.com/order/123/complete', }, // Uncomment below if you only want redirect for redirect-based payments // redirect: "if_required", }); if (error) { handleError(error); } };
Integration testen
Verwenden Sie Test-Zahlungsdaten und die Test-Weiterleitungsseite um Ihre Integration zu überprüfen. Klicken Sie auf die nachfolgenden Registerkarten, um Details zu jeder Zahlungsmethode anzuzeigen.
Testen Sie das Belasten mit einer gespeicherten SEPA-Lastschrift
Wenn der SetupIntent für die Nutzung mit iDEAL, Bancontact oder Sofort bestätigt ist, wird eine wiederverwendbare SEPA-Lastschrift -PaymentMethod erstellt. SEPA-Lastschrift ist eine Zahlungsmethode mit verzögerter Benachrichtigung, die in den Übergangsstatus processing
wechselt, bevor sie einige Tage später den Status succeeded
oder requires_
annimmt.