Работает ли плагин Subscriptions с таблицами цен для разовых платежей?

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

Если мы настроим платеж в таблице цен Stripe как «разовый», а не «периодический», всё ли будет работать? Моя цель — использовать функцию подписки, чтобы пользователи могли подписаться и разблокировать определённый контент, но при этом я хочу, чтобы они вручную продлевали подписку. Поэтому я пытаюсь понять: если, например, срок шестимесячной подписки истечёт, плагин всё равно удалит их из группы, даже если это был «разовый» платеж?

Некоторые методы оплаты в Польше (Blik и Przelewy24) не поддерживают периодические платежи, но я хотел бы включить их, так как здесь люди доверяют им значительно больше, чем предоставлению данных кредитной карты. Это может существенно повлиять на конверсию!

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

Вы где-то настраиваете длительность в Stripe или просто обозначаете разовый платеж как «6-месячный»? Не уверен, поддерживает ли Stripe это вообще, но это может стать возможной функцией, которую мы реализуем в плагине для разовых покупок.

Действительно, вы правы, моя ошибка. Я только что проверил: для разовых платежей в Stripe даже нельзя установить какой-либо фиксированный период. Так что, похоже, у меня есть только два варианта: либо а) я должен использовать только повторяющиеся платежи с картой, либо б) помечать продукты как доступные только на 6 месяцев в заголовке или описании, а затем вручную удалять их в Discourse (что мне совсем не хочется делать, лол). Уфф…

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

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

Я бы начал с создания продукта в Discourse. Пока у него нет покупок, вы можете перейти в Stripe, изменить цену и сделать её многоуровневой. Вы находитесь в некотором смысле на неизведанной территории, но, думаю, если вы используете таблицу цен, всё должно работать.

Я сделаю это и постараюсь протестировать сегодня вечером в тестовом режиме с новым зарегистрированным тестовым пользователем. Затем я вернусь с отчетом в эту тему :saluting_face:

Вау, ребята, вроде бы всё работает. Я создал два продукта на стороне Discourse, а затем отредактировал их в Stripe, установив срок действия на 6 месяцев (такой опции не было в плагине). Также добавил для них маркетинговые функции и описания. Один из продуктов сделал тарифным (с градацией цен), а оба добавил в таблицу цен. Протестировал первую подписку успешно, затем отменил её и проверил вторую (тарифную) — тоже всё прошло успешно.

(Кстати, мне понадобился этот тарифный план, потому что я хочу предложить тариф для бизнес-команд, где каждое место стоит немного дешевле (скидка за объём). Позже я смогу вручную пригласить недостающих участников команды по ссылке-приглашению и добавить их всех в закрытую группу.)

Таблица цен работала с обоими продуктами и с кодом купона. В Stripe следующая дата продления показывается как через шесть месяцев, но в Discourse продукт был создан с опцией продления «раз в месяц» так что мне всё ещё неясно, вызовет ли это какие-либо проблемы!

Однако, похоже, всё работает, даже если этот подход не является «официально поддерживаемым». И если через 6 месяцев мне придётся что-то вручную скорректировать, это небольшая цена! Главное, чтобы пользователь действительно был добавлен в группу и оплата прошла успешно.

И в /(user)/billing/subscriptions шестимесячный тарифный план с поэтапной оплатой отображается следующим образом:

Ставка: 0,00 PLN / месяц
Продление: 15 июля 2025 г.

Это соответствует данным в панели управления Stripe. Таким образом, с точки зрения Stripe шестимесячная подписка работает корректно, и вопрос лишь в том, исключит ли плагин Discourse пользователя из группы через месяц или нет.

Когда я использую симулятор времени в Stripe и перехожу на месяц вперёд, весь идентификатор подписки исчезает из панели администратора плагина подписок /admin/plugins/discourse-subscriptions/subscriptions, как будто её никогда не существовало. Однако пользователь всё ещё состоит в группе, а в Stripe подписка по-прежнему отображается как активная.

Надеюсь, в будущем мы сможем получить поддержку шестимесячных подписок :face_with_peeking_eye:

Это гениально! Думаю, этот трюк поможет и мне. Спасибо за分享!

Думаю, их выкинет вебхук от Stripe, поэтому я думаю, что всё сработает как надо. Время покажет!

Верно. Плагин подписки не имеет собственных таймеров. Он просто слушает события вебхуков от Stripe.