Discourse Abonnement-Plugin

Haben Sie die Webhooks korrekt konfiguriert? Ich erinnere mich, dass diese ziemlich kompliziert einzurichten waren und die Anweisungen dazu etwas klarer sein könnten.

Ja, die Webhooks sind gut eingerichtet, so floss die Antwort zurück.

Ich habe das Problem gefunden. In den Anweisungen fehlt ein Punkt, an dem wir die benutzerdefinierten Tags mit dem Gruppennamen einrichten müssen, der auf der Stripe-Preis-Konfigurationsseite beworben werden soll.

Es funktioniert jetzt bei mir einwandfrei. Das Plugin ist großartig, aber die Dokumentation ist nicht detailliert.

1 „Gefällt mir“

[quote=“SubStrider, post:710, topic:140818”]Die Anweisungen lassen einen Punkt aus, an dem wir die benutzerdefinierten Tags mit dem Gruppennamen einrichten müssen, der auf der Stripe-Preisgestaltungskonfigurationsseite beworben werden soll.

[/quote]

Können Sie dies etwas genauer erläutern, damit wir jemanden die Dokumentation aktualisieren lassen können? Welches benutzerdefinierte Tag haben Sie hinzugefügt und wo haben Sie es hinzugefügt?

[Anleitung] So richten Sie Discourse-Abonnements mit Stripe-Preistabellen ein (und häufige Fallstricke)

Hallo zusammen,

Nach einem langwierigen Fehlerbehebungsprozess möchte ich eine definitive Anleitung zum Einrichten des offiziellen discourse-subscriptions-Plugins mit der modernen Stripe Pricing Table-Methode teilen. Dieser Ansatz ist leistungsstark, hat aber einige kritische Schritte, die nicht sofort ersichtlich sind und zu Fehlern wie fehlgeschlagenen Webhooks (404 Not Found) oder Benutzern, die nach einer erfolgreichen Zahlung nicht zu Gruppen hinzugefügt werden, führen können.

Hier ist der Schritt-für-Schritt-Prozess, der nachweislich funktioniert.


Teil 1: Stripe-Konfiguration

Dieser Prozess verwendet Stripe als „Single Source of Truth“ für alle Produkte und Preise.

1. Erstellen Sie Ihre Produkte und Preise

  • Stellen Sie in Ihrem Stripe Dashboard sicher, dass Sie sich im Live-Modus befinden.
  • Gehen Sie zu Produkte > Produktkatalog.
  • Erstellen Sie zuerst Ihre Hauptprodukte (z. B. „Premium-Mitgliedschaft“, „VIP-Zugang“).
  • Erstellen Sie unter jedem Produkt alle zugehörigen Preise (z. B. XX / Monat, XXX / Jahr).

2. Der ENTSCHEIDENDE Metadaten-Schritt Damit das Plugin Benutzer automatisch zu einer Gruppe hinzufügt, müssen Sie jedem einzelnen Preisobjekt bestimmte Metadaten hinzufügen. Die Benutzeroberfläche des Stripe Dashboards kann dies schwer auffindbar machen.

  • Wenn Sie einen neuen Preis erstellen (oder wenn Sie die Option „Preis bearbeiten“ finden können), müssen Sie Metadaten hinzufügen. Möglicherweise müssen Sie während der Preiserstellung auf „Zusätzliche Optionen“ klicken, um die Metadatenfelder anzuzeigen.
  • Klicken Sie auf + Metadaten hinzufügen und geben Sie Folgendes ein:
    • SCHLÜSSEL: group_name
    • WERT: Der eindeutige, URL-sichere Slug/Handle der Gruppe aus Discourse, nicht ihr vollständiger Name.

Beispiel:

  • Wenn der vollständige Name Ihrer Discourse-Gruppe „Enclave Plus“ lautet, ist ihr Slug wahrscheinlich EnclavePlus.
  • Sie müssen EnclavePlus als Wert verwenden. Die Verwendung von „Enclave Plus“ mit einem Leerzeichen schlägt fehl.
  • Sie müssen dies für jeden Preisplan wiederholen, den Sie mit einer Gruppe verknüpfen möchten.

3. Erstellen Sie Ihre Stripe-Preistabelle

  • Gehen Sie zu Produkte > Preistabellen.
  • Erstellen Sie eine neue Tabelle und fügen Sie die gerade konfigurierten Preise hinzu.
  • Klicken Sie nach der Veröffentlichung der Tabelle auf die Schaltfläche „Code kopieren“, um Ihre Preistabellen-ID zu erhalten (sie beginnt mit prctbl_...).

