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

Вы можете обратиться в поддержку для интеграции своего способа оплаты командой BOT-T. Цена интеграции от 4000 до 10000 рублей и зависит от сложности интеграции

Инструкция по интеграции и настройке способов оплаты CUSTOM и CUSTOM_LINK

Документ предназначен для разработчиков, подключающих собственную платёжную систему к платформе BOT-T через способы оплаты CUSTOM и CUSTOM_LINK.

Полезные ссылки:


Общее: код заказа (order_id)

Идентификатор заказа имеет формат:

TYPE-MODEL_ID-ITEM_ID
  • TYPE — тип операции: u (пополнение баланса), o (заказ в боте без корзины), c (заказ в боте с корзиной), r (пополнение/списание), s (подписки).
  • MODEL_ID — уникальный идентификатор сделки (число).
  • ITEM_ID — идентификатор способа оплаты.
  • Разделитель — дефис -.

Пример: u-12345-67 — пополнение баланса, сделка 12345, способ оплаты 67.


1. CUSTOM — оплата через ваш обработчик по данным от клиента

Назначение

Клиент вводит данные (номер карты, реквизиты, код и т.п.) в боте. Эти данные отправляются на ваш сервер; вы проверяете платёж и отвечаете, засчитывать ли оплату.

Настройка в ЛК

  • Ссылка на обработчик — полный HTTPS-адрес вашего скрипта, например: https://your-site.com/payment-handler.php
  • Label — подпись поля ввода для клиента (в т.ч. в веб-версии), например: «Номер карты» или «Код оплаты»

В разделе «Дизайн» настраивается текст сообщения («Информация») и кнопка.

Процесс работы

  1. Клиент выбирает способ оплаты CUSTOM.
  2. Бот показывает текст из дизайна и ожидает ввод от клиента.
  3. Введённые данные бот отправляет на ваш обработчик POST-запросом.

Что приходит на ваш обработчик (POST)

ПараметрОписание
codeДанные, введённые клиентом
idПолный номер заказа в формате TYPE-MODEL_ID-ITEM_ID
bot_idУникальный идентификатор бота
currencyКод валюты (RUB, USD, EUR и т.д.) — обязательно проверять

Ответ вашего обработчика (JSON)

Сервер BOT-T ожидает ответ в формате JSON с полями:

ПолеТипОписание
idstringУникальный идентификатор транзакции в вашей системе
sumintФактическая сумма поступления в минимальных единицах (копейки, центы)
statusbooltrue — оплату засчитать, false — отменить заказ

Особенности:

  • Если вернуть id = "-1", сервер подождёт 3 секунды и повторит запрос (удобно для очередей).
  • При status = true заказ засчитывается; при status = false — отменяется.
  • Если вернуть sum меньше суммы заказа: для заказа — отмена; для пополнения баланса — зачисляется указанная меньшая сумма.
  • Все запросы можно отслеживать в логе способа оплаты в личном кабинете.

Пример ответа (успех)

{
  "id": "tx-12345",
  "sum": 10050,
  "status": true
}

Пример ответа (отказ)

{
  "id": "tx-12345",
  "sum": 0,
  "status": false
}

Пример ответа (повторить запрос через 3 сек)

{
  "id": "-1",
  "sum": 0,
  "status": false
}

2. CUSTOM_LINK — оплата по ссылке на ваш сайт и webhook

Назначение

Клиенту выдаётся ссылка на ваш сайт с параметрами заказа. После оплаты у вас ваш сервер отправляет уведомление (webhook) на API BOT-T — платформа засчитывает платёж.

Настройка в ЛК

  • Ссылка — базовый URL вашей страницы оплаты, к которому будут добавлены GET-параметры.
    Пример: https://your-site.com/pay?
    Итоговая ссылка будет вида: https://your-site.com/pay?id=...&order_id=...&sum=...&cur=...&sign=...

Опционально в настройках способа оплаты можно включить режим «веб-ссылка» (открытие в Web App Telegram).

Как формируется ссылка на оплату

Платформа добавляет к вашему URL следующие GET-параметры:

