Forcer un abonnement discourse à être un paiement unique

Concernant le plugin Discourse Subscriptions, que se passerait-il si je modifiais certains paramètres directement depuis Stripe ? Par exemple, depuis Discourse, il n’est pas possible de configurer un plan pour un produit en paiement unique. Il doit s’agir d’un abonnement d’une durée d’un jour, d’une semaine, d’un mois ou d’un an. Cependant, si je me rends sur stripe.com, je peux modifier un abonnement existant pour le transformer en paiement unique. Puis-je le faire ? Comment cela modifierait-il le fonctionnement de ce plan dans Discourse ? Deviendrait-il alors un paiement unique ?

C’est tout à fait possible ! Si vous décochez la case « Récurrent » lors de la création du plan, le paiement sera unique.

Cependant, vous ne pouvez pas modifier les plans existants une fois qu’ils ont été créés.

Vous avez raison ! J’ai eu un trou de mémoire. Ce que je voulais vraiment demander, c’est s’il est possible ou non d’avoir un paiement unique qui prend fin et ne se poursuit pas indéfiniment. Par exemple, quelque chose comme un « pass journalier », où vous payez 5 $ et êtes ajouté à un groupe spécial, puis, disons, après une journée, l’abonnement se termine et vous êtes retiré du groupe jusqu’à ce que vous payez à nouveau. Est-ce possible ?

Ce n’est malheureusement pas possible pour le moment.

Je fais quelque chose de similaire dans un plugin. J’ajoute (de manière souple) une action au modèle user_group qui, lorsqu’un utilisateur est ajouté au groupe d’abonnement, exécute une action, puis retire l’utilisateur du groupe. Dans votre cas, vous pourriez configurer le système pour que, lorsque l’abonnement ajoute l’utilisateur au groupe one-off-weeklong, il :

  • ajoute l’utilisateur au groupe weeklong qui accorde les permissions nécessaires pour certaines catégories,
  • planifie un travail qui supprimera l’utilisateur du groupe weeklong à la fin de la semaine,
  • ajoute un champ personnalisé pour l’utilisateur avec la date de début de la semaine, afin que vous puissiez le supprimer en cas de catastrophe Redis,
  • retire l’utilisateur du groupe one-off-weeklong.

Si cela vous intéresse, vous pouvez me contacter ou poster dans Marketplace.

Mais c’est stupide. Au lieu de cela, ajoutez simplement un rappel pour l’abonnement (s’il s’agit d’un abonnement) ou le client (s’il s’agit d’un paiement unique). Client est un peu un terme impropre. Il a l’ID client Stripe et l’ID produit Stripe. Alors faites quelque chose comme

add_model_callback(DiscourseSubscriptions::Subscription, :after_save) do
      Rails.logger.warn("Maintenant, j'ai un abonnement #{self.external_id} pour #{self.customer_id}")
      # faire des choses
end

  add_model_callback(DiscourseSubscriptions::Customer, :after_save) do
    Rails.logger.warn("Client #{self.product_id} pour #{self.user_id}")
    # faire plus de choses
end

Salut, avez-vous résolu ce problème ?

Pouvez-vous fournir plus de conseils ? Par exemple, comment implémenter cette fonctionnalité. Je ne suis pas familier avec Rails… merci !

Je pense que c’est ma meilleure réponse gratuite.

Je l’ai résolu en modifiant le plugin de souscription Discourse. Merci.

Cependant, j’ai constaté que je ne pouvais pas supprimer de produits, même en utilisant le plugin de souscription Discourse d’origine. Avez-vous une idée ?

Vous n’avez pas besoin de les supprimer. Ils ne font de mal à personne. Ils sont nécessaires comme enregistrement des choses que vous avez vendues. Vous devriez pouvoir les supprimer depuis la console Stripe.

Stripe n’autorise pas non plus la suppression des produits, mais ils peuvent être désactivés/archivés.

Ils disent :

Je ne sais pas si c’est toujours quelque chose que vous voulez réaliser, ou si vous avez trouvé un moyen de le faire ? Il semble que ce ne soit pas quelque chose qui soit intégré pour être automatisé avec Discourse, mais il existe peut-être un autre moyen de le faire. Cela ressemble un peu à l’affaire d’un café où il faut acheter une nouvelle boisson chaque jour pour pouvoir s’asseoir à l’une de leurs tables.