Skip to main content

Цена для клиента

Тарифы у платформы одни на все каналы продаж. Цена для клиента — цена платформы плюс ваша наценка (markup_percent в GET /account). В GET /plans все три числа уже посчитаны:
Суммы — строки с двумя знаками после точки. С наценкой цена для клиента округляется до целого рубля и никогда не бывает ниже цены платформы, поэтому partner_share может отличаться от точного процента; без наценки цена равна цене платформы как есть. Показывайте клиенту суммы из ответа как есть: собственный расчёт по проценту разойдётся со счётом.

Смена наценки

Наценку меняет PATCH /account с полем markup_percent — от 0 до 1000 %:
  • GET /plans отдаёт новые цены сразу — перечитайте тарифы после смены;
  • уже выставленные счета остаются по прежней цене: сумма фиксируется при выставлении;
  • наценка API своя: цены ваших Telegram-ботов на платформе она не меняет — у каждого бота наценка своя и задаётся в кабинете, на странице бота «Цены».

Как проходит оплата

1

Счёт

Ваш сервер вызывает POST /payments и получает payment_url.
2

Оплата

Клиент оплачивает на странице сервиса оплаты. Если передан return_url, со страницы оплаты клиент вернётся на ваш адрес — и после оплаты, и после отказа, поэтому на этой странице перечитайте счёт. Если страница оплаты возврат не поддерживает, клиент остаётся на ней.
3

Выдача

Платформа выдаёт доступ сама — ничего вызывать не нужно. Счёт становится succeeded, в поле client появляется ссылка подписки, а если подключены вебхуки — на ваш сервер уходит событие payment.succeeded.
4

Наценка

partner_share ложится на ваш баланс партнёра. Баланс и вывод — в кабинете партнёра, раздел «Финансы».

Статусы счёта

expires_at — ориентир: без отмены от сервиса оплаты статус меняется в течение часа после срока, поэтому pending может держаться дольше. Отказ банка, наоборот, переводит счёт в expired и до expires_at.

Продление

Продление — тот же POST /payments с purpose: subscription на тот же client_id. Срок прибавляется к текущему, ссылка подписки не меняется: клиенту ничего не нужно переподключать. Если подписка уже истекла, новый срок идёт с момента оплаты.

Дополнительные устройства

В подписку входит devices.included устройств. Докупить ещё — POST /payments с purpose: devices и числом devices:
  • Нужна действующая подписка — иначе 400 NO_ACTIVE_SUBSCRIPTION.
  • Больше devices.max на клиента не бывает — иначе 400 DEVICE_SLOT_LIMIT_EXCEEDED.
  • На тарифе без ограничения устройств счёт не выставится — 400 DEVICE_SLOTS_NOT_APPLICABLE.
  • devices: null в GET /plans — доп. устройства сейчас не продаются (409 DEVICES_NOT_FOR_SALE).

Способы оплаты

Список — GET /payment-methods: код method для счёта и название для клиента. Список меняется, поэтому перечитывайте его перед показом, а не храните у себя. Способ, который стал недоступен, отвечает 400 UNSUPPORTED_PAYMENT_METHOD.