Basisintegration für Karten migrieren
Migrieren Sie zu einer Integration, die Bankanfragen zur Kartenauthentifizierung verarbeiten kann.
Wenn Sie den Leitfaden Kartenzahlungen ohne Bankauthentifizierung befolgt haben, erstellt Ihre Integration Zahlungen, die abgelehnt werden, wenn eine Bank den Kunden/die Kundin um eine Authentifizierung des Kaufs bittet.
Falls es vermehrt zu fehlgeschlagenen Zahlungen wie im Dashboard unten oder mit dem Fehlercode requires_
in der API kommt, sollten Sie Ihre Basis-Integration entsprechend erweitern, damit solche Zahlungen abgewickelt und nicht mehr pauschal abgelehnt werden.
In diesem Leitfaden erfahren Sie, wie Sie die im vorherigen Leitfaden erstellte Integration aktualisieren, um Server- und Client-Code hinzuzufügen, mit dem die Kund/innen aufgefordert werden, die Zahlung durch Anzeige eines Modals zu authentifizieren.
Notiz
Auf GitHub finden Sie ein vollständiges Code-Beispiel dieser Integration.
Prüfen, ob die Zahlung eine Authentifizierung erfordertServerseitig
Sie müssen auf Ihrem Server zwei Änderungen am Endpoint vornehmen, der den PaymentIntent erstellt:
- Entfernen Sie den Parameter error_on_requires_action, damit Zahlungen, die eine Authentifizierung erfordern, nicht mehr abgelehnt werden. Stattdessen wird der PaymentIntent-Status auf
requires_
gesetzt.action - Fügen Sie den Parameter
confirmation_
hinzu, um anzugeben, dass Sie die Zahlung auf dem Server explizit (manuell) erneut bestätigen möchten, nachdem Authentifizierungsanfragen bearbeitet wurden.method
Aktualisieren Sie anschließend Ihre Funktion „Antwort generieren“, sodass sie den Status requires_
verarbeitet, statt eine Fehlermeldung auszugeben:
Kund/innen sich authentifizieren lassenClientseitig
Aktualisieren Sie nun Ihren clientseitigen Code, damit Stripe ein Modal anzeigt, wenn sich Ihre Kund/innen authentifizieren müssen.
Nutzen Sie stripe.handleCardAction, wenn ein PaymentIntent den Status requires_
hat. Bei Erfolg erhält der PaymentIntent den Status requires_
. Sie müssen dann den PaymentIntent erneut auf Ihrem Server bestätigen, um die Zahlung abzuschließen.
const handleServerResponse = async (responseJson) => { if (responseJson.error) { // Show error from server on payment form } else if (responseJson.requiresAction) { // Use Stripe.js to handle the required card action const { error: errorAction, paymentIntent } = await stripe.handleCardAction(responseJson.clientSecret); if (errorAction) { // Show error from Stripe.js in payment form } else { // The card action has been handled // The PaymentIntent can be confirmed again on the server const serverResponse = await fetch('/pay', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ payment_intent_id: paymentIntent.id }) }); handleServerResponse(await serverResponse.json()); } } else { // Show success message } }
PaymentIntent erneut bestätigenServerseitig
Bestätigen Sie PaymentIntent erneut mit demselben Endpunkt, den Sie in zuvor angelegt haben, um die Zahlung abzuschließen und die Bestellung festzuschreiben. Der Zahlungsversuch schlägt fehl und wird auf requires_
zurückgesetzt, sofern die Zahlung nicht innerhalb einer Stunde erneut bestätigt wird.
Integration testen
Nutzen Sie unsere Testkarten im Testmodus, um sicherzustellen, dass Ihre Integration korrekt aktualisiert wurde. Stripe zeigt im Testmodus eine künstliche Authentifizierungsseite an, mit der Sie sowohl erfolgreiche als auch fehlgeschlagene Zahlungen simulieren können. Im Live-Modus kontrolliert die Bank, was innerhalb des Modals in der UI angezeigt wird.
Nummer | Beschreibung |
---|---|
Bei Erfolg sofortige Verarbeitung der Zahlung. | |
Schlägt stets mit dem Ablehnungscode insufficient_ fehl. | |
Erfordert eine Authentifizierung, die in dieser Integration zu einem Fehler führt. Der Ablehnungscode lautet dann authentication_ . |