Problème avec une erreur 500 lors des abonnements

Je suppose que c’est uniquement pour ce site ? Vous ne voyez pas cela sur d’autres sites ? Oui, il y a un “bug” où nous ne devrions pas renvoyer un 500, mais il y a probablement des “mauvaises” données quelque part, comme un plan manquant ou quelque chose comme ça. Peut-être qu’il a été supprimé dans Stripe et jamais mis à jour dans la base de données du plugin.

Pouvez-vous exécuter ces commandes dans la console Rails pour m’aider à déboguer ?

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 # notez combien d'abonnements ils ont
subscription = subs.first # changez ceci et exécutez les lignes ci-dessous pour chaque abonnement
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

Je pense que soit plans, soit plan renverra nil, mais cela nous aidera à déterminer où se situe le problème. Pourriez-vous me dire combien d’abonnements ils ont et s’il manque des plans pour eux ?

Probablement, une correction de code que je ferai sera de ne renvoyer aucun abonnement pour ces utilisateurs en cas d’erreur, mais s’ils ont réellement un abonnement, cela ne résoudra pas le problème. Peut-être que je ferai en sorte qu’il renvoie une erreur disant quelque chose comme “un abonnement a été trouvé mais il y a une erreur lors du chargement des détails du plan, veuillez contacter un administrateur pour obtenir de l’aide”.