По мере того как плагин Discourse Subscriptions развивается, я хочу начать планировать перенос моих существующих подписок с WooCommerce Subscriptions на Discourse Subscriptions. Описанный ниже процесс применим к другим плагинам подписок/членства для WordPress, а не только к WooCommerce.
Этот переход включает три элемента, которые необходимо решить:
Создание подписок в Stripe
Привязка подписки Stripe к пользователю в Discourse
Инверсия SSO, чтобы Discourse стал провайдером SSO, а WordPress — клиентом
(1) Создание подписок в Stripe
Похоже, что создание подписок в Stripe для существующих пользователей в данный момент является ручным процессом. Мои участники уже есть в Stripe, поэтому рабочий процесс будет выглядеть примерно так:
Экспортировать всех подписчиков и данные из WooCommerce Subscriptions
Создать подписку в Stripe для пользователя из панели управления клиентами Stripe и запланировать первый платеж так, чтобы он совпадал с датой истечения срока существующей подписки WooCommerce.
Отменить подписку пользователя в WooCommerce.
Отключить WooCommerce Subscriptions после завершения работы со всеми пользователями.
(2) Привязка подписки Stripe к пользователю в Discourse
После того как пользователь настроен с подпиской в Stripe, как мы можем добавить этого существующего пользователя к плану подписки в Discourse? Это необходимо для того, чтобы пользователь мог отменить подписку и чтобы пользователь был исключен из группы в случае сбоя платежа в Stripe.
(3) Инверсия SSO для использования Discourse в качестве провайдера, а WP — клиента
Да, плагин не сможет помочь с этим, однако, если у вас есть навыки программирования, вы, возможно, сможете использовать Stripe API для автоматизации некоторых процессов. Если нет, то ручной метод может быть единственным выходом.
Просто чтобы убедиться, что я правильно понял вашу проблему: вы уже создали подписки в Stripe и хотите восстановить доступ в Discourse? Так ли это?
Думаю, что сделать это через задачу rake возможно, но, к сожалению, я не смогу заняться этим в ближайшее время. Однако это будет приветствоваться как вклад с открытым исходным кодом Вам нужно будет создать запись DiscourseSubscriptions::Customer со всей необходимой информацией, а затем добавить пользователя в группу.
Да. Это произойдет после завершения шагов из пункта (1), когда клиенту в Stripe будет назначена новая подписка.
Клиент уже существует в Stripe (в моем случае), так как WooCommerce Subscriptions создает клиента в Stripe при покупке членства, поэтому соответствующие данные уже есть — включая информацию о кредитной карте.
Можно ли передать сюда CSV-файл вместо выполнения по одному?
Думаю, это станет серьезным препятствием для любого сообщества с уже сложившейся моделью членства, поэтому воспользуются этим, скорее всего, только новые сообщества.
Отлично, спасибо, Джастин. Я всё понял и с нетерпением жду дальнейших разработок. Планирую заняться этим как зимним проектом, так как в любом случае потребуется много ручной работы.
Поздравляю, Джастин! Это огромное достижение! Я начал с этим работать вчера и не могу дождаться, когда смогу начать его использовать. Также я начну искать способы помочь с миграцией данных из таких систем, как WooCommerce. Пока неясно, будет ли это «простой» (ха!) задача Rake или же миграция будет больше похожа на перенос форума, где каждая задача уникальна (я предполагаю, что будет именно так).
Сложность будет заключаться в получении информации о клиентах из Stripe и добавлении её в таблицу Customer в плагине, а также в сопоставлении данных. После этого останется в основном добавить членство в группы. Но вы, вероятно, правы: в каждом случае это будет уникальная задача.
С первого взгляда кажется, что у Stripe есть адрес электронной почты, поэтому хитрость будет в том, что в Discourse у них будет другой адрес электронной почты…
Помимо адреса электронной почты, Stripe и WooCommerce Subscriptions также передают идентификатор клиента: cus_ABCdefxyz, идентификатор карты: src_1234ABxyzasdf и идентификатор транзакции: ch_0123ABCDefgh.
Насколько я помню, PMPro делает то же самое.
На мой взгляд, лучший способ — экспортировать таблицу из обоих приложений, убедиться, что данные совпадают в электронной таблице, а затем использовать этот CSV-файл в качестве источника.
Мне интересно, получилось ли это в итоге. Я помогаю клиенту перейти с MemberPress, и похоже, что мне тоже придётся сделать что-то подобное. Буду рад узнать от тех, кто уже пробовал что-то подобное.
Мой проект всё ещё в режиме «в планах». Другие задачи, похоже, подмечают и занимают приоритет. @pfaffman, вероятно, сможет дать некоторые рекомендации.