Telegram приймає платежі таким чином, щоб сам месе

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

  1. - Відчиніть!@BotFatherв Telegram і введіть команду/mybots.

  2. Виберіть свого бота зі списку та перейдіть доНалаштування бота -> Платежі.

  3. Виберіть потрібного постачальника платіжних послуг (наприклад,LiqPay, Смугавід куліYuKassa) зі списку. Для розробки виберіть варіант з позначкоюTestНаприклад,Тест на смугу) для тестування оплати віртуальними картками.

  4. Ви будете перенаправлені на бота обраної платіжної системи для авторизації (вам знадобиться обліковий запис/мерчант у цій системі).

  5. Після успішної прив 'язки@BotFatherдасть вамТокен постачальника(довгий рядок). Збережіть його у файлі конфігурації проекту. (.env).

Важливо:Якщо ви налаштовуєте оплату черезTelegram Stars, вам не потрібно отримувати токен постачальника. Замість маркера в коді передається порожній рядок"", а код вказується як валютаXTR.

Крок 2: Технічна реалізація в коді бота

З точки зору Telegram Bot API, весь процес оплати складається з трьох ключових етапів. Розглянемо архітектуру на прикладі логіки коду (в Python/aiogram або Node.js):

1. Виставлення рахунків (sendInvoice)

Коли користувач натискає кнопку «Купити», ваш бот повинен надіслати йому спеціальне повідомлення-фактуру, використовуючиsendInvoice.

& Python
# Приклад параметрів методу 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 секунд., або транзакцію буде скасовано.

  • Навіщо це потрібно?Тут ви перевіряєте базу даних, чи товар все ще є в наявності, чи ціна все ще актуальна.

& Python
# 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. На цьому етапі ви повинні надати користувачеві продукт або активувати передплату.

& Python
# Успішний процесор платежів
@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"), інакше бот може бути заблокований на мобільних платформах. Для фізичних товарів (доставка їжі, сувенірні товари) не соромтеся використовувати стандартний фіат.