Hallo,
ich teste derzeit dieses Plugin für eine zukünftige Nutzung auf meiner Instanz und bin auf ein Problem gestoßen.
Mein Stripe-Konto ist neu und noch nicht verifiziert, weshalb es Testdaten verwendet, die ich im Stripe-Dashboard unter „Entwickler“ löschen kann. Das Problem besteht darin, dass das Löschen der Daten in Stripe nicht dieselben Daten auf der Forum-Instanz entfernt. Dies kann zu einem Absturz der Seite „Abrechnung > Zahlung“ eines Benutzers führen.
Schritte zur Reproduktion
- Einen Abonnement-Plan erstellen.
- Einen Benutzer für den Plan abonnieren. Stripe weist ihm eine
customer_idzu, z. B.cus_abcd1234567890. - Die Daten im Stripe-Dashboard löschen.
- Beim erneuten Öffnen der Abrechnungsseite des Benutzers kommt es beim Laden von
/s/user/paymentzu einem Absturz. In der Webbrowser-Konsole erscheint folgende Fehlermeldung:
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
Nach einer Untersuchung der Datenbank meiner Instanz habe ich in den folgenden Tabellen veraltete Daten aus mehreren Löschvorgängen gefunden:
discourse_subscriptions_customers: Verursacht einen Absturz der Benutzer-Abrechnungsseite.discourse_subscriptions_productsdiscourse_subscriptions_subscriptions
Die letzten beiden Tabellen scheinen keinen Absturz auszulösen. Dennoch enthalten sie veraltete Daten.
Das manuelle Löschen der betroffenen Zeilen in discourse_subscriptions_customers behebt den Absturz. Allerdings ist das Durchführen einer SQL-Abfrage kompliziert und riskant, insbesondere für unerfahrene Benutzer.
Zu beachten ist zudem, dass dieses Problem nicht auftritt, wenn Benutzerinformationen manuell im Stripe-Dashboard gelöscht werden. Stripe behält archiviert Informationen über den Benutzer und markiert ihn als „dauerhaft gelöscht“.
Vorgeschlagene Lösungen
Falls möglich, eine Möglichkeit schaffen, damit Stripe Discourse mitteilt, dass Testdaten gelöscht wurden, und Discourse die entsprechenden Daten in diesen Tabellen entfernt.
Oder:
In den Plugin-Optionen einen Button zum „Löschen der Testdaten“ hinzufügen, versehen mit einer großen roten Warnbeschriftung, damit der Administrator genau weiß, was er tut.