Оплата Telegram

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

Платежная система встроена в Телеграм. Для того чтобы совершать платежи внутри мессенджера, нужно:

  • подключить платежную систему к боту в боте Botfather

  • перейти в настройки нужного бота и в меню выбрать Payments

  • следуя инструкциям, подключить доступную платежную систему и скопировать выданный токен

Как выставить счет клиенту (invoice)

Для отправки инвойса в Telegram используйте метод и укажите необходимые параметры.

tg_send_invoice(provider_token, platform_id, title, description, currency, prices, photo_url, payload, protect_content, disable_notification, need_name, need_phone_number, need_email, reply_to_message_id, reply_markup, message_thread_id, provider_data)

Параметры функции
Описание параметра

! provider_token

(обязательный параметр) токен, полученный в Botfather после подключения платежной системы

! platform_id

(обязательный параметр) идентификатор получателя - пользователя, группы или канала

! title

(обязательный параметр) заголовок товара, 1-32 символа

! description

(обязательный параметр) описание товара, 1-255 символов

! currency

(обязательный параметр) валюта платежа (RUB, USD, UAH и тд подробнее https://core.telegram.org/bots/payments#supported-currencies )

prices

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

photo_url

ссылка на картинку товара

payload

первая часть коллбэка об оплате, по умолчанию tg_payment

protect_content

1 защитить от копирования и скриншотов, 0 - без защиты

disable_notification

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

need_name

1, если вам требуется полное имя пользователя для завершения заказа, 0 - без запроса имени

need_phone_number

1, если вам требуется номер телефона пользователя для завершения заказа, 0 - без запроса номера

need_email

1, если вам требуется емейл пользователя для завершения заказа, 0 - без запроса почты

reply_to_message_id

id сообщения, на которое отвечаем, если хотите отправить инвойс отдельным сообщение, то поставьте две одинарные кавычки

reply_markup

клавиатура, первой кнопкой должна быть кнопка с типом pay

message_thread_id

идентификатор темы (доступно для супергрупп при наличии функционала форума)

provider_data

данные о счете в формате JSON, которые будут переданы поставщику платежных услуг. Платежная система должна предоставить подробное описание обязательных полей.

Пример:

Настройка блока "Стартовое условие"

В результате в Телеграм чате выставится счет:

Если указан один из параметров need_name, need_phone_number или need_email, то перед оплатой у пользователя будут запрошены эти данные и при успешной оплате они сохранятся в переменные клиента.

Пример:

Результат: перед оплатой запрашиваются данные:

Коллбэк об оплате

После успешной оплаты в чат с пользователем придет коллбэк следующего содержания:

course_pay 1372995196 120.75 RUB 2ff747b9-000f-5000-b000-16d7e3517aa9 , где

  1. course_pay - payload - из запроса на создание инвойса;

  2. 1372995196 - ID чата, в который изначально был отправлен инвойс;

  3. 120.75 - полная сумма платежа;

  4. RUB - валюта;

  5. 2ff747b9-000f-5000-b000-16d7e3517aa9 - ID платежа в системе мерчанта.

А также если запрашивали ввод имени, телефона и/или email, то у клиента пропишутся переменные:

tg_payment_name, tg_payment_phone и tg_payment_email

В случае успеха коллбэк об оплате будет отправлен в личные сообщения пользователю. Для этого обязательно взаимодействие клиента и бота до платежа (клиент должен быть подписан на бота)!

После получения хука об оплате, платеж будет автоматически подтвержден, методом answerPreCheckoutQuery https://core.telegram.org/bots/api#answerprecheckoutquery

Закрепленное сообщение с кнопкой оплаты

После подключения платежной системы необходимо воспользоваться функцией закрепления сообщений - tg_pin_chat_message(platform_id, message_id, disable_notification)

Параметры функции
Описание

! platform_id

идентификатор чата внутри Telegram *

message_id

идентификатор сообщения, которое нужно закрепить

disable_notification

параметр определяет нужно ли отправлять уведомление всем участникам чата о новом закрепленном сообщении (уведомления всегда отключены в каналах и приватных чатах).

Если не нужно отправлять уведомления, то в качестве значения параметра disable_notification передайте 1, иначе - 0.

Пример:

1 шаг: prices = [["курс", 100], ["НДС", 20.75]]

result=tg_send_invoice('381764678:TEST:129736', platform_id, 'Курс по курсам', 'Создавать курсы - легко', 'RUB', prices, 'https://salebot.pro/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Оплатить", "pay":"True"}]]}')

2 шаг: В результате выполнения первого шага вы получите ответ, из которого требуется достать значение message_id при помощи функции get(): res=get(result,'result') m_id=get(res,'message_id')

Переменные сделки в разделе "Клиенты"

Далее закрепляем сообщение: tg_pin_chat_message(#{platform_id}, #{m_id}, 1)

Закрепленное сообщение в Telegram

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

prices = [["супер-курс", 100]]

result= tg_send_invoice('381764678:TEST:129736', platform_id, 'SuperКурс по курсам', 'Создавать курсы - superлегко', 'RUB', prices)

Пример с клавиатурой

prices = [["курс", 100], ["НДС", 20.75]]

tg_send_invoice('381764678:TEST:129736', platform_id, 'Курс по курсам', 'Создавать курсы - легко', 'RUB', prices, 'https://salebot.pro/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Оплатить", "pay":"True"}], [{"text":"Еще кнопка", "callback_data": "Еще кнопка"}]]}')

Last updated

Was this helpful?