Дайте клиентам кредиты и назначьте операциям цену в них

Добавляйте своих клиентов, ведите для каждого баланс кредитов, пополняйте его, задавайте, сколько кредитов стоит операция, блокируйте клиента и читайте, что было списано.

8 мин чтения

Кредиты — это единица, в которой вы считаете потребление своих клиентов. Slen ведёт баланс кредитов для каждого клиента, берёт кредиты, когда флоу выполняется для него, и отклоняет запуск, который баланс не покрывает. Эта статья — о странице клиентов в консоли.

Как работают кредиты

Клиент — это ваш конечный клиент. Slen знает клиента по идентификатору, который ему даёт ваше приложение, — тому, что запрос, запускающий флоу, отправляет в context.user_id. Используйте идентификатор вашей системы, а не адрес почты и не имя.

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

ЗапускЧто происходит с кредитами
Не называет клиентаКредиты не участвуют
Относится к операции без цены или с ценой 0Кредиты не участвуют, кого бы ни назвали
Называет клиента, которого проект не знаетЗапуск отклоняется с кодом customer_not_found
Называет заблокированного клиентаЗапуск отклоняется с кодом customer_blocked
Стоит больше кредитов, чем доступно на счёте, или у клиента нет счёта этого типа кредитовЗапуск отклоняется с кодом insufficient_credits
Укладывается в счётЦена резервируется, затем тратится или возвращается

Кредиты — не деньги. Запуск, который резервирует кредиты, всё равно проверяется политиками и бюджетами.

У клиента может быть несколько счетов, по одному на каждый тип кредитов. Тип кредитов — это имя, которое вы выбираете сами. Запрос, который запускает флоу, называет его в context.credit_type, а запрос, который его не называет, использует default. Цена ищется для операции и типа кредитов, поэтому тип кредитов, у которого нет цены для операции, кредитов не берёт.

Ваше приложение может и само снимать кредиты — за то, что оно продаёт вне флоу: выгрузку, место. Такое списание делается через API — Клиенты и кредиты. Консоль не списывает.

Где клиенты

Откройте Клиенты. Страница показывает клиентов проекта, выбранного в шапке. Три вкладки под заголовком выбирают, что страница показывает: Клиенты, Маржа или Цены кредитов.

Страница открывается всем, у кого есть разрешение management:read. Добавление клиента, движение кредитов, настройки счёта, блокировка, удаление и цены требуют management:write.

Добавить клиента

Нажмите Добавить клиента, введите идентификатор клиента в поле Идентификатор клиента и снова нажмите Добавить клиента. Клиент добавляется без кредитов и без счёта, и открывается его карточка. Добавление клиента, который уже есть в списке, ничего не меняет.

Клиент появляется и тогда, когда ваше приложение впервые пополняет его через API.

Прочитать список

Строка вкладки Клиенты — это один клиент: идентификатор, метка Заблокирован, когда клиент заблокирован, и для каждого счёта — доступные кредиты, зарезервированные кредиты и время последнего изменения. Счёт, которому разрешено уходить в минус, отмечен меткой Овердрафт разрешён. Под списком страница считает клиентов в нём.

  • Баланс — это то, что есть у клиента. Зарезервированные кредиты отложены под вызовы, которые ещё не закончились. Доступное — это баланс без зарезервированных кредитов, поэтому баланс — это обе суммы вместе.

  • Поиск оставляет клиентов, чей идентификатор содержит введённый текст.

  • Доступно меньше сужает список до клиентов, у которых есть счёт, где доступно меньше кредитов, чем введённое число. Зарезервированные кредиты при этом не считаются доступными.

  • Фильтры рядом оставляют активных или заблокированных клиентов и клиентов со счётом одного типа кредитов.

Нажмите на строку, чтобы открыть карточку клиента. Карточка перечисляет счета с их суммами и настройками, а Движение под ними перечисляет движения кредитов клиента. Меню строки ведёт сразу к действиям Пополнить, Заблокировать и Удалить.

Настроить счёт

Счёт принадлежит одному типу кредитов. Его создаёт первое пополнение или его настройки, поэтому клиенту можно дать счёт раньше любых кредитов.

1. Откройте настройки

В карточке нажмите Добавить счёт для нового типа кредитов или Настройки в счёте, который уже есть.

2. Выберите тип кредитов

Для нового счёта введите его тип кредитов в поле Тип кредитов. Тип кредитов уже существующего счёта изменить нельзя.

3. Решите насчёт овердрафта

Оставьте Разрешить этому счёту уходить в минус выключенным, и холд, который счёт не покрывает, будет отклонён. Его можно выключить, пока баланс ниже нуля: защита действует со следующего движения.

4. Задайте предупреждение

В поле Предупреждать, когда доступно меньше введите число кредитов. Движение, которое опускает доступное ниже него, отправляет событие вебхука customer.balance_low. 0 не отправляет предупреждений.

5. Сохраните

Нажмите Сохранить настройки. Обе настройки сохраняются вместе.

Пополнить клиента

