Abbonamenti: dati cancellati in Stripe, ora errori del plugin

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

  1. Crea un piano di abbonamento
  2. Iscriviti un utente al piano. Stripe gli assegnerà un customer_id come cus_abcd1234567890
  3. Cancella i dati dalla dashboard di Stripe
  4. 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’utente
  • discourse_subscriptions_products
  • discourse_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.

Sembra un caso limite e al momento non sono interessato a gestirlo nel plugin. Per correggere gli errori che stai riscontrando, dovrai eseguire questi comandi dall’interno del contenitore:

rails c
DiscourseSubscriptions::Customer.destroy_all
DiscourseSubscriptions::Products.destroy_all
DiscourseSubscriptions::Subscriptions.destroy_all

Questo reimposterà tutti i modelli locali, che vengono utilizzati per il confronto con Stripe.

Il mio consiglio per il futuro: cancella i dati da Discourse e non da Stripe. Se i record del modello non esistono in Discourse, i dati non verranno importati da Stripe.

4 Mi Piace

Un post è stato spostato in un nuovo argomento: Problema con /s/user/payments

Grazie per il suggerimento. L’ho testato e funziona, a parte un piccolo errore di battitura: non c’è la s alla fine di ::Product e ::Subscription. Altrimenti non riesce a trovarli.

Comandi corretti:

rails c
DiscourseSubscriptions::Customer.destroy_all
DiscourseSubscriptions::Product.destroy_all
DiscourseSubscriptions::Subscription.destroy_all
3 Mi Piace

Hai ragione, è stata colpa mia!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.