Suscripciones: Datos eliminados en Stripe, ahora errores del plugin

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

  1. Crear un plan de suscripción.
  2. Suscribir a un usuario al plan. Stripe le asignará un customer_id como cus_abcd1234567890.
  3. Borrar los datos en el panel de Stripe.
  4. 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_products
  • discourse_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.

Esto parece ser un caso límite y no algo que me interese manejar en el plugin en este momento. Para corregir los errores que estás viendo, tendrás que hacerlo desde dentro del contenedor:

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

Esto restablecerá todos los modelos locales, que se utilizan para comparar con Stripe.

Mi recomendación de ahora en adelante: elimina los datos de Discourse en lugar de hacerlo desde Stripe. Si los registros del modelo no existen en Discourse, no se importarán los datos desde Stripe.

4 Me gusta

Una publicación se dividió en un nuevo tema: Problema con /s/user/payments

Gracias por la sugerencia. Lo probé y funciona, excepto por un pequeño error tipográfico: no hay una s al final de ::Product y ::Subscription. De lo contrario, no puede encontrarlos.

Comandos corregidos:

rails c
DiscourseSubscriptions::Customer.destroy_all
DiscourseSubscriptions::Product.destroy_all
DiscourseSubscriptions::Subscription.destroy_all
3 Me gusta

Tienes razón, ¡fue mi error!

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