Оплата сообщения (p-{id})
p-{id})Публичная оплата через платёжную систему для записей истории «сообщение с типом Оплата».
Базовый URL: https://api.bot-t.com
Все запросы — POST, тело JSON, заголовок:
Content-Type: application/json
Формат ответа:
{ "result": true, "data": ... }
{ "result": false, "message": "текст ошибки" }
Лимит: 120 запросов в минуту с одного IP.
Два этапа
- Создать запись оплаты (токен бота) → получить
order_idиorderKey. - Провести оплату (публично, без токена бота) →
payment/order/*сorder_keyилиsecret_user_key.
sequenceDiagram
participant Backend as Ваш сервер
participant Create as create-payment-history
participant UI as Страница оплаты
participant Pay as payment/order
Backend->>Create: bot token + id, amount, email
Create-->>Backend: order_id, orderKey
Backend->>UI: URL с bot_id, order_id, order_key
UI->>Pay: get-status
UI->>Pay: get-groups → get-items → get-pay-data
UI->>Pay: check-pay / get-status
1. Создать оплату сообщения
Нужен токен бота (token / botToken) или secretKey в query.
POST https://api.bot-t.com/v1/bot/messagenew/payment/payment-history/create-payment-history?token=BOT_TOKEN
| Поле | Обяз. | Тип | Описание |
|---|---|---|---|
id | да | integer | ID настройки MessagePayment (сообщение-оплата) |
amount | да | number | сумма в основных единицах (15.50 = 15 ₽ 50 коп.) |
email | да | string | почта / произвольная строка покупателя |
user_id | нет | integer | системный ID пользователя платформы |
bot_clone_id | нет | integer | ID копии бота |
Запрос
{
"id": 12,
"amount": 1500,
"email": "[email protected]",
"user_id": 100500
}
Ответ (важные поля)
{
"result": true,
"data": {
"id": 44744,
"messagePaymentId": 12,
"order_id": "p-44744",
"orderKey": "a1b2c3d4e5f6...",
"status": "pending",
"amount": "1500 ₽",
"email": "[email protected]"
}
}
Сохраните:
data.order_id→p-44744data.orderKey→ секрет для публичной оплаты
Ссылка на страницу оплаты:
https://example.com/pay?bot_id=51318&order_id=p-44744&order_key=a1b2c3d4e5f6...
В тексте и URL кнопок в боте можно использовать {ORDER_ID} и {ORDER_KEY} — подставятся автоматически при отправке сообщения-оплаты.
2. Публичная оплата
Токен бота не нужен.
В каждом запросе:
| Поле | Обяз. | Описание |
|---|---|---|
bot_id | да | ID бота |
order_id | да | p-{id} из шага 1 |
order_key или orderKey | да* | orderKey из шага 1 |
secret_user_key | да* | секрет владельца платежа (вместо order_key) |
* Нужен хотя бы один из двух: order_key / orderKey или secret_user_key.
Без ключа:
{ "result": false, "message": "not_access (public_pay_key)" }
Ниже во всех примерах:
bot_id=51318order_id=p-44744order_key=a1b2c3d4e5f6...
POST /v1/payment/order/get-status
Проверить, что оплата ещё ждёт оплаты, и получить сумму.
Запрос (через order_key)
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6..."
}
Запрос (через secret_user_key)
{
"bot_id": 51318,
"order_id": "p-44744",
"secret_user_key": "k7f3a9b2c1d4e5f6"
}
Успех
{
"result": true,
"data": {
"status": "wait",
"order_id": "p-44744",
"amount": 150000
}
}
amount — в минимальных единицах (копейки). Для UI: amount / 100.
Уже оплачено
{
"result": false,
"message": "Заказ уже оплачен"
}
POST /v1/payment/order/get-groups
Список групп способов оплаты.
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6..."
}
Успех
{
"result": true,
"data": {
"order_id": "p-44744",
"amount": 150000,
"groups": [
{
"id": 5,
"title": "Банковские карты",
"text_choose": "Выберите способ",
"sort": 1
}
]
}
}
Запомните groups[].id → group_id.
POST /v1/payment/order/get-items
Способы оплаты внутри группы.
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6...",
"group_id": 5
}
Успех
{
"result": true,
"data": {
"order_id": "p-44744",
"amount": 150000,
"items": [
{
"id": 42,
"design": {
"title": "СБП",
"text_button": "Оплатить"
}
}
]
}
}
Запомните items[].id → item_id. Секреты платёжки в ответе не приходят.
POST /v1/payment/order/get-pay-data
Данные для экрана оплаты после выбора способа.
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6...",
"item_id": 42
}
Успех (основные поля)
{
"result": true,
"data": {
"status": "wait",
"amount": 150000,
"button_cancel_pay": "Отмена",
"button_check_pay": "Проверить оплату",
"item": { "id": 42 },
"dataPay": {
"type": 1,
"text": "Перейдите по ссылке для оплаты",
"link": "https://pay.example.com/...",
"is_button_check": true
}
}
}
Поведение по dataPay.type
dataPay.type| type | Действие |
|---|---|
| 0 | показать dataPay.text |
| 1 | открыть dataPay.link |
| 2 | поле ввода → set-pay-input → снова get-pay-data |
| 3, 4, 8 | requires_telegram: true — завершить в Telegram-боте |
| 6 | открыть Web App (dataPay.web_app) |
| 7, 9 | способ с чеком на сайте недоступен |
POST /v1/payment/order/set-pay-input
Нужен, если dataPay.type === 2 (пользователь вводит текст).
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6...",
"item_id": 42,
"input_value": "текст от пользователя"
}
Допустимо поле text вместо input_value.
Успех
{
"result": true,
"data": {
"saved": true,
"message": "Данные сохранены. Вызовите get-pay-data с тем же item_id."
}
}
После успеха снова вызовите get-pay-data с тем же item_id.
POST /v1/payment/order/check-pay
Проверить у платёжной системы, прошла ли оплата.
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6..."
}
Успех
{
"result": true,
"data": {
"payment_found": true,
"payment_url": ""
}
}
Если payment_found === true — покажите успех или снова get-status (ожидается «Заказ уже оплачен»).
POST /v1/payment/order/cancel
Отменить сценарий оплаты (кнопка «Назад»).
Запрос
{
"bot_id": 51318,
"order_id": "p-44744",
"order_key": "a1b2c3d4e5f6..."
}
Успех
{
"result": true,
"data": {
"redirect_action": "...",
"redirect_data": {}
}
}
Чек-лист
create-payment-history→ сохранитьorder_id,orderKey.- Страница оплаты:
bot_id,order_id,order_keyв URL или сессии. get-status→ при «Заказ уже оплачен» показать успех.get-groups→get-items→get-pay-data.- По
dataPay.typeпоказать UI; для type 2 —set-pay-input→get-pay-data. - После ухода на оплату — polling
check-payилиget-status. - Сумма в интерфейсе:
amount / 100.
Ошибки
| Ситуация | message |
|---|---|
| Нет / неверный ключ | not_access (public_pay_key) |
Неверный формат order_id | Допустимы только o-{id}, c-{id} или p-{id} |
| Запись не найдена | not found |
bot_id не совпадает | not_access (public_bot) |
| Уже оплачено | Заказ уже оплачен |
| Нет способов оплаты | Создатель бота не настроил ни одного способа оплаты |
| Способ с чеком | текст про другой способ или оплату в Telegram |