18 января 2023 8969

Как создать бота для оплаты в Телеграме — инструкция по настройке приема платежей

Сейчас Телеграм — это не просто очередной мессенджер, где можно отправлять открытки дальним родственникам и тайно признаваться в любви. Глобальный рост позволил превратить эту экосистему в настоящую социальную сеть с группами, магазинами и тематическими/новостными каналами.

Настоящие акулы бизнеса никогда не упустят возможность органичного прироста трафика, из-за чего вскоре появилось огромное количество групп-магазинов, где по сей день продаются товары самой разной степени важности: от люксовых реплик из Турции до квартир в Абу-Даби.

Но ни одна торговая платформа не может существовать без возможности проведения оплаты — для этого можно воспользоваться специальным программным кодом, который вшивается в систему, либо полностью автоматизировать этот процесс благодаря встроенным функциям (получается более «топорно», но схема рабочая) — постараемся понять, что проще и быстрее.

Еще больше полезных инструкций и подборок, а также свежие кейсы по заработку в сети ищите в нашем Telegram.


Подготовка плацдарма

На сегодняшний день Телеграм позволяет подключить разные платежные решения для более чем 200 стран, включая наиболее известные: PayPal, Stripe, Sber, LiqPay, QIWI, PayMaster и тому подобные.

В основе дальнейших методов лежит создание бота — для этого необходимо получить токен у @BotFather, зарегистрировав название своей платежки и согласившись с условиями сотрудничества. Важно, чтобы имя робота заканчивалось на «bot» во избежание мошенничества.


Метод с программированием

Программирование — это идеальный способ знать все и вся о своем боте. Ни один конструктор в мире не даст возможности производить настолько доскональную настройку своих ботов, поэтому стоит начать с более подробного метода. В основе представленного кода лежит Python версии 3.11.1.

Связать бота с приложением

Первый шаг — подключить специализированную библиотеку, которая поможет создать бота из готовых кусков. Для Python — aiogram.

python -m pip install aiogram

Второй шаг — создать файлы для работы: config.py, где будет располагаться токен бота, выданный в прошлых шагах у @BotFather, при этом в main.py остается базовый код для работы.

import config

import logging

from aiogram import Bot, Dispatcher, executor, types

from aiogram.types.message import ContentType

# log Логи по запросам

logging.basicConfig(level=logging.INFO)

# init Инициализация бота

bot = Bot(token=config.TOKEN)

dp = Dispatcher(bot)

# echo bot Эхо-бот для теста

@dp.message_handler()

async def echo(message; types.Message):

    await message.answer (message.text)

# run long-polling Ожидание ответа

if __name__ == "main":

    executor.start_polling(dp, skip_updates=False)

Стоит понимать, что бот должен максимально качественно обрабатывать каждый запрос, который исходит от системы и пользователей. Поэтому обязательно нужно поставить значение «False» напротив поля «skip_updates». Можно производить предварительный тест.

Третий шаг — возвращение в @BotFather для получения платежного токена.

С помощью команды «/mybots» можно выбрать необходимый бот, а кнопка «Payments» открывает возможность выбора из сотен платежных шлюзов. Специально для сегодняшнего примера будет использован PayMaster, из-за чего выбирается «PayMaster Test».

Простые инструкции уже вшиты в бота, из-за чего достаточно быстро можно получить необходимый токен, который необходимо сохранить в config.py. По итогу файл должен выглядеть следующим образом:

«TOKEN = "5432877***:AAHEwBEb2mwnZX56oa****o33ZBZwVkvv-s"

PAYMENTS_TOKEN = "1744374***:TEST:f14d9f0d42528b7*****"»

Далее остается добавить небольшую часть заготовленного кода, которая будет генерировать, отправлять и возвращать платежное поручение с дальнейшей обработкой результата.


Подключение оплаты

Предварительно необходимо создать полный каталог товаров и стоимостей. При этом цена указывается как целочисленное значение, представленное в условных платежных единицах. То есть, для рублей — копейки, для долларов — центы. Если товар стоит 10 долларов, то его стоимость в боте будет равняться 10 * 100 = 1 000 центов, если 11,6 рублей, то 11,6 * 100 = 1 160 копеек. Другие валюты работают аналогичным образом  при подключении currencies.json от Telegram API.

