Что касается плагина Discourse Subscriptions, что произойдет, если я изменю некоторые настройки непосредственно в Stripe? Например, в Discourse невозможно сделать план продукта разовой оплатой. Это должна быть подписка на день, неделю, месяц или год. Но если я перейду на stripe.com, я смогу изменить существующую подписку на разовую оплату. Могу ли я это сделать? Как это изменит работу этого плана в Discourse? Станет ли он тогда разовой оплатой?
Это вполне возможно! Если снять галочку «Повторяющийся» на экране создания плана, он будет разовым платежом.
Однако изменить уже созданные планы нельзя.
Вы правы! У меня была небольшая путаница. На самом деле я хотел спросить, возможно ли сделать разовый платеж, который истекает и не действует бесконечно. Например, что-то вроде «дневного пропуска», когда вы платите 5 долларов и добавляетесь в специальную группу, а затем, скажем, через день подписка истекает, и вы удаляетесь из группы до тех пор, пока не оплатите снова. Это возможно?
К сожалению, в настоящее время это невозможно.
Я делаю что-то подобное в плагине. Я (условно) добавляю к модели user_group действие: когда пользователь добавляется в группу подписки, выполняется какое-то действие, а затем пользователь удаляется из этой группы. В вашем случае нужно сделать так, чтобы при добавлении пользователя в группу one-off-weeklong подпиской:
- пользователь добавлялся в группу
weeklong, предоставляющую права на определённые категории; - создавалась задача, которая удалит его из группы
weeklongпо истечении недели; - добавлялось пользовательское поле с датой начала недели, чтобы можно было удалить его, если произойдёт какая-то катастрофа с Redis;
- пользователь удалялся из группы
one-off-weeklong.
Если вам это интересно, вы можете связаться со мной или написать в Marketplace.
Но это глупо. Вместо этого просто добавьте обратный вызов для подписки (если это подписка) или клиента (если это разовый платеж). Термин «клиент» немного неточен. В нём хранится идентификатор клиента Stripe и идентификатор продукта Stripe. Поэтому сделайте что-то вроде:
add_model_callback(DiscourseSubscriptions::Subscription, :after_save) do
Rails.logger.warn("Теперь получена подписка #{self.external_id} для #{self.customer_id}")
# выполняем действия
end
add_model_callback(DiscourseSubscriptions::Customer, :after_save) do
Rails.logger.warn("Клиент #{self.product_id} для #{self.user_id}")
# выполняем дополнительные действия
end
Привет, ты решил эту проблему?
Можете дать более подробные рекомендации? Например, как реализовать эту функцию. Я не знаком с Rails… Спасибо!
Думаю, это мой лучший бесплатный ответ.
Вам не нужно их удалять. Они не вредят ничему. Они необходимы как запись о том, что вы продали. Вы должны иметь возможность удалить их из консоли Stripe.
Не знаю, всё ещё ли вы хотите этого добиться или уже нашли способ это реализовать? Похоже, что в Discourse нет встроенной автоматизации для такого сценария, но, возможно, есть другие способы. Это отдалённо напоминает ситуацию в кофейне, где нужно каждый день покупать новый напиток, чтобы иметь возможность сидеть за их столиками.


