Stille Abonnementfehler im Subscriptions-Plugin

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:

  1. Der Kunde hat eine abgelaufene Karte in seinem Stripe-Kundenprofil gespeichert.

  2. Der Kunde versucht, ein Abonnement abzuschließen oder seine Zahlungsmethode zu aktualisieren.

  3. Das Plugin erstellt einen PaymentIntent, gibt jedoch die neuen Kartendaten nicht an Stripe weiter.

  4. Die Transaktion schlägt mit dem Fehler resource_missing oder payment_intent_incompatible_payment_method fehl.

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 eines pm_-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.

1 „Gefällt mir“

Danke für den Fehlerbericht, Todd!

Ich habe ihn hierher nach Contribute > Bug verschoben, wo er hoffentlich die Aufmerksamkeit bekommt, die er verdient.

2 „Gefällt mir“