@Steven Большое спасибо за этот ответ, он очень полезен.
Похоже, что пользовательские поля решают большинство моих проблем. Я использую плагин Teaser и нашёл рабочее решение для типов членства на основе возможностей этого плагина.
Я посмотрел таблицу (спаска Google Translate!) и вижу, что через ProCourse можно иметь несколько уровней членства с разной стоимостью, верно? Если да, то я могу просто создать дополнительное членство, предоставляющее точно такой же доступ, но по более низкой цене. Мы достаточно небольшая группа, чтобы использовать это как решение, и кто-то будет вручную следить за тем, чтобы для этих пользователей существовало «основное» членство.
Точно, у каждой стоимости будет своя страница членства. Именно здесь статическая страница оказывается наиболее полезной, а таблица в моём случае стала лучшим решением.
Работаем над настройкой, и у меня возник вопрос. Если я установлю членство на 12 месяцев для группы «Bronze», будет ли членство в этой группе удалено по истечении этого срока? Предупреждает ли система пользователя о том, что это произошло или вот-вот произойдет?
Я несколько раз перечитал это и снова попробовал демо-сайт. Думаю, я разобрался со своей путаницей в процессе регистрации и оформления членства.
Вот что, как я понимаю, мне нужно сделать:
Примечание: мой сайт полностью платный, бесплатного тарифа нет.
У меня есть статическая продающая страница (вне Discourse) с формой заявки. Если заявка одобрена (ручной процесс), я отправлю приглашение присоединиться изнутри Discourse.
Новый пользователь регистрируется и получает новую учётную запись в Discourse.
Новый пользователь входит в Discourse и видит… пустой форум, кроме одной темы о «создании членства» [возможно, именно здесь пригодится pro-course-static-page, и я смогу разместить статическую страницу с вариантами оплаты?].
В этой теме [или на статической странице] есть два варианта: ежемесячная подписка и годовая подписка. Каждая ссылка или кнопка ведёт на страницу членства, которую я создал в плагине Procourse.
Новый пользователь завершает оплату и добавляется в группу «Участники», которая имеет доступ ко всему форуму.
Думаю, я на правильном пути. Но пункты 3 и 4 вызывают у меня сомнения. Не упускаю ли я более простой или очевидный путь?
P.S. — Я думал, что страница оплаты будет идти первой, до создания новой учётной записи. Необходимость сначала создать учётную запись стала для меня большим психологическим барьером, но я понимаю, почему это так. Думаю, да.
Я думаю, что заставляя пользователей регистрироваться, ждать одобрения, заходить в пустой форум, а затем платить за контент, вы столкнетесь с проблемами удобства использования для вашей аудитории.
Вам, вероятно, будет лучше сделать что-то подобное: заблокировать Discourse, но использовать WP Discourse для единого входа (SSO) и плагин Paid Memberships Pro для ограничения доступа к сообществу. Для ваших пользователей весь процесс будет происходить более плавно.
Спасибо, @justin, я посмотрю. Форум не пуст (у меня там уже несколько месяцев есть небольшая группа), но я понимаю вашу точку зрения. Ценю ваше мнение.
Идея приложения заключается в том, чтобы получить информацию о человеке и понять, чего он надеется достичь в сообществе. Я состою в другой группе, где участники приходили и быстро уходили, потому что это не подходило им.
Я могу изменить процесс так, чтобы люди сразу попадали на страницу регистрации, а затем, после вступления, задавать им те же вопросы в рамках онбординга. Это сработает, так как в данном случае я уже много рассказывал о том, чего ожидать, ещё до регистрации.
Один вопрос: если я выберу такой путь, смогу ли я отправлять их сразу на страницу подписки для участников (где они оформляют подписку и производят оплату), а уже затем создавать их учётную запись в Discourse? Или порядок остаётся прежним: сначала создать учётную запись, а затем выбрать тарифный план?
Я бы объединил это с плагином Custom Wizard. С помощью этого плагина вы можете собирать любую необходимую информацию при регистрации, а после отправки формы перенаправлять пользователя на страницу оплаты членства. Таким образом, весь процесс будет единым.Лично я предпочитаю этот подход вместо использования Paid Memberships Pro. PMPro может отлично работать, пока вы не начнете пытаться синхронизировать групповые членства в обоих направлениях. Это возможно, но, судя по моему опыту, настройка не такая простая, а надежность не всегда гарантирована.
Когда я использовал PMP на своем сайте с синхронизацией групп, у меня никогда не возникало проблем, но правда в том, что для его корректной работы требуется определенный технический опыт. Вне зависимости от личных предпочтений, оба варианта являются жизнеспособными, каждый со своими преимуществами и недостатками. @madbaker, надеемся, мы помогли вам приблизиться к принятию решения!
Мне удалось успешно настроить плагин Custom Wizard при регистрации. Он вызывает статическую страницу, где новый пользователь может выбрать вариант подписки (ежемесячный или годовой).
У меня в плагине подписок настроено два уровня, и через статическую страницу пользователь попадает на правильную страницу подписки. Отлично.
Проблема только в том, что интеграция со Stripe на этой странице просто висит в состоянии загрузки.
Я внимательно изучил документацию по интеграции со Stripe на сайте сообщества Procourse. Кажется, что всё настроено верно, но очевидно, что это не так.
Перепроверил валюты в плагине и в Stripe (обе USD), API-ключи и секрет вебхука. Всё в тестовом режиме.
Создал уровень для разового платежа, на случай если проблема в модели подписки (изменений нет).
Проверил логи в Stripe, но там нет записи о попытке вызова (ничего в логе).
Есть ли способ проверить логи в Discourse, чтобы увидеть, какой вызов пытается совершить система?
Я готов опубликовать вопрос на Marketplace за помощью, но если я смогу понять, что именно пытается сделать плагин, это хотя бы облегчит процесс. Я упростил процесс регистрации до минимума, но решения так и нет, хотя согласно документации всё должно быть довольно просто. (Знаменитые последние слова!)
Я провёл дополнительное расследование и в отчаянии попробовал несколько дополнительных шагов:
пересобрал приложение и запустил discourse-doctor, чтобы убедиться в отсутствии ошибок;
удалил и пересоздал уровни членства в плагине procourse-membership, используя тестовые ключи Stripe.
Когда я включаю уровни, я вижу новые планы продуктов (тестовая версия) в Stripe. Ура!
Но когда я перехожу на страницу оплаты для этих уровней, страница отображается, но поля ввода данных кредитной карты не загружаются. Спиннер крутится бесконечно.
Проверка логов ошибок Discourse и логов ошибок Stripe не дала результатов. Записей ни в одном из логов нет.
Тогда я подумал: может быть, проблема в «тестовом режиме»? Внёс следующие изменения:
заменил тестовые ключи и вебхуки на продакшн-ключи и вебхуки;
пересоздал уровни членства внутри плагина и включил их;
новые продукты/планы появились в Stripe в продакшн-среде. Ура!
Но та же проблема возникает при переходе на страницу оплаты в Discourse. Страница отображается, но поля для ввода данных кредитной карты не загружаются. Спиннер крутится бесконечно.
Активности в логах Stripe или в логах ошибок Discourse нет.
=== Эврика! ===
Ах, всё-таки разобрался.
Для работы оплаты требуется скрипт — js.stripe.com/v3. Он блокировался как ошибка безопасности. Я добавил этот скрипт в белый список, и теперь всё работает быстро и отлично.
Очень важная деталь, кстати. Я проверял логи приложения, но если бы четыре дня назад я просто нажал F12 и проверил консоль, это сэкономило бы кучу времени.
Кроме того, что происходит, когда пользователь присоединяется (и оплачивает), а затем отменяет подписку? Прекращается ли её действие сразу или после истечения оплаченного месяца?