Ok, ich weiß, dass ich diesen Thread wieder aufgreife, aber 1.) das Problem wird weiterhin nicht gelöst, und 2.) ich hatte Zeit, mich wieder damit zu beschäftigen… es stellt sich heraus, dass ich ein Idiot war, der keine Anweisungen befolgen konnte. So habe ich herausgefunden, dass ich ein Dummkopf bin, und warum ich jetzt bereit bin, das zu lösen (mit etwas Hilfe).
Was ich schließlich getan habe, war, eine CSV-Datei von Stripe mit allen gekündigten Konten zu exportieren. Ich konzentrierte mich auf denselben Discourse-Benutzer, der oben in diesem Thread erwähnt wurde, der Abonnent war, gekündigt hatte, aber dann nicht wieder abonnieren konnte, weil die Abonnementseite als “gekauft” angezeigt wurde, obwohl seine Seite mit aktiven Abonnements keine Abonnements anzeigte. In den CSV-Daten wurde sein Datensatz als “gekündigt” mit den folgenden Daten angezeigt:
- id (sub_JNWejdDo4qhLG5)
- customer_id (cus_JmiMoqZNTzUNxt)
- user_id (Discourse-Benutzer-ID 4981)
Dann habe ich mich mit dem App-Container verbunden, bin in die Ruby-Konsole gegangen und habe angefangen, herumzustochern. Zuerst habe ich nach seiner Kunden-ID in DiscourseSubscriptions::Customer gesucht und sie gefunden.
[3] pry(main)> DiscourseSubscriptions::Customer.where(customer_id: 'cus_JNWeiIWTs6YOwQ')
=> [#<DiscourseSubscriptions::Customer:0x000055db2d48eb40
id: 16,
customer_id: "cus_JNWeiIWTs6YOwQ",
product_id: "prod_JJbwYnKz0T5Z9h",
user_id: 3256,
created_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00,
updated_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00>]
Als Nächstes habe ich DiscourseSubscriptions::Subscription durchsucht, um zu sehen, ob dieser Benutzer Abonnements hatte, und es stellt sich heraus, ja, das hatte er;
[1] pry(main)> DiscourseSubscriptions::Subscription.where(external_id: 'sub_JNWejdDo4qhLG5')
=> [#<DiscourseSubscriptions::Subscription:0x000055854e1e1620
id: 16,
customer_id: 16,
external_id: "sub_JNWejdDo4qhLG5",
created_at: Tue, 27 Apr 2021 07:45:07.459681000 UTC +00:00,
updated_at: Tue, 27 Apr 2021 07:45:07.459681000 UTC +00:00>]
Es scheint also, dass ich diesen Abonnementdatensatz einfach entfernen kann und alles reparieren kann… für diesen Benutzer. Tatsache ist, dass jeder gekündigte Benutzer, den ich in meinem CSV-Export überprüft habe, immer noch verbleibende Abonnements im System hatte. Offensichtlich gibt es eine Trennung irgendwo zwischen dem Stripe-Webhook und dem Abonnement-Plugin… ich weiß nur nicht wo/wie.
-
Erstens: Wie entferne ich sicher den Abonnementdatensatz für einen bestimmten Benutzer? Erklären Sie es mir, als wäre ich 5 Jahre alt. Ich bin an der Ruby-Konsolenaufforderung… wie stelle ich sicher, dass nur die Abonnementdaten des Zielbenutzers entfernt werden und ich nicht die Abonnementdaten aller lösche?
-
Zweitens: Wie behebe ich den Mechanismus des Webhooks für die Abonnementkündigung?
Ihre Hilfe wird sehr geschätzt!
UPDATE:
Ok, ich bin ein wenig weiter gekommen… ich habe herausgefunden, wie ich .delete_by verwenden kann, um nur Abonnementdaten für den Zielbenutzer zu entfernen.
[1] pry(main)> DiscourseSubscriptions::Subscription.delete_by(external_id: 'sub_JNWejdDo4qhLG5')
[2] pry(main)> DiscourseSubscriptions::Subscription.where(external_id: 'sub_JNWejdDo4qhLG5')
=> []
Der Kunden-Datensatz hat jedoch immer noch eine zugeordnete product_id;
[3] pry(main)> DiscourseSubscriptions::Customer.where(customer_id: 'cus_JNWeiIWTs6YOwQ')
=> [#<DiscourseSubscriptions::Customer:0x0000560ec18e4948
id: 16,
customer_id: "cus_JNWeiIWTs6YOwQ",
product_id: "prod_JJbwYnKz0T5Z9h",
user_id: 3256,
created_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00,
updated_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00>]
Das bedeutet, dass sie immer noch das grüne Häkchen sehen und sich nicht erneut anmelden können… also habe ich “destroy_all” auf das Customer-Objekt angewendet… und es hat funktioniert! Aber natürlich nur für diesen Benutzer…
[4] pry(main)> DiscourseSubscriptions::Customer.where(customer_id: 'cus_JNWeiIWTs6YOwQ').destroy_all
=> [#<DiscourseSubscriptions::Customer:0x0000560ec19770e0
id: 16,
customer_id: "cus_JNWeiIWTs6YOwQ",
product_id: "prod_JJbwYnKz0T5Z9h",
user_id: 3256,
created_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00,
updated_at: Tue, 27 Apr 2021 07:45:07.455275000 UTC +00:00>]
Jetzt geht es nur noch darum, zu diagnostizieren, warum der Stripe-Webhook für gekündigte Abonnements nicht funktioniert.