Améliorations du Plugin d'Abonnements

Bonjour, j’ai apporté les modifications suivantes à ce plugin et je voulais savoir si l’équipe Discourse était ouverte à une PR.

J’aimerais aussi que d’autres personnes effectuent des tests approfondis. Je teste actuellement les flux avec les scénarios qui me semblent critiques.


Le plugin original constitue une excellente base, mais il est principalement axé sur les abonnements récurrents via Stripe. J’ai apporté les modifications suivantes :

Résumé des nouvelles fonctionnalités et améliorations

1. Système de paiement multi-fournisseurs (avec Razorpay) Le plugin n’est plus codé en dur pour Stripe. Il utilise désormais une architecture basée sur des fournisseurs qui permet plusieurs passerelles de paiement.

  • Intégration Razorpay : Razorpay a été entièrement intégré en tant que second fournisseur de paiement. C’est crucial pour les communautés sur des marchés comme l’Inde, où Razorpay est une passerelle privilégiée.
  • Webhooks sécurisés : L’intégration Razorpay est robuste et comprend un gestionnaire de webhooks sécurisé pour confirmer les paiements de serveur à serveur, garantissant qu’aucun abonnement n’est manqué si un utilisateur ferme son navigateur après le paiement.

2. Abonnements uniques à durée limitée Ceci introduit un nouveau type de produit flexible au-delà des abonnements récurrents standard.

  • Accès expirant : Les administrateurs peuvent désormais créer des plans de paiement uniques qui accordent un accès de groupe pour une durée déterminée (par exemple, un pass événementiel de 7 jours, un essai de 30 jours ou un forfait de 90 jours).
  • Expiration automatisée : Un travail quotidien en arrière-plan s’exécute automatiquement pour vérifier les abonnements expirés et supprimer les utilisateurs des groupes pertinents, garantissant que le contrôle d’accès est entièrement automatisé.

3. Refonte complète de la page de tarification La page d’abonnement par défaut visible par l’utilisateur a été entièrement reconstruite pour améliorer les conversions et l’expérience utilisateur.

  • UI moderne basée sur des cartes : L’ancienne liste de produits est remplacée par une mise en page épurée, réactive et basée sur des cartes, plus facile à lire et à comparer.
  • Adapté au thème : La nouvelle conception utilise les variables de thème de Discourse et est entièrement compatible avec les modes clair et sombre.
  • Paiement sur une seule page : L’ensemble du processus de paiement se déroule désormais sur la page de tarification. Cliquer sur “S’abonner” révèle un formulaire de paiement directement sur la page, éliminant une étape redondante et réduisant les frictions pour l’utilisateur.

4. Logique avancée de vente incitative et d’affichage de la valeur Les nouvelles cartes de tarification sont conçues pour être de puissants outils de vente incitative.

  • Coût mensuel effectif : L’interface utilisateur calcule et affiche automatiquement le “coût par mois” effectif pour tous les types de plans (y compris les plans uniques de 3 mois ou annuels), permettant aux utilisateurs de comparer facilement la valeur des différentes options.
  • Économies explicites : Un badge “Économisez X ₹” est automatiquement affiché sur les plans à plus long terme, communiquant clairement l’avantage de choisir un plan de plus grande valeur par rapport à la référence.

5. Tableaux de bord unifiés pour les administrateurs et les utilisateurs Les pages de facturation des administrateurs et des utilisateurs ont été refactorisées pour être plus simples et plus puissantes.

  • Vue unifiée unique : Au lieu de listes distinctes pour différents types de paiement, il existe désormais un tableau unique qui affiche tous les abonnements de tous les fournisseurs (Stripe, Razorpay, Manuel).
  • Informations claires : Ces vues affichent clairement le fournisseur, le statut, la date d’expiration/renouvellement et le montant de chaque transaction, donnant aux administrateurs et aux utilisateurs un historique complet de leurs droits.

6. Gestion manuelle des abonnements pour les administrateurs Un nouvel ensemble d’outils a été ajouté pour donner aux administrateurs plus de contrôle.

  • Accorder un abonnement : Les administrateurs peuvent désormais accorder manuellement n’importe quel plan d’abonnement à n’importe quel utilisateur pour une durée spécifique. C’est parfait pour gérer les paiements hors ligne, accorder un accès gratuit ou apporter des corrections.
  • Révoquer l’accès : L’accès aux plans non récurrents peut être immédiatement révoqué depuis le tableau de bord de l’administrateur.

