Statusaktualisierung für Zahlungen
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 die zurückgegebene PaymentIntent prüfen, um ihren 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 ist und eine PaymentIntent zurückgibt, wird der Status immer als succeeded
angezeigt (oder als requires_capture
bei späterer Erfassung). Wenn die Zahlung einen zusätzlichen Schritt, wie Authentifizierung, erfordert, 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 ab, indem Sie die Funktion retrievePaymentIntent
verwenden und sie im Client-Geheimnis übergeben.
Nachfolgend finden Sie einige mögliche Status der 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_action |
Die Zahlung des Kunden/der Kundin auf Ihrer Zahlungsseite ist fehlgeschlagen | requires_payment_method |
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_intent.succeeded
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 eine PaymentIntent wiederholt abrufen, um ihren Status zu prüfen. Dies ist jedoch wesentlich weniger verlässlich und kann zu Problemen in Bezug auf Rateneinschränkungen führen. Stripe setzt Rateneinschränkungen 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_intent.succeeded
-Ereignis, wenn die Zahlung erfolgt ist und das payment_intent.payment_failed
-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_payment_error
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_capturable_updated | 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_failed | 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)
Weitere Infos zum Einrichten 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 aktuellsten 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_intent
-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 der 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.