4. Konfigurieren Sie den Webhook-Endpunkt (Die 404-Fehlerbehebung) Dies ist der häufigste Fehlerpunkt.

  • Gehen Sie zu Entwickler > Webhooks und klicken Sie auf + Endpunkt hinzufügen.
  • Die Endpunkt-URL muss dem folgenden Format entsprechen: https://your-discourse-site.com/s/hooks
    Hinweis: Der richtige Pfad ist /s/hooks, nicht /s/stripe/webhook.
  • Fügen Sie für Zu sendende Ereignisse mindestens Folgendes hinzu:
    • checkout.session.completed
    • customer.subscription.deleted
  • Erstellen Sie den Endpunkt und kopieren Sie das Signaturgeheimnis (es beginnt mit whsec_...).

Teil 2: Discourse-Konfiguration

Nun konfigurieren wir das Plugin, um alles zu verwenden, was Sie in Stripe eingerichtet haben.

1. Geben Sie API-Schlüssel und Preistabellen-ID ein

  • Gehen Sie zu Admin > Einstellungen und suchen Sie nach discourse subscriptions.
  • Geben Sie Ihre Live-Stripe-Schlüssel ein:
    • discourse subscriptions public key (pk_live_...)
    • discourse subscriptions secret key (sk_live_...)
    • discourse subscriptions webhook secret (whsec_...)
  • Aktivieren Sie den Preistabellen-Modus:
    • Aktivieren Sie das Kontrollkästchen für discourse subscriptions pricing table enabled.
    • Fügen Sie Ihre prctbl_...-ID in das Feld discourse subscriptions pricing table id ein.

2. Verknüpfen Sie Stripe-Produkte mit Discourse-Gruppen Auch mit einer Preistabelle müssen Sie Discourse mitteilen, welche Gruppe zu welchem Produkt gehört.

  • Gehen Sie zu Admin > Plugins > Subscriptions und klicken Sie auf den Tab Produkte.
  • Klicken Sie auf Neues Produkt erstellen.
  • Geben Sie einen Produktnamen ein, der exakt mit dem Produktnamen in Stripe übereinstimmt (z. B. Enclave Plus).
  • Speichern Sie das Produkt. Scrollen Sie auf der Produktseite nach unten und klicken Sie auf Neuen Plan hinzufügen.
  • Dieser Plan ist nur eine „Brücke“. Das einzige kritische Feld ist Benutzergruppe.
    • Plan-Nickname: Enclave Plus Group Link (oder etwas für Ihre Referenz).
    • Benutzergruppe: Wählen Sie die richtige Discourse-Gruppe aus dem Dropdown-Menü aus.
    • Die anderen Felder (Betrag, Intervall) können als Standard belassen werden, da sie ignoriert werden.
  • Speichern Sie den Plan. Wiederholen Sie dies für alle Ihre verschiedenen Produkte.

Zusammenfassung der Fehlerbehebung

  • Problem: Webhooks schlagen mit einem 404 Not Found-Fehler fehl.
    • Lösung: Ihre Endpunkt-URL in Stripe ist falsch. Sie muss https://your-discourse-site.com/s/hooks lauten.
  • Problem: Der Webhook ist erfolgreich (200 OK) und die Zahlung wird im Abrechnungsprofil des Benutzers angezeigt, aber er wird nicht zur Gruppe hinzugefügt.
    • Lösung: Ihre Metadaten sind falsch. Überprüfen Sie drei Dinge:
      1. Die Metadaten müssen sich auf dem Stripe Price-Objekt befinden, nicht auf dem Produktobjekt.
      2. Der Metadaten-SCHLÜSSEL muss exakt group_name lauten.
      3. Der Metadaten-WERT muss der eindeutige Slug/Handle der Gruppe sein (z. B. EnclavePlus), nicht sein vollständiger Name mit Leerzeichen.

Ich hoffe, diese Anleitung erspart anderen die Zeit und Frustration dieser komplexen, aber sehr leistungsfähigen Einrichtung.

5 „Gefällt mir“

[quote=“SubStrider, post:712, topic:140818”]
4. Konfigurieren Sie den Webhook-Endpunkt (Die 404-Fehlerbehebung) Dies ist der häufigste Fehlerpunkt.

  • Gehen Sie zu **Entwickler
4 „Gefällt mir“

