Hola,
Actualmente estoy probando este plugin para su uso futuro en mi instancia y he encontrado un problema.
Mi cuenta de Stripe es nueva y no está verificada, lo que significa que está utilizando datos de prueba que puedo borrar desde el panel de Stripe > Desarrolladores.
El problema es que borrar los datos en Stripe no elimina los mismos datos en la instancia del foro. Esto puede provocar un error en la página de Facturación > Pago de un usuario.
Pasos para reproducir
- Crear un plan de suscripción.
- Suscribir a un usuario al plan. Stripe le asignará un
customer_idcomocus_abcd1234567890. - Borrar los datos en el panel de Stripe.
- Intentar abrir nuevamente la página de facturación del usuario provocará un error al cargar
/s/user/payment, mostrando el siguiente texto de respuesta en la consola del navegador:
{\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}
Tras explorar la base de datos de mi instancia, puedo encontrar datos anteriores de múltiples borrados en las siguientes tablas:
discourse_subscriptions_customers: causa un error en la página de facturación del usuario.discourse_subscriptions_productsdiscourse_subscriptions_subscriptions
Las últimas dos tablas no parecen provocar un error. Sin embargo, aún contienen datos caducados.
Eliminar manualmente la(s) fila(s) problemática(s) en discourse_subscriptions_customers soluciona el error del usuario. Pero tener que hacerlo mediante una consulta SQL es complicado y peligroso, especialmente para usuarios inexpertos.
También cabe mencionar que este problema no ocurre al eliminar manualmente la información del usuario desde el panel de Stripe. Stripe aún conserva información archivada sobre él y lo marca como “eliminados permanentemente”.
Soluciones propuestas
Si es posible, implementar un mecanismo para que Stripe notifique a Discourse cuando se hayan borrado los datos de prueba, de modo que se elimine la información en esas tablas.
O bien,
En las opciones del plugin, crear un botón para “borrar los datos de prueba” con una etiqueta de advertencia roja grande para asegurarse de que el administrador sabe lo que está haciendo.