# Telegram

## Как подключить платежную систему&#x20;

### Платежная система встроена в Telegram.&#x20;

Чтобы совершать платежи внутри мессенджера, вам нужно:&#x20;

* подключить платежную систему к боту в боте BotFather&#x20;
* перейти в настройки нужного бота и в меню выбрать Payments&#x20;
* следуя инструкциям, подключить доступную платежную систему и скопировать выданный токен

&#x20;                                           ![](/files/100f6021b37cb48977abbad2e0811b6ac477f7f8)<br>

![](/files/8909c0f29d4a04724b85cafa97855c85d6681c74)

## Как выставить счет клиенту&#x20;

Чтобы отправить счет в Telegram, используйте метод&#x20;

tg\_send\_invoice(provider\_token, platform\_id, title, description, currency, prices, photo\_url, payload, protect\_content, disable\_notification, need\_name, phone\_number, need\_email, reply\_to\_message\_id, reply\_markup, reply\_id) - обязательные параметры выделены жирным&#x20;

**provider\_token** - токен, полученный в BotFather после подключения платежной системы&#x20;

**platform\_id** - получатель — идентификатор пользователя, группы или канала&#x20;

**title** - название товара, 1-32 символа

**description** - описание товара, 1-255 символов&#x20;

**currency** - валюта платежа (RUB, USD, UAH и так далее <https://core.telegram.org/bots/payments#supported-currencies>) &#x20;

**payload** - первая часть данных о платеже, по умолчанию tg\_payment&#x20;

**prices** - разбивка цены (описание ниже)&#x20;

**photo\_url** - ссылка на изображение товара&#x20;

**disable\_notification** - 1 — отправить с уведомлением, 0 — без уведомления

**protect\_content** - 1 — защита от копирования и скриншотов, 0 — без защиты&#x20;

**need\_name** - 1, если вам нужно полное имя пользователя для завершения заказа, 0 — без запроса имени&#x20;

**need\_phone\_number** - 1, если вам нужен номер телефона пользователя для завершения заказа, 0 — без запроса номера&#x20;

**need\_email** - 1, если вам нужен email пользователя для завершения заказа, 0 — без запроса почты&#x20;

**reply\_to\_message\_id** - id сообщения, на которое мы отвечаем, '' — не ответ&#x20;

**reply\_markup** - клавиатура, первая кнопка должна быть кнопкой с типом оплаты

Если указан один из параметров need\_name, need\_phone\_number или need\_email, перед оплатой у пользователя будут запрошены данные и сохранены в переменные клиента, если платеж пройдет успешно. На скриншоте ниже запрос всех данных для ввода:

**prices** - массив массивов с данными о стоимости товаров и дополнительных услуг (доставка, упаковка и т. д.). Отображается на странице оплаты. Сумма указывается либо целым числом, например 125, либо дробным через точку 120.25. Например: \[\["товар", 2000], \["НДС", 20.75], \["упаковка", 100]

## Callback при оплате&#x20;

После успешной оплаты в чат с пользователем придет колбек следующим образом:&#x20;

**phone\_best 4737685 2120.75 UAH 1955518436**&#x20;

где phone\_best - payload - из запроса на создание счета 473737685 - id чата, которому изначально был отправлен счет 2120.75 - полная сумма платежа UAH - валюта 1955518436 - id платежа в системе мерчанта

Также, если вы запросили имя, телефон и/или email, клиент запишет переменные:&#x20;

**tg\_payment\_name, tg\_payment\_phone** и **tg\_payment\_email**

{% hint style="info" %}
В случае успеха колбек будет отправлен в личные сообщения пользователя. Для этого клиент и бот должны взаимодействовать до оплаты (клиент должен быть подписан на бота)!
{% endhint %}

{% hint style="info" %}
После получения хука об оплате платеж будет автоматически подтвержден через answerPreCheckoutQuery <https://core.telegram.org/bots/api#answerprecheckoutquery> . &#x20;
{% endhint %}

## Примеры&#x20;

`prices = [["product", 2000], ["NDS", 20.75], ["package", 100]]` \
`result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'phoneW-200', 'Best Model on the Market', 'UAH', prices, 'https://images11.popmeh.ru/cropped.jpg', 'phone_best', 0, 0, 1, 0, 1)`

![](/files/5576a8e965f0838b55147757d1a685e7c300717a)

### Пример с минимальным набором параметров

`prices = [["an amazing product", 20000]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'The best bot ever!',`` `<mark style="color:фиолетовый;">`'Потрясающий курс! Будь лучшим!'`</mark>`, 'UAH', prices)`

![](/files/7a31fbc1b35c03e20da15544159b8f602b4d31c2)

### Пример с клавиатурой&#x20;

`prices = [["product", 2000], ["NDS", 20.75], ["package", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Phone W-200', 'BEst Model on the Market', 'UAH', prices, 'https://helpix.ru/news/200405/181746/gf200_2.jpg', 'phone_best', 0, 0, 1, 1, 1, '', '{"inline_keyboard": [[{"text":"Pay", "pay":"True"}], [{"text":"One more button", "callback_data": "One more button"}]]}')`

![](/files/04f25cf320df78220df4c2719ae8db0357352305)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ru/integrations/payment/telegram.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