Der entscheidende Teil, der in der Dokumentation fehlt, ist dieser. Ich weise darauf hin, da Sie einen anderen Teil zitiert haben.

2 „Gefällt mir“

Gibt es eine Möglichkeit, das Ankerdatum damit automatisch festzulegen? Wenn jemand bezahlt, muss ich den Abonnementzeitraum für jeden Benutzer manuell auf den 1. des Monats zurücksetzen.

Die Stripe-Dokumentation besagt, dass dies per API beim Checkout erfolgen kann, aber wir haben derzeit keine Möglichkeit, dies im Plugin anzupassen.

Ich verschiebe dies in den neuen Thread, da er mit Updates lang werden könnte.

3 „Gefällt mir“

:partying_face: Dieses Plugin ist jetzt Teil des Discourse-Kerns im Rahmen von Bundling more popular plugins with Discourse core. Wenn Sie selbst hosten und das Plugin verwenden, müssen Sie es vor Ihrem nächsten Upgrade aus Ihrer app.yml entfernen.

2 „Gefällt mir“

Wie entferne ich es aus dem Kern? Da ich die Plugin-Fork verwenden würde, die ich verbessert habe.

3 „Gefällt mir“

Etwas wie
rm - rf discourse-subscroptions
Vor dem git clone.

3 „Gefällt mir“

Entschuldigung, das habe ich nicht verstanden. Während des Wiederaufbaus wird dieser integrierte Plugin-Code abgerufen und in einem Schritt erstellt, nicht wahr?

Ich habe das nicht getestet, aber ich bin ziemlich sicher, dass das funktionieren wird:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - rm -rf discourse-subscriptions
          - git clone https://github.com/yourForkUser/discourse-subscriptions

Da dies aus dem Plugins-Verzeichnis ausgeführt wird, wird das jetzt im Kern enthaltene discourse-subscriptions entfernt und durch das ersetzt, das Sie immer zuvor verwendet haben. Wenn Sie also nur dieses rm -rf zu Ihrer app.yml vor Ihrem git clone (für dieses oder jedes andere Plugin, das Sie nicht einschließen oder ersetzen möchten) hinzufügen, sollte dies das tun, was Sie wollen, und das Kern-Plugin durch Ihre Fork ersetzen.

6 „Gefällt mir“

Also, wenn sie sagen, dass X Plugin jetzt Teil des Kerns ist, meinen sie damit nur, dass das Plugin im Kern-Repository im Plugin-Verzeichnis vorinstalliert sein wird und wir diesen Code nicht optional herunterladen müssen. Verstanden. Strukturell ändert sich nichts.

1 „Gefällt mir“

Wenn es jetzt vorverpackt ist. Verliere ich alle Daten in der Plugin-Version? Muss ich es komplett neu einrichten oder werden die Daten übernommen?

Sie werden keine Daten verlieren. Entfernen Sie einfach die Zeile aus app.yml und das Plugin wird wie zuvor weiter funktionieren.

1 „Gefällt mir“

Ist es ein erwartetes Verhalten, dass sich der Gesamtbetrag des Abonnements nach Eingabe eines Gutscheincodes nicht sofort aktualisiert?

Getestet auf Discourse 3.5.0.beta8-dev

Ich habe festgestellt, dass, wenn ein Benutzer versucht, sich anzumelden, und seine Zahlung fehlschlägt, der Eintrag in der Tabelle discourse_subscriptions_customer, der ihn mit seiner Stripe-Kunden-ID verknüpft, entfernt wird. Ich bin mir nicht sicher, ob dieses Verhalten beabsichtigt ist, aber unabhängig davon glaube ich nicht, dass es ein gutes Verhalten ist, da es zu verwaisten Kunden in Stripe führt, die manuell gelöscht werden müssen. Dies führt auch zu doppelten Kunden, die erstellt werden, wenn sie es erneut versuchen, was sich auf unsere Berichterstattung auswirken kann.

3 „Gefällt mir“

Gibt es eine Möglichkeit, die Kampagne zurückzusetzen? Ich hatte auf ein monatliches Spendenziel gehofft, aber es ist der Beginn eines neuen Monats und ich sehe keine Möglichkeit, es für ein neues monatliches Ziel auf Null zurückzusetzen.

Ich würde dieses Plugin gerne in Aktion auf einer Website sehen. Ist jemand bereit, den Link zu seinem Forum zu teilen, das das Subscriptions Plugin verwendet? Danke!