Создание сайта с подпиской для небольшой мастерской наборов для вышивки: сервис на Ruby on Rails, где покупатель из Европы выбирает план, платит картой и сам управляет доставкой. Его собрал Евгений Росляков. Сайты и сервисы он делает с 2016 года, работает самозанятым по договору, а юридическим лицам выдаёт закрывающие документы. Работает из Москвы и удалённо.
Мастерская находится в Сербии. Хозяйка сама придумывает схемы, собирает нитки, ткань и инструкции в коробки и отправляет покупателям по Европе. Подписка у неё давно: набор раз в месяц или раз в сезон.
Вела она всё вручную. Каждому подписчику выставляла счёт, ждала перевода, отмечала в таблице. Продления терялись: кто-то не получил напоминание, кто-то забыл заплатить, а сама она забыла написать. Коробки уходили с задержкой, а иногда не уходили вовсе.
Знакомые мастерские с подписками спрашивали, как у неё это получается. Ответ был неловкий: никак, держится на её памяти.
Хозяйка хотела, чтобы деньги приходили сами, а покупатель мог поставить подписку на паузу без переписки. И чтобы систему можно было предложить коллегам.
Сайт написан на Ruby on Rails. Он удобен там, где много личных кабинетов, платежей и писем. Фоновые задачи на Ruby, то есть напоминания, создание очередных заказов на отправку и обработка неудачных списаний, работают отдельно от страниц, чтобы покупатель ничего не ждал.
В каталоге два плана: ежемесячный набор и сезонный. В личном кабинете покупатель видит ближайшую отправку, может поставить подписку на паузу, пропустить месяц или поменять адрес. Раньше такие просьбы приходили в личные сообщения.
Регулярные платежи принимает Stripe через Stripe Billing. Покупатель один раз вводит карту, дальше списания идут по расписанию. Если оплата не прошла, подписку не отменяют сразу: Stripe повторяет попытки по заданному графику, а сервис получает о каждой вебхук и пишет покупателю письмо с просьбой обновить карту. Только после последней неудачи подписка встаёт на паузу.
Тем, кто не любит вводить карту на сайте, доступен PayPal со своими подписками. Статусы из обеих систем сходятся в одну таблицу заказов, и хозяйка видит одну картину вместо двух.
Теперь о том, почему это SaaS. Сервис сделан многоарендным: каждая мастерская получает отдельный магазин со своими планами, ценами, письмами и платёжными ключами, а данные магазинов не пересекаются. Другая мастерская подключается без правок кода: заводит магазин, загружает планы и привязывает свои платежи. Так хозяйка получила не только инструмент для себя, но и сервис, который можно сдавать другим мастерам.
Страницы и письма написаны на английском и сербском. Страна и адрес нужны для расчёта доставки, потому что цена зависит от страны.
Продления теперь идут без участия хозяйки. Деньги списываются в срок, неудачные платежи повторяются, а покупатель получает понятное письмо вместо молчания. Таблица с ручными отметками больше не нужна.
Паузы и пропуски стали делом самого покупателя. Просьбы «перенесите мне месяц» ушли из переписки, и вечера освободились для новых схем. Список коробок к отправке сервис выдаёт заранее, поэтому нитки закупаются под реальное число подписчиков, а не наугад.
Две знакомые мастерские собираются подключиться как отдельные магазины. Начать они хотят с небольших планов, чтобы посмотреть, как это работает у них.
Ограничение вполне осязаемое: сервис собирает платежи и подписки, но сам не печатает адресные наклейки и не отслеживает посылки. Отправку по-прежнему оформляет человек на почте. Следующим шагом задумана выгрузка для служб доставки.
Подписки до сих пор живут на ручных счетах и таблице? Присылайте задачу через freelance.ru: расскажите, что вы отправляете и как часто, и я подберу состав плана.