Skip to main content
Полный перечень терминов и полей расчёта — в глоссарии. Эта страница описывает, как в Yume считается стоимость подписки: по каким правилам оценивается каждая позиция, чем отличаются два режима тарификации, как ведёт себя расчёт при увеличении и уменьшении лимитов, и как администратор регистрирует оплату, пришедшую не через платёжный шлюз (перевод на счёт, наличные).

Единое ядро расчёта

Раньше цена считалась в нескольких местах по слегка разным правилам. Теперь весь расчёт выполняет одно ядро, и все три сценария оплаты обращаются именно к нему:
Практическое следствие: предварительная оценка в кабинете, итог в счёте, сумма автопродления и сумма, которую видит оператор в админке, считаются одним и тем же кодом. Расхождений между «показали» и «списали» из-за разной логики больше нет.
Ядро принимает корзину — список того, что компания хочет получить. Позиция корзины бывает двух видов:
  • Интеграция или модуль — указывается выбранный тарифный период (тариф).
  • Лимитная позиция — указывается желаемое итоговое количество (не прирост, а именно то значение, к которому нужно прийти).
На выходе каждая позиция получает цену, границы своего периода и итоговое количество, а корзина — общую сумму.

Два режима тарификации

Ядро работает в одном из двух режимов. Режим выбирается наличием целевой даты.

Режим «по периодам» (целевая дата не указана)

Обычный режим оплаты из кабинета и автопродления. Каждая позиция тарифицируется по своему периоду:
  • интеграция или модуль — за длительность выбранного тарифа;
  • лимит — по циклу компании (длительность тарифа её подписки «аренда»), с пропорциональной доплатой при увеличении в середине срока.

Режим «продление до даты» (целевая дата указана)

Оператор или клиент указывает одну дату, и все позиции корзины продлеваются до неё, а цена считается пропорционально по дням: цена за период делится на длительность периода и умножается на число оплачиваемых дней. Дополнительно включаются автоподбор тарифного периода и защита от подорожания (см. ниже). Это основной режим страницы регистрации оплаты.

Интеграции и модули

Тарифы интеграций бывают двух видов, и ведут себя они принципиально по-разному: Периодный тариф пристыковывается к концу уже оплаченного срока: начало нового периода — это текущая дата окончания подключения, но не раньше «сейчас». Досрочное продление не сжигает остаток оплаченного времени.
Количественный тариф намеренно не имеет даты окончания: оплаченный пакет единиц расходуется по факту, а не по времени. Целевая дата на такие позиции не влияет — они всегда стоят ровно свою цену.
Только периодная позиция считается «покупкой доступа». Это различие важно для бесплатных связанных интеграций (см. ниже): комплект раздаёт сам доступ к модулю, но никогда — расходуемые единицы. Пакет SMS оплачивается всегда, независимо от того, был доступ к модулю куплен или получен бесплатно в комплекте.

Лимитные позиции

Лимиты (пользовательские места, точки аренды, автомобили, самокаты, мотоциклы) тарифицируются по циклу самой компании — это длительность тарифа её основной подписки «аренда» (1, 3, 6 или 12 месяцев). Компания, оплачивающая аренду на год, покупает и места, и технику по годовой цене, на год и с годовым делителем при пропорциональном расчёте. Если тарифа аренды прочитать негде (подписки нет либо у подключения не сохранён тариф), цикл считается месячным.
Цикл берётся из той же подписки, чья дата окончания переносится на все лимиты компании. За счёт этого срок лимита и цена, по которой он тарифицируется, всегда приходят из одного места: остаток срока измеряется в том же цикле, в котором взята цена.
Правила:
  1. Платят только за превышение бесплатного объёма. Единицы внутри бесплатного лимита плана не стоят ничего.
  2. Платят только за прирост. Если у компании уже оплачено 3 места и она хочет 5 — тарифицируются 2 места, а не 5.
  3. Увеличение в середине действующего срока — доплата пропорциональна остатку срока, а окно лимита не сдвигается: новые единицы «доживают» до той же даты окончания, что и старые.
  4. Увеличение, когда действующего срока нет (первая покупка или после истечения) — прирост оплачивается за полный цикл компании, и открывается новое окно такой же длительности (месяц, полгода или год).
  5. Уменьшение применяется сразу и бесплатно, возврата за неиспользованный остаток нет, окно сохраняется.
