Plugin per le sottoscrizioni Discourse

[Guida] Come configurare gli abbonamenti a Discourse con le tabelle dei prezzi di Stripe (e le insidie comuni)

Ciao a tutti,

Dopo un lungo processo di risoluzione dei problemi, volevo condividere una guida definitiva per configurare il plugin ufficiale discourse-subscriptions utilizzando il moderno metodo Stripe Pricing Table. Questo approccio è potente ma presenta alcuni passaggi critici che non sono immediatamente evidenti e possono portare a errori come webhook non funzionanti (404 Not Found) o utenti non aggiunti ai gruppi dopo un pagamento andato a buon fine.

Ecco il processo passo dopo passo che è confermato funzionare.


Parte 1: Configurazione Stripe

Questo processo utilizza Stripe come "fonte di verità" per tutti i prodotti e prezzi.

1. Crea i tuoi prodotti e prezzi

  • Nella tua dashboard Stripe, assicurati di essere in Modalità Live.
  • Vai su Prodotti > Catalogo prodotti.
  • Crea prima i tuoi prodotti principali (ad esempio, "Premium Membership", "VIP Access").
  • Sotto ogni prodotto, crea tutti i prezzi associati (ad esempio, XX / mese, XXX / anno).

2. Il passaggio CRUCIALE dei metadati Affinché il plugin aggiunga automaticamente gli utenti a un gruppo, devi aggiungere metadati specifici a ogni singolo oggetto Prezzo che crei. L’interfaccia utente della dashboard Stripe può rendere difficile trovarlo.

  • Quando crei un nuovo prezzo (o se riesci a trovare l’opzione "Modifica prezzo"), devi aggiungere i metadati. Potrebbe essere necessario fare clic su "Opzioni aggiuntive" durante la creazione del prezzo per visualizzare i campi dei metadati.
  • Fai clic su + Aggiungi metadati e inserisci quanto segue:
    • CHIAVE: group_name
    • VALORE: Lo slug/handle univoco e sicuro per l’URL del gruppo da Discourse, non il suo nome completo.

Esempio:

  • Se il nome completo del tuo gruppo Discourse è "Enclave Plus", il suo slug è probabilmente EnclavePlus.
  • Devi usare EnclavePlus come valore. Usare \"Enclave Plus\" con uno spazio causerà un errore.
  • Devi ripetere questo passaggio per ogni piano tariffario che desideri collegare a un gruppo.

3. Crea la tua tabella dei prezzi Stripe

  • Vai su Prodotti > Tabelle dei prezzi.
  • Crea una nuova tabella e aggiungi i Prezzi che hai appena configurato.
  • Dopo aver pubblicato la tabella, fai clic sul pulsante "Copia codice" per ottenere il tuo ID tabella dei prezzi (inizia con prctbl_...).

4. Configura l’endpoint webhook (La correzione dell’errore 404) Questo è il punto di errore più comune.

  • Vai su Sviluppatori > Webhook e fai clic su + Aggiungi endpoint.
  • L’URL dell’endpoint deve essere nel seguente formato: https://iltuositodiscourse.com/s/hooks
    Nota: il percorso corretto è /s/hooks, non /s/stripe/webhook.
  • Per Eventi da inviare, aggiungi almeno:
    • checkout.session.completed
    • customer.subscription.deleted
  • Crea l’endpoint e copia il Segreto di firma (inizia con whsec_...).

Parte 2: Configurazione Discourse

Ora, configuriamo il plugin per utilizzare tutto ciò che hai impostato in Stripe.

1. Inserisci le chiavi API e l’ID della tabella dei prezzi

  • Vai su Admin > Impostazioni e cerca discourse subscriptions.
  • Inserisci le tue chiavi Stripe live:
    • discourse subscriptions public key (pk_live_...)
    • discourse subscriptions secret key (sk_live_...)
    • discourse subscriptions webhook secret (whsec_...)
  • Abilita la modalità tabella dei prezzi:
    • Seleziona la casella per discourse subscriptions pricing table enabled.
    • Incolla il tuo ID prctbl_... nel campo discourse subscriptions pricing table id.

2. Collega i prodotti Stripe ai gruppi Discourse Anche con una tabella dei prezzi, devi dire a Discourse a quale gruppo appartiene quale prodotto.

  • Vai su Admin > Plugin > Subscriptions e fai clic sulla scheda Prodotti.
  • Fai clic su Crea nuovo prodotto.
  • Inserisci un Nome prodotto che corrisponda esattamente al Nome prodotto in Stripe (ad esempio, Enclave Plus).
  • Salva il prodotto. Nella pagina del prodotto, scorri verso il basso e fai clic su Aggiungi nuovo piano.
  • Questo piano è solo un "ponte". L’unico campo critico è Gruppo utenti.
    • Nickname piano: Enclave Plus Group Link (o qualsiasi cosa per riferimento).
    • Gruppo utenti: Seleziona il gruppo Discourse corretto dal menu a discesa.
    • Gli altri campi (Importo, Intervallo) possono essere lasciati come predefiniti, poiché verranno ignorati.
  • Salva il piano. Ripeti questo passaggio per tutti i tuoi diversi prodotti.

Riepilogo risoluzione problemi

  • Problema: I webhook falliscono con un errore 404 Not Found.
    • Soluzione: L’URL dell’endpoint in Stripe non è corretto. Deve essere https://iltuositodiscourse.com/s/hooks.
  • Problema: Il webhook ha successo (200 OK) e il pagamento appare nel profilo di fatturazione dell’utente, ma non viene aggiunto al gruppo.
    • Soluzione: I tuoi metadati non sono corretti. Controlla tre cose:
      1. I metadati devono essere sull’oggetto Prezzo Stripe, non sull’oggetto Prodotto.
      2. La CHIAVE dei metadati deve essere esattamente group_name.
      3. Il VALORE dei metadati deve essere lo slug/handle univoco del gruppo (ad esempio, EnclavePlus), non il suo nome completo con spazi.

Spero che questa guida risparmi ad altri il tempo e la frustrazione di questa configurazione complessa ma molto potente.

5 Mi Piace