Переход на подписки Discourse с подписок WordPress

Продолжение обсуждения из Discourse Subscriptions

По мере того как плагин Discourse Subscriptions развивается, я хочу начать планировать перенос моих существующих подписок с WooCommerce Subscriptions на Discourse Subscriptions. Описанный ниже процесс применим к другим плагинам подписок/членства для WordPress, а не только к WooCommerce.

Этот переход включает три элемента, которые необходимо решить:

  1. Создание подписок в Stripe
  2. Привязка подписки Stripe к пользователю в Discourse
  3. Инверсия SSO, чтобы Discourse стал провайдером SSO, а WordPress — клиентом

(1) Создание подписок в Stripe

Похоже, что создание подписок в Stripe для существующих пользователей в данный момент является ручным процессом. Мои участники уже есть в Stripe, поэтому рабочий процесс будет выглядеть примерно так:

  • Экспортировать всех подписчиков и данные из WooCommerce Subscriptions
  • Создать подписку в Stripe для пользователя из панели управления клиентами Stripe и запланировать первый платеж так, чтобы он совпадал с датой истечения срока существующей подписки WooCommerce.
  • Отменить подписку пользователя в WooCommerce.
  • Отключить WooCommerce Subscriptions после завершения работы со всеми пользователями.

Дополнительная информация от Stripe о миграциях.

(2) Привязка подписки Stripe к пользователю в Discourse

После того как пользователь настроен с подпиской в Stripe, как мы можем добавить этого существующего пользователя к плану подписки в Discourse? Это необходимо для того, чтобы пользователь мог отменить подписку и чтобы пользователь был исключен из группы в случае сбоя платежа в Stripe.

(3) Инверсия SSO для использования Discourse в качестве провайдера, а WP — клиента

Эта часть описана здесь.


Я застрял на вопросе, можно ли реализовать пункт №2, и буду рад услышать, если кто-то уже совершил этот переход.

Можно ли расширить задачу rake rake subscriptions:import или добавить другую задачу для импорта и привязки подписок пользователей?

4 лайка

Очень рад, что вы этим занимаетесь.

Да, плагин не сможет помочь с этим, однако, если у вас есть навыки программирования, вы, возможно, сможете использовать Stripe API для автоматизации некоторых процессов. Если нет, то ручной метод может быть единственным выходом.

Просто чтобы убедиться, что я правильно понял вашу проблему: вы уже создали подписки в Stripe и хотите восстановить доступ в Discourse? Так ли это?

Думаю, что сделать это через задачу rake возможно, но, к сожалению, я не смогу заняться этим в ближайшее время. Однако это будет приветствоваться как вклад с открытым исходным кодом :smiley: Вам нужно будет создать запись DiscourseSubscriptions::Customer со всей необходимой информацией, а затем добавить пользователя в группу.

Вы даже можете выполнить это вручную из консоли:

DiscourseSubscriptions::Customer.create(
    user_id: <user id>,
    customer_id: <stripe customer id>,
    product_id: <stripe product id>
  )
4 лайка

Да. Это произойдет после завершения шагов из пункта (1), когда клиенту в Stripe будет назначена новая подписка.

Клиент уже существует в Stripe (в моем случае), так как WooCommerce Subscriptions создает клиента в Stripe при покупке членства, поэтому соответствующие данные уже есть — включая информацию о кредитной карте.

Можно ли передать сюда CSV-файл вместо выполнения по одному?

Думаю, это станет серьезным препятствием для любого сообщества с уже сложившейся моделью членства, поэтому воспользуются этим, скорее всего, только новые сообщества.

2 лайка

Я добавлю расширение задачи rake в свой список, но, как я уже упоминал, у меня пока довольно длинный список задач, которые нужно выполнить!

Да, это возможно. Ruby может читать CSV-файл и перебирать его содержимое, так что это вполне реализуемо.

2 лайка

Отлично, спасибо, Джастин. Я всё понял и с нетерпением жду дальнейших разработок. Планирую заняться этим как зимним проектом, так как в любом случае потребуется много ручной работы.

2 лайка

Поздравляю, Джастин! Это огромное достижение! Я начал с этим работать вчера и не могу дождаться, когда смогу начать его использовать. Также я начну искать способы помочь с миграцией данных из таких систем, как WooCommerce. Пока неясно, будет ли это «простой» (ха!) задача Rake или же миграция будет больше похожа на перенос форума, где каждая задача уникальна (я предполагаю, что будет именно так).

4 лайка

Огромное спасибо, Джей :hugs:

Сложность будет заключаться в получении информации о клиентах из Stripe и добавлении её в таблицу Customer в плагине, а также в сопоставлении данных. После этого останется в основном добавить членство в группы. Но вы, вероятно, правы: в каждом случае это будет уникальная задача.

3 лайка

С первого взгляда кажется, что у Stripe есть адрес электронной почты, поэтому хитрость будет в том, что в Discourse у них будет другой адрес электронной почты…

4 лайка

Помимо адреса электронной почты, Stripe и WooCommerce Subscriptions также передают идентификатор клиента: cus_ABCdefxyz, идентификатор карты: src_1234ABxyzasdf и идентификатор транзакции: ch_0123ABCDefgh.

Насколько я помню, PMPro делает то же самое.

На мой взгляд, лучший способ — экспортировать таблицу из обоих приложений, убедиться, что данные совпадают в электронной таблице, а затем использовать этот CSV-файл в качестве источника.

3 лайка

Мне интересно, получилось ли это в итоге. Я помогаю клиенту перейти с MemberPress, и похоже, что мне тоже придётся сделать что-то подобное. Буду рад узнать от тех, кто уже пробовал что-то подобное.

1 лайк

Мой проект всё ещё в режиме «в планах». Другие задачи, похоже, подмечают и занимают приоритет. @pfaffman, вероятно, сможет дать некоторые рекомендации.

2 лайка