Если запрошенное количество остаётся внутри бесплатного объёма, расчёт вообще не обращается к прайсу. Поэтому ненастроенная цена на какой-то ресурс не ломает весь счёт — она мешает только при попытке купить платные единицы этого ресурса.

Автоподбор тарифного периода

В режиме продления до даты система смотрит, сколько целых месяцев реально оплачивается, и сама берёт подходящий по длительности прайс. Поддерживаемые сроки — 1, 3, 6 и 12 месяцев; неподдерживаемая длительность округляется вниз до ближайшего поддерживаемого: Так клиент, продлевающий подписку на год одной операцией, получает годовую цену, а не двенадцать месячных. А доплата за единицы, добавленные на три оставшихся месяца, считается по трёхмесячной ставке, а не месячной, растянутой на тот же срок.
Ступени берутся из общего перечня поддерживаемых сроков, поэтому добавление нового тарифного срока не требует правок в логике подбора — так в ладдер и добавился трёхмесячный тариф.
Для лимитов подобранный по сроку период не может оказаться короче цикла компании: если аренда оплачена на год, то и короткое продление мест считается по годовой ставке за день. Обратное правило работает: длинный срок повышает период даже на месячном плане.
Если для ресурса не настроена цена нужного периода, расчёт спускается на цикл компании, а затем на месячный — и делитель с длиной нового окна берутся из того же периода, чья цена была найдена. Иначе строка получилась бы вида «месячная цена за годовой период».
Дни считаются по календарным датам, а не по разнице моментов времени. Иначе продление «ровно на 180 дней», выбранное днём, давало бы 179 дней и теряло полугодовой тариф.

Защита от подорожания

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

Округление

Итоговая цена каждой позиции округляется до десятков тенге (обычное арифметическое округление). Круглые тарифы остаются как есть; дробные результаты пропорционального расчёта приводятся к десяткам.

Детализация расчёта

И кабинет, и админка получают из ядра одинаковые строки детализации. По каждой строке видно:
  • название позиции (для интеграции — с указанием тарифа: дни или количество единиц);
  • количество оплачиваемых единиц (для лимитов);
  • цену за период и длительность этого периода;
  • сколько дней фактически тарифицируется;
  • сумму по строке;
  • до какой даты действует результат.

Бесплатные связанные интеграции

Некоторые интеграции идут «в комплекте» к другим: при оплате основной интеграции связанная подключается автоматически и бесплатно на тот же срок. Такие позиции добавляются в детализацию отдельными строками с пометкой «бесплатно» — чтобы клиент и оператор видели полный состав того, что даёт оплата.
Связанные интеграции подключаются сигналом при сохранении основного подключения. В детализации они показаны справочно и в сумму счёта не входят.
Бесплатно раздаётся только доступ — то есть периодная позиция. Количественный пакет (SMS, документы) в комплект не попадает никогда: он не имеет срока, ничего не «продлевает» и всегда оплачивается по своей цене, даже если сам модуль достался компании бесплатно вместе с другой оплаченной интеграцией.

Регистрация оплаты администратором

Для оплат, пришедших мимо платёжного шлюза (банковский перевод, наличные), в админке есть отдельная страница «Регистрация оплаты». Она доступна с дашборда и из карточки компании, и открыта только сотрудникам Yume. Сценарий работы оператора:
1

Выбор компании

Компания выбирается поиском по названию, телефону или email. После выбора страница подтягивает её текущее состояние: действующие лимиты (текущее значение, бесплатный объём, дата окончания) и все интеграции со статусом «активна» / «до такой-то даты» / «истекла» / «не подключено».
2

