Telegram

Як підключити платіжну систему

Платіжна система вбудована в Telegram.

Щоб здійснювати платежі всередині месенджера, вам потрібно:

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

  • перейти в налаштування потрібного бота та в меню вибрати Payments

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

Як виставити рахунок клієнту

Щоб надіслати рахунок у Telegram, використовуйте метод

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) - необхідні параметри виділено жирним шрифтом

provider_token - токен, отриманий у BotFather після підключення платіжної системи

platform_id - одержувач - ідентифікатор користувача, групи або каналу

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

description - опис товару, 1-255 символів

currency - валюта платежу (RUB, USD, UAH тощо https://core.telegram.org/bots/payments#supported-currenciesarrow-up-right)

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

Якщо вказано один із параметрів need_name, need_phone_number або need_email, користувач запитає дані перед оплатою і збереже їх у змінні клієнта, якщо платіж буде успішним. На скріншоті нижче показано запит усіх даних для введення:

prices - масив масивів із даними про вартість товарів і додаткових послуг (доставка, пакування тощо). Відображається на сторінці оплати. Сума має бути вказана або цілим числом 125, або дробом через крапку 120.25. Наприклад: [["goods", 2000], ["VAT", 20.75], ["packaging", 100]

Callback на оплату

Після успішної оплати в чаті з користувачем прийде callback, як показано нижче:

phone_best 4737685 2120.75 UAH 1955518436

де phone_best - payload - з запиту на створення рахунку 473737685 - id чату, куди спочатку було надіслано рахунок 2120.75 - повна сума платежу UAH - валюта 1955518436 - id платежу в системі продавця

Також, якщо ви запросили ім’я, телефон та/або email, клієнт запише змінні:

tg_payment_name, tg_payment_phone та tg_payment_email

circle-info

У разі успіху callback буде надіслано в особисті повідомлення користувача. Для цього клієнт і бот повинні взаємодіяти до оплати (клієнт має бути підписаний на бота)!

circle-info

Після отримання hook про оплату платіж буде автоматично підтверджено через answerPreCheckoutQuery https://core.telegram.org/bots/api#answerprecheckoutqueryarrow-up-right .

Приклади

prices = [["product", 2000], ["NDS", 20.75], ["package", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'phoneW-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 = [["product", 2000], ["NDS", 20.75], ["package", 100]] result = tg_send_invoice('632593626:TEST:sandbox_i38014109763', platform_id, 'Phone W-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 updated