7. Correction de bug critique pour la gestion des groupes

  • Un bug majeur dans la logique de suppression de groupe d’origine a été corrigé. Lorsqu’un abonnement est annulé ou révoqué, le système effectue désormais une “vérification de sécurité” pour voir si l’utilisateur a d’autres abonnements actifs pour le même groupe. L’utilisateur ne sera supprimé du groupe que s’il n’a aucun autre moyen valide d’y accéder, évitant ainsi que des utilisateurs ne soient incorrectement supprimés.
5 « J'aime »

Pouvez-vous inclure un lien vers votre dépôt GitHub ?

1 « J'aime »

Oui oui bien sûr.. laissez-moi juste une journée. Je règle quelques bugs liés à la gestion des données héritées de Stripe lorsque nous passerons à cette version du plugin avec de nouveaux champs.

J’ai mis à jour le premier post avec le dépôt.

Guide d’installation et de configuration

Ce guide vous expliquera comment configurer les fournisseurs de paiement nécessaires et créer vos premiers produits et plans.

1. Configuration du fournisseur

Tout d’abord, accédez à `Admin

3 « J'aime »

J’ai mis à jour le dépôt avec les changements/corrections suivants. Je suis maintenant prêt à l’installer et à l’utiliser sur mon site de production.

Résumé des améliorations de stabilité et de sécurité

1. Intégration moderne de Stripe Checkout Le plugin a été mis à jour pour utiliser le flux moderne de Stripe Checkout basé sur la redirection.

  • Ce que cela signifie : Au lieu d’un formulaire de carte de crédit sur la page, les utilisateurs sont maintenant envoyés vers une page sécurisée hébergée par Stripe pour finaliser leur paiement.
  • Pourquoi c’est mieux : C’est l’approche recommandée par Stripe. Elle améliore la sécurité, réduit le fardeau de la conformité PCI de votre site et offre une meilleure expérience utilisateur avec la prise en charge de méthodes telles qu’Apple Pay et Google Pay.

2. Logique de rachat solide comme le roc La logique qui empêche les utilisateurs de racheter un produit pour lequel ils ont déjà un abonnement actif a été complètement remaniée.

  • La correction : Nous avons ajouté le product_id à chaque enregistrement d’abonnement local. La vérification est maintenant une requête simple et ultra-rapide de votre base de données locale avec zéro appel API externe, ce qui la rend fiable à 100 %.
  • Le résultat : Un utilisateur ayant un abonnement actif (récurrent ou à durée limitée) sera désormais correctement bloqué pour racheter ce même produit jusqu’à son expiration.

3. Intégrité des données sur tous les tableaux de bord La page de facturation utilisateur et le tableau de bord des abonnements administrateur ont été corrigés pour garantir qu’ils affichent toujours des données précises et en temps réel.

  • La correction : Les deux pages récupèrent désormais le dernier statut et les dates de renouvellement/expiration pour chaque abonnement directement auprès du fournisseur de paiement (Stripe).
  • Le résultat : Ce que vous voyez dans le panneau d’administration correspondra toujours parfaitement à ce que voit l’utilisateur, et les deux refléteront le véritable état de l’abonnement dans Stripe. Les bugs affichant « N/A » pour les détails du plan ou des statuts « actifs » incorrects sont résolus.

4. Traitement robuste des webhooks et des tâches

  • Plus d’abonnements en double : Le gestionnaire de webhook a été corrigé pour gérer correctement la séquence des événements de Stripe, garantissant qu’une transaction crée exactement un enregistrement d’abonnement.
  • Tâche d’expiration fiable : La tâche quotidienne en arrière-plan qui expire les plans uniques a été renforcée. Elle définit maintenant correctement la clé API requise et expirera un abonnement même si le plan d’origine a été supprimé de Stripe, garantissant ainsi que vos autorisations de groupe sont toujours exactes.
2 « J'aime »

Wow, merci d’avoir apporté toutes ces modifications !

Cependant, nous ne pouvons pas simplement fusionner des modifications très importantes en une seule fois. Si vous souhaitez les intégrer au plugin discourse-subscriptions, vous devrez extraire chaque modification individuellement et créer des PR séparés avec des tests. Assurez-vous également qu’il n’y a pas de changements majeurs pour les utilisateurs existants qui utilisent actuellement le plugin d’abonnements et qui ont déjà de nombreux abonnés.

6 « J'aime »

Bien sûr, merci. Je prendrai le temps de créer plusieurs PR après avoir défini les spécifications.

6 « J'aime »