Ciao,
Sto attualmente provando questo plugin per un uso futuro sulla mia istanza e ho riscontrato un problema.
Il mio account Stripe è nuovo e non verificato, il che significa che utilizza dati di test che posso cancellare dalla dashboard di Stripe > Sviluppatori.
Il problema è che cancellare i dati su Stripe non elimina gli stessi dati sull’istanza del forum. Questo può causare un crash della pagina Fatturazione > Pagamento di un utente.
Passaggi per riprodurre il problema
- Crea un piano di abbonamento
- Iscriviti un utente al piano. Stripe gli assegnerà un
customer_idcomecus_abcd1234567890 - Cancella i dati dalla dashboard di Stripe
- Riprovare ad aprire la pagina di fatturazione dell’utente causerà un crash durante il caricamento di
/s/user/payment, con il seguente testo di risposta nella console del browser:
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
Dopo aver esplorato il database della mia istanza, ho trovato dati precedenti di diverse cancellazioni che ho effettuato nelle seguenti tabelle:
discourse_subscriptions_customers: causa un crash nella pagina di fatturazione dell’utentediscourse_subscriptions_productsdiscourse_subscriptions_subscriptions
Le ultime due tabelle non sembrano causare un crash. Tuttavia, contengono comunque dati scaduti.
Cancellare manualmente la riga (o le righe) problematica in discourse_subscriptions_customers risolve il crash dell’utente. Ma doverlo fare tramite una richiesta SQL è complicato e pericoloso, specialmente per utenti inesperti.
Si può anche notare che questo problema non si verifica quando si cancellano manualmente le informazioni dell’utente dalla dashboard di Stripe. Stripe mantiene comunque le informazioni archiviate su di lui e lo contrassegna come “eliminato definitivamente”.
Soluzioni proposte
Se possibile, creare un modo affinché Stripe notifichi a Discourse che i dati di test sono stati cancellati, in modo che i dati in quelle tabelle vengano eliminati.
Oppure,
Nelle opzioni del plugin, creare un pulsante per “cancellare i dati di test” con un’etichetta di avviso rossa ben visibile per assicurarsi che l’amministratore sappia cosa sta facendo.