Telegram
Платежная система встроена в Телеграм. Для того чтобы совершат ь платежи внутри мессенджера, нужно:
- подключить платежную систему к боту в боте Botfather
- перейти в настройки нужного бота и в меню выбрать Payments
- следуя инструкциям подключить доступную платежную систему и скопировать выданный токен

Для отправки инвойса в телеграм используйте метод
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_token - токен полученный в Botfather, после подключения платежной системы
platform_id - идентификатор получателя - пользователя, группы или канала
title - заголовок товара, 1-32 символа
description - описание товара, 1-255 символов
currency - валюта платежа (RUB, USD, UAH и тд подробнее https://core.telegram.org/bots/payments#supported-currencies )
payload - первая часть колбека об оплате, по умолчанию tg_payment
prices - разбивка цен (описание ниже)
photo_url - ссылка на картинку товара
disable_notification - 1 - отправить с уведомлением, 0 - без уведомления
protect_content - 1 защитить от копирования и скриншотов, 0 - без защиты
need_name - 1, если вам требуется полное имя пользователя для завершения заказа, 0 - без запроса имени
need_phone_number - 1, если вам требуется номер телефона пользователя для завершения заказа, 0 - без запроса номера
need_email - 1, если вам требуется емейл пользователя для завершения заказа, 0 - без запроса почты
reply_to_message_id - ид сообщения, на которое отвечаем, '' - не ответ
reply_markup - клавиатура, первой кнопкой должна быть кнопка с типом pay
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Если указан один из параметров need_name, need_phone_number или need_email, то перед оплатой у пользователя запросит эти данные и при успешной оплате сохранит их в переменные клиента. На скриншоте ниже запрос на ввод всех данных:
prices - массив массивов с данными по стоимости товара и дополнительных услуг (доставки, упаковки и тд). Отображается на странице оплаты.
Сумма указывается либо целым числом 125, либо дробным через точку 120.25 Например: [["товар", 2000], ["НДС", 20.75], ["упаковка", 100]]
После успешной оплаты в чат с пользователем придет колбек следующего содержания:
phone_best 473737685 2120.75 UAH 1955518436
где phone_best - payload - из запроса на создание инвойса 473737685 - ид чата, в который изначально был отправлен инвойс 2120.75 - полная сумма платежа UAH - валюта 1955518436 - ид платежа в системе мерчанта
А так же, если запрашивали ввод имени, телефона и/или емейла, то у клиента пропишутся переменные:
tg_payment_name, tg_payment_phone и tg_payment_email
В случае успеха, колбек об оплате будет отправлен в личные сообщения пользователю.
Для этого обязательно взаимодействие клиента и бота до платежа (клиент должен быть подписан на бота)!
После получения хука об оплате, платеж будет автоматически подтвержден, методом answerPreCheckoutQuery https://core.telegram.org/bots/api#answerprecheckoutquery
prices = [["товар", 2000], ["НДС", 20.75], ["упаковка", 100]]
result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Телефон У-200', 'Лучшая модель на рынке', 'UAH', prices, 'https://images11.popmeh.ru/cropped.jpg', 'phone_best', 0, 0, 1, 0, 1)
После выполнения функции, пользователю отправится приглашение оплатить товар:
prices = [["курс супер", 20000]]
result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Курс - лучший бот', 'Супер курс, станешь мастером!', 'UAH', prices)
prices = [["товар", 2000], ["НДС", 20.75], ["упаковка", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Телефон У-200', 'Лучшая модель на рынке', 'UAH', prices, 'https://helpix.ru/news/200405/181746/gf200_2.jpg', 'phone_best', 0, 0, 1, 1, 1, '', '{"inline_keyboard": [[{"text":"Оплатить", "pay":"True"}], [{"text":"Еще кнопка", "callback_data": "Еще кнопка"}]]}')
Last modified 4mo ago