Сообщение оплата

Оплата сообщения (p-{id})

Публичная оплата через платёжную систему для записей истории «сообщение с типом Оплата».

Базовый URL: https://api.bot-t.com

Все запросы — POST, тело JSON, заголовок:

Content-Type: application/json

Формат ответа:

{ "result": true, "data": ... }
{ "result": false, "message": "текст ошибки" }

Лимит: 120 запросов в минуту с одного IP.


Два этапа

  1. Создать запись оплаты (токен бота) → получить order_id и orderKey.
  2. Провести оплату (публично, без токена бота) → 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даintegerID настройки MessagePayment (сообщение-оплата)
amountдаnumberсумма в основных единицах (15.50 = 15 ₽ 50 коп.)
emailдаstringпочта / произвольная строка покупателя
user_idнетintegerсистемный ID пользователя платформы
bot_clone_idнетintegerID копии бота

Запрос

{
  "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_idp-44744
  • data.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 = 51318
  • order_id = p-44744
  • order_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[].idgroup_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[].iditem_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

typeДействие
0показать dataPay.text
1открыть dataPay.link
2поле ввода → set-pay-input → снова get-pay-data
3, 4, 8requires_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": {}
  }
}

Чек-лист

  1. create-payment-history → сохранить order_id, orderKey.
  2. Страница оплаты: bot_id, order_id, order_key в URL или сессии.
  3. get-status → при «Заказ уже оплачен» показать успех.
  4. get-groupsget-itemsget-pay-data.
  5. По dataPay.type показать UI; для type 2 — set-pay-inputget-pay-data.
  6. После ухода на оплату — polling check-pay или get-status.
  7. Сумма в интерфейсе: 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