¿Supongo que es solo para este sitio? ¿No lo ves en otros sitios? Sí, hay un “error” por el cual no deberíamos devolver un 500, pero es probable que haya algunos datos “malos” en alguna parte, como un plan faltante o algo así. Quizás se eliminó en Stripe y nunca se actualizó en la base de datos del plugin.
¿Puedes ejecutar estos comandos de la consola de Rails para ayudarme a depurar?
Stripe.api_key = SiteSetting.discourse_subscriptions_secret_key
user = User.find_by(username: 'xxx')
customer = DiscourseSubscriptions::Customer.find_by(user_id: user.id)
subs = ::Stripe::Subscription.list(customer: stripe_customer_id, status: 'all')[:data]
subs.count # cuántas suscripciones tienen
subscription = subs.first # cambia esto y ejecuta las siguientes líneas para cada sub
price_id = subscription[:items][:data].first[:price][:id]
plans = ::Stripe::Price.list(expand: ['data.product'], limit: 100)
plan = plans[:data].find { |p| p[:id] == price_id }
plan
Creo que planes o plan devolverán nulo, pero eso nos ayudará a reducir dónde está el problema. ¿Podrías decirme cuántas suscripciones tienen y si faltan planes para ellos?
Probablemente una solución de código que haré será simplemente no devolver ninguna suscripción para estos usuarios si hay un error, pero si realmente tienen una suscripción, eso no resuelve el problema. Quizás haga que devuelva un error que diga algo como que se ha encontrado una suscripción pero hay un error al cargar los detalles del plan para ella, por favor contacta a un administrador para obtener ayuda.