1. Откройте пополнение

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

2. Назовите тип кредитов

В поле Тип кредитов введите тип кредитов счёта. Пополнение типа кредитов, счёта которого у клиента нет, создаёт счёт.

3. Введите кредиты

В поле Сколько кредитов добавить введите сумму больше нуля. У кредитов четыре знака после точки. В поле Примечание можно написать, за что эти кредиты, например номер счёта на оплату: примечание видно в выписке.

4. Добавьте кредиты

Нажмите Пополнить.

Пополнение никогда не отклоняется из-за баланса, даже на счёте ниже нуля, и заблокированного клиента тоже можно пополнить.

Скорректировать баланс

В карточке нажмите Скорректировать в счёте. В поле Сколько кредитов добавить или снять введите, сколько кредитов добавить, или отрицательную сумму, чтобы снять кредиты, при желании заполните Примечание и нажмите Применить корректировку. Нулевая сумма отклоняется.

Корректировка не может опустить баланс ниже зарезервированных кредитов, если счёту не разрешено уходить в минус.

Прочитать выписку

Движение в карточке перечисляет каждое движение кредитов клиента, самое новое — первым, с балансом и доступными кредитами, которые оставило каждое. Фильтр Движение оставляет один вид движений, а фильтр типа кредитов — движения одного счёта, когда у клиента их несколько. Примечание показывает примечание, с которым сделали пополнение, списание или корректировку.

ДвижениеЧто оно делает
ПополнениеДобавляет кредиты к балансу
ЗабронированоСнимает кредиты с доступного. Баланс остаётся прежним
ПотраченоСнимает зарезервированные кредиты с баланса
ВозвращеноВозвращает зарезервированные кредиты в доступное
СкорректированоКорректировка вверх или вниз
СписаниеКредиты, которые ваше приложение сняло через API за то, что продало

Не складывайте движения, чтобы узнать, сколько потратил клиент: вызов, который потратил кредиты, сначала резервирует их, а затем тратит, и во что вызовы обошлись клиенту, показывает только Потрачено.

Заблокировать клиента

Заблокируйте клиента, чтобы остановить его запуски, например после возврата платежа.

1. Откройте блокировку

В карточке нажмите Заблокировать или выберите Заблокировать в меню строки.

2. Укажите причину

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

3. Заблокируйте

Нажмите Заблокировать. Карточка показывает метку Заблокирован со временем блокировки.

Новый запуск заблокированного клиента отклоняется с кодом customer_blocked до того, как что-либо создано. Его запуск, который уже идёт, отклоняется на следующем холде кредитов. Запуск операции без цены не резервирует кредиты и доходит до конца. У заблокированного клиента по-прежнему можно пополнять, списывать и корректировать кредиты, менять настройки и читать выписку, поэтому с клиентом можно рассчитаться.

Чтобы снова пустить клиента, нажмите Разблокировать в карточке. Разблокировать в меню строки открывает карточку.

Удалить клиента

В карточке нажмите Удалить или выберите Удалить в меню строки, затем нажмите Удалить клиента. Удаляется только клиент без истории: каждый счёт на нуле, ничего не зарезервировано, и в выписке нет ни одного движения. Клиент и его пустые счета исчезают.

Клиент с историей остаётся, потому что выписка объясняет баланс. Карточка объясняет почему и предлагает вместо этого заблокировать клиента. Через API тот же отказ — это код customer_has_history.

Назначить цену операции

1. Откройте цены

Выберите Цены кредитов и нажмите Задать цену.

2. Назовите операцию

В поле Код операции введите код операции, который называют ваши запросы. В поле Тип кредитов введите тип кредитов, в котором берётся цена.

3. Задайте цену

В поле Кредитов за вызов введите цену. Цена 0 делает операцию бесплатной и оставляет её в списке.

4. Сохраните

Нажмите Сохранить цену. Повторная цена для той же операции и того же типа кредитов заменяет прежнюю.

Предупреждение:

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

Новая цена действует со следующего холда. Вызов, который уже зарезервировал кредиты, сохраняет цену, по которой их зарезервировал, и каждый вызов модели в запуске резервирует цену один раз.

Сравнить кредиты со стоимостью

Маржа показывает за выбранный период, сколько кредитов списано с каждого клиента и сколько те же вызовы стоили в деньгах. Считаются только рассчитанные вызовы, и списание вашего приложения среди них не учитывается. Две суммы — в разных единицах, поэтому страница не показывает их соотношение.

Что читать дальше

  • Глоссарий — клиент, счёт, кредиты, списание и блокировка, по одной строке на каждое.

  • Политики — политика может применяться к вызовам одного клиента.

  • Клиенты и кредиты — клиенты, счета, пополнения, списания, блокировка и цены через API.

  • Клиенты и кредиты — те же клиенты из SDK и запуск, оплаченный кредитами клиента.

  • Управление API-ключами — ключ, которым ваше приложение ведёт своих клиентов.

  • Коды ошибок — каждый код API: что он значит и что с ним делать.