[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.
- CHIAVE:
Esempio:
- Se il nome completo del tuo gruppo Discourse è "Enclave Plus", il suo slug è probabilmente
EnclavePlus.- Devi usare
EnclavePluscome 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.completedcustomer.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>Impostazionie cercadiscourse 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 campodiscourse subscriptions pricing table id.
- Seleziona la casella per
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>Subscriptionse 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.
- Nickname piano:
- 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.
- Soluzione: L’URL dell’endpoint in Stripe non è corretto. Deve essere
- 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:
- I metadati devono essere sull’oggetto Prezzo Stripe, non sull’oggetto Prodotto.
- La CHIAVE dei metadati deve essere esattamente
group_name. - Il VALORE dei metadati deve essere lo slug/handle univoco del gruppo (ad esempio,
EnclavePlus), non il suo nome completo con spazi.
- Soluzione: I tuoi metadati non sono corretti. Controlla tre cose:
Spero che questa guida risparmi ad altri il tempo e la frustrazione di questa configurazione complessa ma molto potente.