Подобная практика позволяет максимально точно обрабатывать платежи со стороны банковских систем. Именно поэтому следующим шагом будет создана команда «/buy», позволяющая в тестовом варианте приобретать месячную подписку на тестовый продукт.

import config

import logging

from aiogram import Bot, Dispatcher, executor, types

from aiogram.types.message import ContentType

# log Логи по запросам

logging.basicConfig(level=logging.INFO)

# init Инициализация бота

bot = Bot(token=config.TOKEN)

dp = Dispatcher(bot)

# prices Цены, описание

PRICE = types.LabeledPrice(label="Подписка на 1 месяц", amount=500*100)  # в копейках (руб)

# buy Покупка

@dp.message_handler(commands=['buy'])

async def buy(message: types.Message):

    if config.PAYMENTS_TOKEN.split(':')[1] == 'TEST':

        await bot.send_message(message.chat.id, "!!!Тестовый платеж!!!")

    await bot.send_invoice(message.chat.id,

                           title="Подписка на бота",

                           description="Активация подписки на бота на 1 месяц",

                           provider_token=config.PAYMENTS_TOKEN,

                           currency="rub",

                           photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg",

                           photo_width=416,

                           photo_height=234,

                           photo_size=416,

                           is_flexible=False,

                           prices=[PRICE],

                           start_parameter="one-month-subscription",

                           payload="test-invoice-payload")

В процессе выполнения функции покупки создается invoice, который направляется сначала пользователю для подтверждения, а после по банковскому шлюзу для проведения оплаты. При этом большое количество обусловлено названием услуги, стоимостью, описанием, валютой, картинкой и тому подобным.


Настройки платежей

Стоит дополнительно обратить внимание на аргумент «is_flexible». Он может принимать значение «True» только в том случае, если дополнительно стоимость складывается из выбора метода доставки, например, если физический товар нужно переслать покупателю.

Самые высокие ставки по RU, BY, KZ от прямого рекламодателя FONBET PARTNERS! К заливам!

Дополнительно для работы необходимо изучить два типа обработчиков: Pre Checkout Query и Successful Payment.

Pre Checkout Query – оценка наличия товара на складе, готовности отправки (указывается отдельно и зависит от количества товара) еще перед тем, как пользователь произведет оплату. При этом, если Telegram не получит ответ за 10 секунд, то платеж автоматически отклонится.

Successful Payment – обработка платежа после успешной оплаты.

Оба обработчика вносятся как дополнительные куски кода:

# pre checkout  (must be answered in 10 seconds) Предварительная проверка

@dp.pre_checkout_query_handler(lambda query: True)

async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery):

    await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)

# successful payment Успешная покупка

@dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)

async def successful_payment(message: types.Message):

    print("SUCCESSFUL PAYMENT:")

    payment_info = message.successful_payment.to_python()

    for k, v in payment_info.items():

        print(f"{k} = {v}")

    await bot.send_message(message.chat.id,

                           f"Платеж на сумму {message.successful_payment.total_amount // 100} {message.successful_payment.currency} прошел успешно!!!")

# run long-polling Проверка запросов от системы

if __name__ == "__main__":

    executor.start_polling(dp, skip_updates=False)

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


Как бот работает на практике

Примерный алгоритм действия бота:

  1. Бот получает команду «/buy», предлагает весь каталог товаров.
  2. Пользователь выбирает понравившийся товар, нажимает на него.
  3. Бот получает invoice на оплату.
  4. Пользователь нажимает «Оплатить».
  5. Бот проверяет наличие товара и отменяет покупку, если его нет.
  6. Пользователь переходит на платежный шлюз и оплачивает покупку.
  7. Бот проверяет оплату по invoice и выдает товар при успешной оплате.

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

Лучший вариант развития — перейти на полноценный сервер, потому что для оплаты требуются невысокие параметры конфигурации, но вместе с дополнительными функциями и обилием запросов происходят неприятные задержки.


