Telegram приймає платежі таким чином, щоб сам месенджер не зберігав гроші і не стягував комісію за транзакцію. Він діє як безпечний інтерфейс між вашим ботом, покупцем і платіжним шлюзом.
Нижче наведено докладні відомості про те, які типи платежів доступні та як технічно запустити платіж.
1. Які платежі можна приймати?
Всі платежі в Telegram поділяються на дві основні категорії:фіат (звичайні гроші)інаціональна валюта (Telegram Stars).
Фіатні гроші та постачальники платежів
Ви можете продавати фізичні товари, підписки або цифровий контент за рублі, гривні, долари, євро та інші валюти. Telegram інтегрований з багатьма міжнародними та місцевими провайдерами:
-
ГлобальнийСмуга, ECOMMPAY.
-
Україна:LiqPay, Portmone, Tranzzo.
-
Казахстан / СНД:Smartglocal.
-
УзбекистанPayme, натисніть.
-
Криптовалюта:Криптомус.
При оплаті за допомогою фіату користувачі «з коробки» працюютьApple PayіGoogle Payякщо вони підтримуються вибраним постачальником еквайрингу.
Telegram Stars
Це внутрішня цифрова валюта Telegram.
-
Для чого він потрібенЗгідно з правилами Apple і Google, придбання будь-якогоцифрові товари(електронні книги, курси, доступ до закритих каналів, підписки в ботах та міні-додатки Telegram) всередині додатків на iOS та Android повинні проходити через їхні платіжні системи. Telegram Stars були створені саме для цього.
-
Як це працюєКористувач купує «Зірки» всередині Telegram через App Store/Google Play, а потім проводить їх у вашому боті. Ви, як розробник, можете вивести ці зірки, щоб тонувати криптовалюту через платформу Fragment, або використовувати їх для оплати реклами.
2. Як налаштувати оплату (покроковий алгоритм)
Процес полягає в налаштуванні зв 'язку з платіжною системою в спеціальному боті від Telegram і написанні коду для обробки транзакцій.
Крок 1. Отримайте маркер постачальника від @BotFather
-
- Відчиніть!@BotFatherв Telegram і введіть команду
/mybots. -
Виберіть свого бота зі списку та перейдіть доНалаштування бота -> Платежі.
-
Виберіть потрібного постачальника платіжних послуг (наприклад,LiqPay, Смугавід куліYuKassa) зі списку. Для розробки виберіть варіант з позначкоюTestНаприклад,Тест на смугу) для тестування оплати віртуальними картками.
-
Ви будете перенаправлені на бота обраної платіжної системи для авторизації (вам знадобиться обліковий запис/мерчант у цій системі).
-
Після успішної прив 'язки
@BotFatherдасть вамТокен постачальника(довгий рядок). Збережіть його у файлі конфігурації проекту. (.env).
Важливо:Якщо ви налаштовуєте оплату черезTelegram Stars, вам не потрібно отримувати токен постачальника. Замість маркера в коді передається порожній рядок
"", а код вказується як валютаXTR.
Крок 2: Технічна реалізація в коді бота
З точки зору Telegram Bot API, весь процес оплати складається з трьох ключових етапів. Розглянемо архітектуру на прикладі логіки коду (в Python/aiogram або Node.js):
1. Виставлення рахунків (sendInvoice)
Коли користувач натискає кнопку «Купити», ваш бот повинен надіслати йому спеціальне повідомлення-фактуру, використовуючиsendInvoice.
# Приклад параметрів методу sendInvoice (стиль Python)
чекатиbot.send_invoice(
chat_id=message.chat.idTitle"Преміальна місячна підписка"Description«Доступ до закритого B2B функціоналу бота»,
payload="user_id_12345_package_premium", # Ваша внутрішня мітка для перевіркиprovider_token="YOUR_TOKEN_OF_BOTFATHER", # Для зірок залиште порожній рядок ""currencyUAH, # Або "XTR" для Telegram Starsprices=[
LabeledPrice(етикетка=ПередплатаAmount25000) # Сума в мінімальних одиницях (25 000 коп. = 250 грн.)
]
)
2. Перевірка наявності товару (вул.PreCheckoutQuery)
Як тільки користувач вводить реквізити картки і натискає кнопку «Оплатити», Telegram надсилає вашому боту запитPreCheckoutQuery.
-
Обмеження часу:Ваш сервер повинен відповісти на цей запит протягом10 секунд., або транзакцію буде скасовано.
-
Навіщо це потрібно?Тут ви перевіряєте базу даних, чи товар все ще є в наявності, чи ціна все ще актуальна.
# pre_checkout_query обробник
@dp.pre_checkout_query_handler(лямбдаqueryTRUE ())
асинхронно DEF. process_pre_checkout_query;(pre_checkout_query: PreCheckoutQuery):
# Перевірте залишки в базі, якщо все гаразд:
чекатиbot.answer_pre_checkout_query(pre_checkout_query.idOKTRUE ())
# Якщо товару немає: ok=False, error_message="Товар вийшов"
3. Успішна оплата (SuccessfulPayment)
Якщо провайдер успішно списав гроші, бот отримує остаточне оновлення з типом контентуsuccessful_payment. На цьому етапі ви повинні надати користувачеві продукт або активувати передплату.
# Успішний процесор платежів
@dp.message_handler(content_types=ContentTypes.SUCCESSFUL_PAYMENT)
асинхронно DEF. success_payment(message: Повідомлення):payload = message.successful_payment.invoice_payload# Оплата завершена! Нарахування балансу / надання доступу до приватного каналу
чекатиmessage.answer("Дякуємо за оплату! Ваш доступ активовано.")
Контрольний список перед запуском у виробництво
-
[ ] Всебічна перевіркаСпочатку обов 'язково пов' яжіть тестовий токен постачальника з
@BotFatherі проводити весь платіжний цикл за допомогою тестових карток (їх номери надаються самим платіжним шлюзом у його документації). -
[ ] Фіатні обмеження:Переконайтеся, що ваш юридичний статус (фізична особа-підприємець/фізична особа-підприємець або юридична особа) дозволяє підключити обраний шлюз.
-
[ ] Правило App Store/Google Play:Якщо ви продаєте файли, інформаційні продукти або підписки всередині бота, робіть це через Telegram Stars. (
currency="XTR"), інакше бот може бути заблокований на мобільних платформах. Для фізичних товарів (доставка їжі, сувенірні товари) не соромтеся використовувати стандартний фіат.