ПараметрОписание
idНомер сделки — только MODEL_ID (вторая часть order_id)
order_idПолный номер заказа TYPE-MODEL_ID-ITEM_ID
sumСумма в минимальных единицах (копейки/центы)
curКод валюты (RUB, USD и т.д.)
signПодпись для проверки подлинности (см. ниже)

Проверка подписи на вашей стороне (при переходе клиента)

Подпись в ссылке считается по формуле:

  • Разделитель: : (двоеточие).
  • Строка для подписи: id:sum:currency:TOKEN
    • id — только MODEL_ID (число, вторая часть order_id);
    • sum — сумма в копейках/центах;
    • currency — код валюты;
    • TOKEN — токен бота из настроек BotFather.

Формула: sign = md5(id . ':' . sum . ':' . currency . ':' . token).

Ваш обработчик страницы оплаты должен всегда проверять подпись, сверяя переданный sign с вычисленным значением. Токен бота храните в секрете на сервере.

Webhook: уведомление BOT-T об успешной оплате

После того как клиент оплатил заказ в вашей системе, ваш сервер должен отправить POST-запрос на API BOT-T:

URL: https://api.bot-t.com/payment/custom-link
(или ваш домен API, если развёрнут свой экземпляр: https://<ваш-домен>/api/payment/custom-link)

Метод: POST

Параметры (тело запроса):

ПараметрТипОписание
order_idstringПолный номер заказа TYPE-MODEL_ID-ITEM_ID
sumintСумма платежа в минимальных единицах (копейки/центы)
currencystringКод валюты (RUB, USD и т.д.)
signstringПодпись (см. ниже)

Подпись для webhook

При webhook используется полный order_id (не только model_id):

sign = md5(order_id . ':' . sum . ':' . currency . ':' . token)

Вместо token может использоваться секретный ключ бота (если настроен): тогда
sign = md5(order_id . ':' . sum . ':' . currency . ':' . secret_key).

Платформа проверяет оба варианта (токен и секретный ключ).

Пример генерации подписи (PHP) для webhook

$order_id = 'u-12345-67';  // полный order_id
$sum = 10050;
$currency = 'RUB';
$token = 'YOUR_BOT_TOKEN'; // или секретный ключ бота

$sign = md5($order_id . ':' . $sum . ':' . $currency . ':' . $token);

Пример cURL для webhook

curl -X POST "https://api.bot-t.com/payment/custom-link" \
  -d "order_id=u-12345-67" \
  -d "sum=10050" \
  -d "currency=RUB" \
  -d "sign=XXXXXXXXXXXX"

Ответ API на webhook

  • Успех: HTTP 200, тело вида {"status":"ok"}.
  • Ошибка: HTTP 400, тело с полями error, description (текст ошибки). В логе способа оплаты в ЛК можно посмотреть детали (например, «Неверная подпись»).

Альтернатива общему webhook

Вместо отправки на общий эндпоинт payment/custom-link можно использовать отдельные API для разных типов операций (пополнение баланса, заказ без корзины, заказ с корзиной и т.д.). Актуальные ссылки и методы описаны в разделах документации по управлению балансами и оплате заказов (см. ссылки в FAQ CUSTOM_LINK).


Краткое сравнение

АспектCUSTOMCUSTOM_LINK
Инициатор данныхКлиент вводит в ботеКлиент переходит по ссылке на ваш сайт
Ваш серверПринимает POST с code, id, bot_id, currency и возвращает JSON id, sum, statusОтдаёт страницу оплаты (проверяя sign из GET), после оплаты шлёт POST на API BOT-T
ПодписьНе используетсяВ ссылке: по id (model_id); в webhook: по полному order_id
Эндпоинт BOT-TНет (BOT-T ходит к вам)POST на .../payment/custom-link от вас к BOT-T

Рекомендации

  1. Всегда проверяйте подпись (CUSTOM_LINK) и входящие параметры (CUSTOM: currency, id).
  2. Используйте HTTPS для обработчиков и храните токен/секретный ключ только на сервере.
  3. Логи способов оплаты в ЛК помогают отлаживать запросы и ответы.
  4. При необходимости доработки или внедрения отдельного способа оплаты под ваш проект можно обратиться в поддержку BOT-T (условия и стоимость указаны в FAQ).