Richiesta di funzionalità: Vorrei poter offrire un abbonamento che dura per un solo periodo. Alla fine di quel periodo:
L’utente dovrebbe essere rimosso dal gruppo Discourse dell’abbonamento (cosa che non credo accada con i pagamenti una tantum attuali).
Non dovrebbero essere prelevati ulteriori pagamenti.
Possibile soluzione? Il plugin Discourse Subscriptions dovrebbe consentire di impostare l’attributo iteration di una pianificazione di abbonamento. Ho trovato questo nella documentazione di Stripe, nella pagina Subscription Schedules API:
Impostazione della durata di una fase
L’ intervallo di un prezzo determina la frequenza di fatturazione di un abbonamento. Ad esempio, un intervallo mensile viene fatturato ogni mese. Le fasi hanno un attributo iterations che si utilizza per specificare la durata di una fase. Moltiplicare questo valore per l’intervallo per determinare la durata della fase. Se una pianificazione di abbonamento utilizza un prezzo con un intervallo mensile e si imposta iterations=2, la fase dura due mesi.
…
Completamento di una pianificazione
Le pianificazioni di abbonamento terminano dopo il completamento dell’ultima fase. A questo punto, l’abbonamento viene mantenuto e non è più associato alla pianificazione. Se si desidera annullare un abbonamento dopo il completamento dell’ultima fase di una pianificazione, è possibile impostare end_behavior su cancel.
No, sfortunatamente c’erano troppe idiosincrasie e funzionalità mancanti con questo plugin. Non so se sia cambiato da quando ho posto la domanda, però.
In bocca al lupo! Lo troveremmo estremamente utile anche per diversi casi d’uso, specialmente per eventi unici.
Sono abbastanza sicuro che ormai sia arrivato al “regola delle tre unità”.
Non esitare a contattarci se hai altri problemi con questo plugin. Penso di essere a conoscenza della maggior parte, ma ci sono ancora alcune parti di cui vorrei saperne di più. Ad esempio, vorrei saperne di più sulla tua percezione della funzionalità della campagna. C’è qualcuno qui che l’ha usata?
Sto usando la campagna per betterstreets.nz. Va bene, ma è piuttosto inflessibile. L’ho impostata 9 mesi fa, ed è ancora in corso (sebbene estremamente lentamente!).
Il mio problema più grande è che al momento non posso semplicemente far donare X importo; invece, devono abbonarsi annualmente.
Inoltre, è presentato in questi stessi termini - cioè, mensilmente. Ciò rende gli importi strani, e non è davvero il modo in cui la maggior parte delle persone pensa per una campagna: da zero a X come importo assoluto. Anche se presentato annualmente sarebbe molto meglio.
I banner vanno bene (in alto per le pagine di scoperta e in basso per gli argomenti), ma non sono molto personalizzabili. Sarebbe bello renderli più grandi o più piccoli in modo da adattarsi al resto del sito (ad esempio, altri banner / piè di pagina).
Una volta che un utente li ha chiusi su un dispositivo, sarebbe bello poterli riattivare occasionalmente, o farli rimpicciolire in qualcosa di molto più discreto (ma ancora presente finché la persona non ha donato).
Capisco. Mi sono iscritto al tuo forum per verificarlo e capisco cosa intendi.
Forse sarebbe bene non renderli affatto dismissabili? Non sembrano molto invadenti e offrono informazioni preziose anche a persone che hanno già donato. Danno alla community un obiettivo comune e i donatori meritano di essere riconosciuti per il loro contributo.
Ci sono molti modi per creare banner in Discourse. Quale metodo utilizzi attualmente?
Qualcosa che ho notato: non ero a conoscenza della possibilità di donare alla tua impresa finché non mi sono iscritto al forum. Come sappiamo, la maggior parte del pubblico sarà costituita da lettori passivi e solo una piccola minoranza deciderà di registrarsi.
Quindi sembra una buona idea mostrare il banner della campagna anche agli utenti non registrati. Sono sicuro che ci sono molte persone che vorrebbero donare ma che attualmente non sono membri attivi / registrati.
In betterstreets.nz, uso solo il banner che fa parte della sezione delle campagne del plugin Subscriptions. La sua presenza mi impedisce di aggiungere altri banner!
Uso altri banner in altri siti, però.
Sono totalmente d’accordo, ma solo se fosse super chiaro e facile per loro farlo!
Non ricordo il gergo di Stripe, ma l’intero plugin ruota attorno al loro vecchio modo di fare le cose (che consente solo carte di credito) anziché al nuovo modo (che consente un’ampia varietà di opzioni di pagamento).
La cancellazione è descritta in modo confuso (a memoria, si tratta della cancellazione del rinnovo automatico ma sembra essere descritta come cancellazione immediata).
Inoltre, sarebbe ottimo se fosse possibile effettuare un abbonamento contemporaneamente alla registrazione al forum. Al momento, il processo a due fasi non è ideale per tutti gli scenari.
Ho risolto con successo l’abbonamento una tantum con un intervallo di tempo aggiungendo un nuovo metadato (“recurring:0/1”) nell’oggetto price. E quando si tenta di creare un abbonamento con price[:metadata][:recurring]==“0”, imposterò il valore cancel_at_end = true nell’oggetto Subscription.
Quindi, quando crei un prezzo una tantum, devi comunque scegliere un intervallo (anno, mese, giorno, settimana), ma non dovresti selezionare la casella “recurring”.
E quando un utente si abbona, il backend creerà un abbonamento ricorrente che terminerà alla data di fine. L’utente non dovrà annullare il rinnovo da solo.
Questo argomento è diventato piuttosto confuso. Non mi è immediatamente chiaro come posso districarlo in modo pulito.
Anche se suggerirei a tutti di cercare di attenersi a un problema/funzionalità per argomento, in modo che siano più facili da seguire e tenere traccia.
Dovete anche aggiungere il segreto webhook di Stripe all’istanza di Discourse (come impostazione del plugin “webhook secret”). Potete trovarlo nell’esempio di codice a destra nel modulo di creazione webhook su Stripe.
Ho realizzato un breve video per dare una panoramica delle strutture dati e di come si collegano alle strutture dati di Discourse:
Praticamente sono d’accordo con questo, ma ora dovrebbe essere risolto. Potete configurare qualsiasi cosa vogliate in Stripe con questo (metodi di pagamento / tasse / tabelle dei prezzi ecc.) e dovrebbe funzionare tutto.
Il plugin gestisce solo la connessione tra gli utenti di Discourse e i clienti Stripe, e la creazione di prodotti, piani, ecc. viene fatta completamente nella dashboard di Stripe.
Potrebbero esserci ancora dei bug. Se vedete qualcosa, per favore segnalatelo.
Quindi questa è una fork che hai intenzione di sottoporre come richiesta di PR per il plugin ufficiale una volta che sarà un po’ più rifinita? Se sì, fantastico!!! E grazie per il tuo buon lavoro e la tua energia in questo!
Se sì, ci proverò a breve. Ci vorrà un po’ di smanettamento per testarla completamente, ovviamente.
Questo è necessario solo per un’istanza di sviluppo che viene eseguita localmente sul tuo computer. Ad esempio, puoi vedere nel video che la mia istanza di Discourse viene eseguita su localhost:4200, il che significa che viene eseguita sul mio computer.
Se vuoi ricreare esattamente questo ambiente, puoi seguire questa guida:
Poiché il server Stripe non può raggiungere l’indirizzo localhost:4200 sulla mia rete locale, è necessario eseguire questo comando per inoltrare le richieste webhook provenienti dal server Stripe.
Se vuoi provare questo su un server connesso a Internet, puoi seguire la configurazione dei webhook del tutorial ufficiale: Discourse Subscriptions Plugin
Per favore, non installarlo (ancora) su un’istanza che ha già dati clienti live e la vecchia versione del plugin Discourse Subscriptions installata. Provalo su un secondo server di staging, perché le due versioni saranno in conflitto.
Grazie mille per aver testato questo! Abiliterà anche i visitatori che non hanno ancora un account ad acquistare un piano. Verranno invitati automaticamente all’istanza di Discourse e avranno le appartenenze ai gruppi appropriate una volta pagato.
Ho un sito live relativamente tranquillo (betterstreets.nz) con solo 3 clienti, me compreso, derivanti da un esperimento precedente essenzialmente fallito. Sarei abbastanza felice di testarlo lì, rimuovendo il plugin precedente e i suoi dati se necessario (anche se avrei bisogno di una mano con il comando corretto della console Rails). Avrei ancora un conflitto in quel caso?