L'utilisateur ne peut pas racheter un produit par abonnement après l'avoir annulé

Cela ressemble à une configuration incorrecte de votre point de terminaison de webhook. Lorsque la période d’abonnement prend fin, Stripe envoie un webhook que le plugin utilise pour supprimer l’appartenance au groupe et retirer l’utilisateur en tant que client existant pour ce produit (ce qui permet à l’utilisateur d’acheter à nouveau).

Vous devez vous assurer que cela est configuré conformément au sujet original (OP) ici : Discourse Subscriptions

Une méthode pour confirmer depuis votre serveur :

./launcher enter app
rails c
u = User.find_by_username(<username>)
c = DiscourseSubscriptions::Customer.where(user_id: u.id)
subscription = DiscourseSubscriptions::Subscription.where(customer_id: c.customer_id)

N’oubliez pas de remplacer <username> par le véritable nom d’utilisateur de l’utilisateur.

Si subscription retourne [], un autre problème est en cours. Mais si elle retourne une valeur, cela confirme probablement le webhook manquant.

Pour supprimer l’entrée DiscourseSubscriptions::Subscription afin que l’utilisateur puisse acheter à nouveau le produit :

Assurez-vous que subscription ne contient qu’une seule valeur en exécutant subscription.count. Si la valeur retournée est supérieure à 1, vous devrez faire un peu plus d’investigation pour vous assurer de supprimer la bonne instance d’abonnement. Si vous supprimez la mauvaise, vos données d’abonnement seront dans un état incohérent et entraîneront probablement des comportements étranges.

Une fois confirmé qu’il n’y a qu’un seul abonnement, vous pouvez exécuter :

subscription.destroy_all

Gardez à l’esprit que subscription est la valeur retournée par l’ensemble initial de requêtes que nous avons exécutées dans la console Rails.

J’espère que cela vous aidera !