Plugin: discourse-subscriptions Version: Aktuell (als aktuell bestätigt) Discourse-Version: 3.5.4
Zusammenfassung des Fehlers: In bestimmten Randfällen erstellt das Plugin einen PaymentIntent, ohne eine gültige Zahlungsmethode zu hinterlegen, wodurch das Abonnement für den Endnutzer stillschweigend fehlschlägt.
Schritte zur Reproduktion:
-
Der Kunde hat eine abgelaufene Karte in seinem Stripe-Kundenprofil gespeichert.
-
Der Kunde versucht, ein Abonnement abzuschließen oder seine Zahlungsmethode zu aktualisieren.
-
Das Plugin erstellt einen PaymentIntent, gibt jedoch die neuen Kartendaten nicht an Stripe weiter.
-
Die Transaktion schlägt mit dem Fehler
resource_missingoderpayment_intent_incompatible_payment_methodfehl.
Stripe-Fehlerprotokolle:
resource_missing: Dieser Kunde hat keine hinterlegte Zahlungsquelle oder
keine standardmäßige Zahlungsmethode.
payment_intent_incompatible_payment_method: Es wurde erwartet, dass eine
Zahlungsmethode des Typs „card“ vorhanden ist, aber dieser PaymentIntent
verfügt über keine Zahlungsmethode und es wurde keine bereitgestellt.
Bestätigung durch Stripe:
-
Das Stripe-Konto ist in Ordnung; auf ihrer Seite liegen keine Probleme vor.
-
PaymentIntents wurden erstellt, ohne dass eine Zahlungsmethode hinterlegt war.
-
Das Plugin übermittelt in einigen Fällen ein
card_-Objekt statt einespm_-Payment-Method-Objekts – diese sind in der aktuellen Stripe-API nicht austauschbar.
Zusätzlicher Kontext:
-
Dies tritt etwa zweimal pro Monat in einer Community mit ca. 18.000 aktiven Mitgliedern auf.
-
Das Plugin ist eine integrierte Komponente, die auf Host-Ebene nicht geändert werden kann (Bestätigung durch Communiteq).
-
Der normale Checkout funktioniert einwandfrei; der Fehler tritt ausschließlich auf, wenn ein Kunde eine veraltete/abgelaufene Karte hinterlegt hat und eine neue Zahlung vornimmt.
-
Als Workaround kann man eine gehostete Stripe-Rechnung manuell versenden, dies löst jedoch nicht den Webhook aus, der die Discourse-Gruppe des Benutzers automatisch zuweist, was einen weiteren manuellen Schritt erfordert.
Anforderung: Eine Korrektur der Übergabe der Zahlungsmethode, wenn die vorhandene Karte des Kunden abgelaufen oder ungültig ist, sodass die neue Karteneingabe ein ordnungsgemäßes pm_-Payment-Method-Objekt erzeugt, das vor der Übermittlung korrekt mit dem PaymentIntent verknüpft wird.