Passage à Discourse Subscriptions depuis WordPress Subscriptions

Suite à la discussion sur Discourse Subscriptions

À mesure que le plugin Discourse Subscriptions mûrit, je souhaite commencer à planifier le transfert de mes adhésions existantes de WooCommerce Subscriptions vers Discourse Subscriptions. La procédure ci-dessous devrait s’appliquer à d’autres plugins de gestion d’adhésions/abonnements WordPress, pas uniquement à WooCommerce.

Cette transition comporte trois éléments à traiter :

  1. Créer des abonnements dans Stripe
  2. Lier l’abonnement Stripe à l’utilisateur dans Discourse
  3. Inverser le SSO afin que Discourse devienne le fournisseur d’identité et WordPress le client

(1) Création des abonnements dans Stripe

Il semble que la création des abonnements dans Stripe pour les utilisateurs existants soit actuellement un processus manuel. Mes membres sont déjà dans Stripe, donc le flux de travail ressemblerait à ceci :

  • Exporter tous les abonnés et les données depuis WooCommerce Subscriptions
  • Créer un abonnement dans Stripe pour un utilisateur depuis le tableau de bord client de Stripe et programmer le premier paiement pour qu’il corresponde à la date d’expiration de l’abonnement WooCommerce existant.
  • Annuler l’abonnement de l’utilisateur dans WooCommerce.
  • Désactiver WooCommerce Subscriptions une fois tous les utilisateurs traités.

Plus d’informations sur Stripe concernant les migrations.

(2) Liaison de l’abonnement Stripe à l’utilisateur dans Discourse

Une fois l’utilisateur configuré avec un abonnement dans Stripe, comment pouvons-nous ajouter cet utilisateur existant à un plan d’abonnement dans Discourse ? Cela est nécessaire pour permettre à l’utilisateur d’annuler l’abonnement et de le retirer du groupe si le paiement Stripe échoue.

(3) Inversion du SSO pour utiliser Discourse comme fournisseur et WP comme client

Cette partie est décrite ici.


Je suis bloqué sur la question de savoir si le point n°2 est réalisable et j’aimerais savoir si quelqu’un a déjà effectué ce changement.

La tâche rake rake subscriptions:import peut-elle être étendue ou une autre tâche ajoutée pour importer et lier également les abonnements des utilisateurs ?

4 « J'aime »

Je suis ravi de voir que vous faites cela.

Oui, ce n’est pas quelque chose que le plugin pourra prendre en charge. Cependant, vous pourriez être en mesure d’utiliser l’API Stripe pour automatiser une partie de cela si vous avez des compétences en programmation. Sinon, la méthode manuelle pourrait être la seule option.

Juste pour être sûr de bien comprendre votre problème : vous avez créé les abonnements dans Stripe et vous souhaitez rétroactiver l’accès dans Discourse ? Est-ce exact ?

Je pense qu’il devrait y avoir un moyen de le faire via la tâche rake, mais ce n’est malheureusement pas quelque chose que je pourrai aborder prochainement. Cela serait cependant pr-welcome :smiley: Vous devrez créer un enregistrement DiscourseSubscriptions::Customer avec toutes les informations appropriées, puis ajouter l’utilisateur au groupe.

Vous pourriez même l’exécuter manuellement depuis la console :

DiscourseSubscriptions::Customer.create(
    user_id: <user id>,
    customer_id: <stripe customer id>,
    product_id: <stripe product id>
  )
4 « J'aime »

Oui. Cela se produira une fois les étapes de (1) terminées, lorsque le client dans Stripe se verra attribuer un nouvel abonnement.

Le client existe déjà dans Stripe (dans mon cas), car WooCommerce Subscriptions crée un client dans Stripe lors de l’achat d’un abonnement, de sorte que les données pertinentes sont déjà présentes — y compris les informations de la carte de crédit.

Serait-il possible d’alimenter ce processus avec un fichier CSV plutôt que de le faire un par un ?

Je pense que cela constituera un obstacle majeur pour toute communauté déjà établie basée sur des abonnements ; par conséquent, nous verrons probablement seulement les nouvelles communautés l’adopter.

2 « J'aime »

J’ajouterai l’extension de la tâche rake à ma liste, mais comme je l’ai mentionné, j’ai déjà un backlog assez long à traiter !

Oui, c’est possible. Ruby peut lire un fichier CSV et parcourir son contenu, ce qui rendrait cela tout à fait réalisable.

2 « J'aime »

Parfait — merci Justin. Je comprends et j’attends avec impatience les développements à venir. Je prévois cela comme un projet d’hiver car cela nécessiterait de toute façon de nombreuses étapes manuelles.

2 « J'aime »

Félicitations, Justin ! C’est une réalisation majeure ! J’ai commencé à jouer avec hier et j’ai hâte de commencer à l’utiliser. Je vais également commencer à examiner les moyens d’aider les équipes de migration à migrer depuis des solutions comme WooCommerce. Il n’est pas encore clair à ce stade s’il s’agira d’une tâche rake « simple » (haha !) ou si cela ressemblera davantage à une migration de forum où chaque tâche est unique (je m’attends à ce que ce soit le cas).

4 « J'aime »

Un grand merci, Jay :hugs:

Le défi consistera à récupérer les informations clients depuis Stripe et à les intégrer dans la table Customer du plugin, puis à les faire correspondre correctement. À partir de là, il s’agira surtout d’ajouter des adhésions à des groupes. Mais vous avez probablement raison : chaque cas sera unique.

3 « J'aime »

À première vue, cela ressemble à une adresse e-mail de Stripe, donc l’astuce consistera à ce qu’ils aient une adresse e-mail différente dans Discourse…

4 « J'aime »

En plus de l’adresse e-mail, Stripe et WooCommerce Subscriptions partagent également l’ID client : cus_ABCdefxyz, l’ID de carte : src_1234ABxyzasdf et l’ID de transaction : ch_0123ABCDefgh.

À ma connaissance, PMPro fait de même.

À mon avis, la meilleure approche consiste à exporter un tableau depuis les deux applications, à vérifier qu’ils correspondent dans un tableur, puis à utiliser ce fichier CSV comme source.

3 « J'aime »

Je suis curieux de savoir si cela a fonctionné. Je cherche à aider un client à migrer depuis MemberPress et il semble que je devrai faire quelque chose de similaire. J’aimerais apprendre de quiconque a essayé quelque chose de similaire.

1 « J'aime »

Le mien est toujours en mode « à faire ». D’autres projets semblent s’imposer et prendre la priorité. @pfaffman a probablement quelques conseils.

2 « J'aime »