Цена для клиента
Тарифы у платформы одни на все каналы продаж. Цена для клиента — цена платформы плюс ваша наценка (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.