Сборка корзины

Действующие периодные подписки компании сразу попадают в корзину — обычная задача оператора это продление. Лимиты правятся счётчиками, подписки добавляются диалогом «интеграция → вариация → тариф». На одну интеграцию берётся один тариф.
3

Продление до даты (необязательно)

Если указана целевая дата, вся корзина продлевается до неё по пропорциональному режиму. В этом режиме в расчёт попадают и те лимиты, количество которых не менялось, — иначе их срок не продлился бы.
4

Проверка суммы

Каждое изменение пересчитывается на сервере тем же ядром: оператор видит детализацию построчно и итог в закреплённой строке внизу. Расчёт только считает и ничего не сохраняет.
5

Регистрация

По кнопке создаётся счёт, сразу переводится в статус «подтверждён» со списанной суммой, равной итогу, и помечается как оплата, зарегистрированная вручную (с автором и комментарием). Дальше срабатывает штатный провижининг — тот же, что после оплаты картой.
Счёт создаётся сначала в статусе «в ожидании», затем позиции, и только потом статус меняется на «подтверждён». Порядок важен: провижининг читает позиции счёта, поэтому к моменту подтверждения они уже должны существовать.
Ручные оплаты видны отдельно: на дашборде — счётчиком «вручную» в карточке выручки, в карточке счёта и в уведомлении администраторам — строкой «Оплата зарегистрирована вручную» с комментарием оператора.

«Продления на неделе» — кто продлевается и на какую сумму

Блок на дашборде админки показывает компании, у которых платная подписка заканчивается в течение 7 дней, и ожидаемый доход, если все они продлятся по текущим тарифам. Блок смотрит вперёд и поэтому не зависит от выбранного на дашборде периода. Три показателя сверху: В таблице по каждой компании: дата окончания, сколько дней осталось, что именно нужно продлить, будет ли списание автоматическим (есть активная карта с автопродлением) и ожидаемая сумма. Название компании — ссылка на страницу регистрации оплаты с уже выбранной компанией.
Что считается «к продлению»: только подписки, продаваемые по времени. Не попадают в блок:
  • активные демо — конверсия пробного периода это другая воронка, и её сумма завысила бы прогноз;
  • бесплатные связанные интеграции — у них нет тарифа вовсе, они и так продлеваются вместе с оплаченной;
  • количественные пакеты (SMS, документы) — они расходуются по факту, а не по сроку.
Если у подключения нет своего тарифа (так бывает у основного модуля аренды), для прогноза берётся месячный тариф этой интеграции в тенге. Подписки, продаваемые по времени, но без тарифа в тенге, показываются пометкой «без тарифа в ₸» и в сумму не входят.

Способ оплаты в карточке счёта

По оплаченному счёту система показывает, чем именно он оплачен — как по подтверждённому, так и по возвращённому (он тоже был оплачен, и история должна это показывать). Для оплаты через шлюз это платёжная система, маскированный номер карты, срок действия, держатель и способ оплаты (карта, Apple Pay, Google Pay, кошелёк, баланс). Для ручной регистрации — пометка о ручной оплате и комментарий оператора. По отклонённому счёту сведений нет: данные карты записываются только на успешном ответе шлюза. Эти данные доступны и клиенту в истории счетов, и сотруднику в админке, и попадают в уведомление администраторам об оплате.

Связанные страницы

Глоссарий: расчёт стоимости

Термины расчёта, режимы, поля строк детализации и данных ручной оплаты.

Инвойсы и платежи

Жизненный цикл счёта, оплата через шлюз, вебхуки и провижининг по подтверждению.

Лимиты и тарификация

Модель лимита, прайс по периодам, срок действия лимита и пересчёт потребления.

Платёжные шлюзы

FreedomPay: подпись запросов, проверка входящих колбэков, списание и возврат.

Компании и биллинг

Обзор всего модуля компаний, подписок и платежей.