Настройка бота с Payments 2.0

Обновление системы оплаты серьезно упростило процесс подключения платежных систем — данный метод без программирования будет рассмотрен далее. Однако для взаимодействия необходимо произвести следующие действия:

  • Обновить Python до версии 3.10 минимум.
  • Установить PIP.
  • Поставить библиотеку Aiogram.

Однако, если пользователь-провайдер остановит SSH-соединение со стороны сервера, то весь процесс бота и доступ к полям закроется. Бот продолжит работу только в том, случае, если постоянно будет открыто окно логов с помощью команды screen -r $screen_running.


Подключение к платежной системе

Для подключения бота к платежной системе слишком больших затрат не нужно. Алгоритм Для ЮМани следующий:

  • Создать бота с помощью конструктора или вручную.
  • Подключить его к боту ЮKassa.
  • Настроить бота для приема платежей (потребуется наличие параметра shopid, которые пользователи получают после подключения).

Создание бота и получение токен стандартное: бот @BotFather получает запрос на новый юзернейм, регистрирует бота в системе и выдает пользователю индивидуальный набор цифр и букв, который нельзя никому показывать.


Настройка платежного шлюза

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

  • Отправить @BotFather команду «/mybots».
  • Выбрать созданного бота.
  • В открывшейся панели управления перейти по кнопкам «BotSettings» — «Payments».

Следующим шагом необходимо выбрать, что именно планируется принимать — настоящие платежи («Connect ЮKassa: платежи») или тестовые запросы («Connect ЮKassa: тест»). Для @BotFather этот выбор влияет только на тип платежного токена, который будет выдан пользователю.

Дальнейшие действия зависят от конструкторов, с помощью которых был создан бот. Как правило, создатели публикуют подробный гайд для подключения к их разработкам платежных решений, в некоторых случаях это является платной функцией.

Однозначно бесплатным является Telegram API — метод sendinvoice, добавленный после глобального обновления платежных потоков в системе. При этом автоматически формируется каталог с названиями, ценами на товары и услуги, а от владельца бота требуется указать только вышеназванный provider_token

При этом настроить функцию не так уж и сложно, если обладать минимальными знаниями в иностранных языках и обратиться к указанной ссылке:

Из особенностей: Телеграм будет автоматически подключать обработчик PreCheckoutQuery, у которого будет ровно 10 секунд на ответ системному запросу. В случае успешной оплаты мессенджер отправит содержимое обработчика SuccefulPayment, а ЮКасса отпишется на электронный ящик.


Эксперты отвечают
 

ЕЕвгений

Зачем нужна оплата в Телеге, когда можно просто организовать сайт?

Возможность принимать оплату через Telegram – отличная возможность ускорить воронку продаж для арбитражника: особенно, если вы работаете с белой товаркой или онлайн-образованием.

Вывод

Товарка и услуги еще никогда не были настолько простыми в оплате и передаче через социальные сети — больше не нужно создавать дополнительные лендинги, думать над сложной рекламной кампанией внутри целого Интернета, а весь органический трафик удобно пройдет через бот. При этом настройка не такая сложная, а время обработки занимает не более 30 секунд.

Уже создали бота с оплатой?
31 голос

 

Как вам статья?
ПОЛУЧИТЬ АКТУАЛЬНУЮ ПОДБОРКУ КЕЙСОВ

Прямо сейчас бесплатно отправим подборку обучающих кейсов с прибылью от 14 730 до 536 900 ₽.

Партнеркин рекомендует
Партнерки
1win Partners
Топовая беттинг и гемблинг партнерка
TRAFORCE
Дейтинговая СPA-сеть
Affiliate Top
Надежная партнерка по бинарным опционам
Сервисы
Dolphin{anty}
Лучший антидетект браузер
PARTNERKIN
20%
FlexСard
Виртуальные карты для арбитража трафика
PARTNERKIN
Карты free
AdPlexity
Мониторинг мобильной, десктоп и нативной рекламы
partnerkin_m
25%

Новейший Linken Sphere 2 бесплатно