Statusaktualisierung für Zahlungen
Überwachen und verifizieren Sie den Zahlungsstatus, um auf erfolgreiche und fehlgeschlagene Zahlungen reagieren zu können.
Aktualisierung von PaymentIntents als Antwort auf Aktionen des Kunden/der Kundin oder der Zahlungsmethode. Ihre Integration kann den PaymentIntent untersuchen, um den Status des Zahlungsvorgangs zu ermitteln, damit Sie Maßnahmen für Ihr Unternehmen ergreifen oder auf Status, die weitere Intervention erfordern, reagieren können.
Sie können das Stripe-Dashboard auch verwenden, um Ihr Konto so zu konfigurieren, dass es Sie per E-Mail über den Zahlungsstatus informiert, z. B. bei erfolgreichen Zahlungen. Ändern Sie Ihre E-Mail-Benachrichtigungen in Ihren Nutzereinstellungen.
PaymentIntent-Status auf dem Client prüfen
Beim Abschließen einer Zahlung auf dem Client über die Funktion confirmCardPayment können Sie den zurückgegebenen PaymentIntent prüfen, um seinen aktuellen Status zu ermitteln:
(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();
Nachfolgend finden Sie mögliche Ergebnisse der Verwendung der confirmCardPayment
-Funktion:
Ereignis | Was ist passiert | Erwartete Integration |
---|---|---|
Wird mit einer PaymentIntent beigelegt | Der Kunde/die Kundin hat die Zahlung auf Ihrer Zahlungsseite abgeschlossen | Den Kunden/die Kundin über erfolgreiche Zahlung informieren |
Wird mit einem Fehler beigelegt | Die Zahlung des Kunden/der Kundin auf Ihrer Zahlungsseite ist fehlgeschlagen | Eine Fehlermeldung anzeigen und Ihren Kunden/Ihre Kundin zu einem erneuten Zahlungsversuch auffordern |
Das von confirmCardPayment
zurückgegebene Promise wird erfüllt, wenn der Zahlungsvorgang entweder abgeschlossen oder mit einem Fehler fehlgeschlagen ist. Wenn er erfolgreich abgeschlossen wird und einen PaymentIntent zurückgibt, wird der Status immer als succeeded
angezeigt (oder als requires_
bei späterer Erfassung). Wenn bei der Zahlung ein weiterer Schritt, beispielsweise eine Authentifizierung, erforderlich ist, wird das Promise erst erfüllt, wenn dieser Schritt abgeschlossen ist oder ein Timeout auftritt.
PaymentIntent-Status auf dem Client prüfen ohne Verwendung von confirmCardPayment
Um den Status eines PaymentIntent ohne Verwendung der Funktion confirmCardPayment
zu prüfen, rufen Sie ihn unabhängig davon mit der Funktion retrievePaymentIntent ab und übergeben Sie das Client-Geheimnis.
Nachfolgend finden Sie einige mögliche Status des PaymentIntent nach einer Bestätigung.
Was ist passiert | Erwarteter PaymentIntent-Status |
---|---|
Der Kunde/die Kundin hat die Zahlung auf Ihrer Zahlungsseite abgeschlossen | succeeded |
Der Kunde/die Kundin hat die Zahlung nicht abgeschlossen | requires_ |
Die Zahlung des Kunden/der Kundin auf Ihrer Zahlungsseite ist fehlgeschlagen | requires_ |
Erfahren Sie mehr über die PaymentIntent-Status.
(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();
Überwachen Sie eine PaymentIntent mit Webhooks
Stripe kann Webhook-Ereignisse an Ihren Server senden, um Sie zu benachrichtigen, wenn sich der Status einer PaymentIntent ändert. Dies ist hilfreich, um beispielsweise zu ermitteln, wann Sie die Waren und Dienstleistungen abwickeln müssen.
Versuchen Sie nicht, die Ausführung auf der Client-Seite zu verarbeiten, da Kunden/Kundinnen die Seite nach Abschluss der Zahlung, jedoch vor Beginn des Abwicklungsprozesses verlassen können. Verwenden Sie stattdessen Webhooks, um das Ereignis payment_
zu überwachen und dessen Abschluss asynchron zu verarbeiten, statt zu versuchen, die Abwicklung auf der Client-Seite zu veranlassen.
Vorsicht
Technisch ist es möglich, Abfragen statt Webhooks zu verwenden, um die von asynchronen Abläufen ausgelösten Änderungen zu überwachen. Dazu müssen Sie einen PaymentIntent wiederholt abrufen, um seinen Status zu prüfen. Dies ist jedoch wesentlich weniger verlässlich und kann zu Problemen in Bezug auf Ratenbegrenzungen führen. Stripe setzt Ratenbegrenzungen für API-Anfragen um, verwenden Sie Abfragen daher mit Bedacht.
Um ein Webhook-Ereignis zu verarbeiten, erstellen Sie eine Route auf Ihrem Server und konfigurieren Sie einen entsprechenden Webhook-Endpoint im Dashboard. Stripe sendet das payment_
-Ereignis, wenn die Zahlung erfolgt ist und das payment_
-Ereignis, wenn die Zahlung fehlschlägt.
Die Webhook-Nutzlast enthält das PaymentIntent-Objekt. Das folgende Beispiel erklärt den Umgang mit beiden Ereignissen:
Wenn eine Zahlung fehlgeschlagen ist, finden Sie weitere Details, indem Sie die Eigenschaft last_
des PaymentIntent untersuchen. Sie können den Kunden/die Kundin benachrichtigen, dass seine/ihre Zahlung nicht erfolgt ist und ihn/sie auffordern, es mit einer anderen Zahlungsmethode erneut zu versuchen. Verwenden Sie denselben PaymentIntent, um den Kauf des Kunden/der Kundin nachzuverfolgen.
Bestimmte Webhook-Ereignisse verarbeiten
Die folgende Liste beschreibt, wie Sie Webhook-Ereignisse verarbeiten:
Ereignis | Beschreibung | Nächste Schritte |
---|---|---|
processing | Die Zahlung der Kundin/des Kunden wurde erfolgreich an Stripe übermittelt. Dies gilt nur für Zahlungsmethoden mit verzögerten Benachrichtigungen. | Warten Sie, bis die initiierte Zahlung erfolgt oder fehlschlägt. |
succeeded | Die Kundenzahlung war erfolgreich | Führen Sie die Bestellung der gekauften Waren oder Dienstleistungen aus |
amount_ | Die Zahlung des Kunden/der Kundin ist autorisiert und kann erfasst werden | Erfassen Sie die Gelder, die für die Zahlung verfügbar sind |
payment_ | Die Zahlung des Kunden/der Kundin wurde vom Kartennetzwerk abgelehnt oder ist aus einem anderen Grund verfallen | Kontaktieren Sie Ihren Kunden/Ihre Kundin per E-Mail oder Push-Benachrichtigung und fordern Sie ihn/sie auf, eine andere Zahlungsmethode anzugeben |
Verwenden Sie die Stripe-CLI, um Webhooks lokal zu testen. Nach der Installation können Sie Ereignisse an Ihren Server weiterleiten:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Erfahren Sie mehr über die Einrichtung von Webhooks.
Zahlungen auf einer PaymentIntent identifizieren
Wenn Sie versuchen, eine Kundenzahlung einzuziehen, erstellt der PaymentIntent eine Abbuchung. Zeigen Sie die latest_charge-Eigenschaft des PaymentIntent an, um die ID der aktuellen Zahlung prüfen zu können:
Um alle Abbuchungen im Zusammenhang mit einem PaymentIntent anzuzeigen, einschließlich aller fehlgeschlagener Abbuchungen, listen Sie alle Abbuchungen auf und geben Sie den payment_
-Parameter an.
Weitere Aktionen
Für manche Zahlungsmethoden sind zusätzliche Schritte erforderlich, wie beispielsweise die Authentifizierung, um den Zahlungsvorgang abzuschließen. Stripe.js verarbeitet diese automatisch bei der Bestätigung der PaymentIntent. Wenn Sie jedoch über eine fortgeschrittene Integration verfügen, sollten Sie diese manuell verarbeiten.
Die Eigenschaft next_action des PaymentIntent zeigt den nächsten Schritt an, den Ihre Integration verarbeiten muss, um die Zahlung abzuschließen. Die Art der potenziellen nächsten Schritte kann sich je nach Zahlungsmethode unterscheiden. Eine Liste der möglichen nächsten Aktionen finden Sie in der API-Dokumentation.
In der Dokumentation zu den Zahlungsmethoden finden Sie weitere Informationen zur Handhabung der erforderlichen nächsten Aktionen.