Сейчас Телеграм — это не просто очередной мессенджер, где можно отправлять открытки дальним родственникам и тайно признаваться в любви. Глобальный рост позволил превратить эту экосистему в настоящую социальную сеть с группами, магазинами и тематическими/новостными каналами.
Настоящие акулы бизнеса никогда не упустят возможность органичного прироста трафика, из-за чего вскоре появилось огромное количество групп-магазинов, где по сей день продаются товары самой разной степени важности: от люксовых реплик из Турции до квартир в Абу-Даби.
Но ни одна торговая платформа не может существовать без возможности проведения оплаты — для этого можно воспользоваться специальным программным кодом, который вшивается в систему, либо полностью автоматизировать этот процесс благодаря встроенным функциям (получается более «топорно», но схема рабочая) — постараемся понять, что проще и быстрее.
Еще больше полезных инструкций и подборок, а также свежие кейсы по заработку в сети ищите в нашем 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» только в том случае, если дополнительно стоимость складывается из выбора метода доставки, например, если физический товар нужно переслать покупателю.
Дополнительно для работы необходимо изучить два типа обработчиков: 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)
Данный кусок кода отвечает напрямую за оформление заказов и выдачу необходимого цифрового содержимого (в тестовом плане — подписки) пользователю.
Примерный алгоритм действия бота:
После того, как алгоритм успешно продемонстрирует себя на тестовых шлюзах, необходимо перейти к настоящим токенам оплаты. В том случае, если планируется ввести большое количество тарифов и подключить максимум способов оплаты, рекомендуется запросить сразу несколько токенов.
Лучший вариант развития — перейти на полноценный сервер, потому что для оплаты требуются невысокие параметры конфигурации, но вместе с дополнительными функциями и обилием запросов происходят неприятные задержки.
Обновление системы оплаты серьезно упростило процесс подключения платежных систем — данный метод без программирования будет рассмотрен далее. Однако для взаимодействия необходимо произвести следующие действия:
Однако, если пользователь-провайдер остановит SSH-соединение со стороны сервера, то весь процесс бота и доступ к полям закроется. Бот продолжит работу только в том, случае, если постоянно будет открыто окно логов с помощью команды screen -r $screen_running.
Для подключения бота к платежной системе слишком больших затрат не нужно. Алгоритм Для ЮМани следующий:
Создание бота и получение токен стандартное: бот @BotFather получает запрос на новый юзернейм, регистрирует бота в системе и выдает пользователю индивидуальный набор цифр и букв, который нельзя никому показывать.
Особенность данного метода заключается в его максимальной простоты с точки зрения алгоритмизации, потому что следующие шаги — это:
Следующим шагом необходимо выбрать, что именно планируется принимать — настоящие платежи («Connect ЮKassa: платежи») или тестовые запросы («Connect ЮKassa: тест»). Для @BotFather этот выбор влияет только на тип платежного токена, который будет выдан пользователю.
Дальнейшие действия зависят от конструкторов, с помощью которых был создан бот. Как правило, создатели публикуют подробный гайд для подключения к их разработкам платежных решений, в некоторых случаях это является платной функцией.
Однозначно бесплатным является Telegram API — метод sendinvoice, добавленный после глобального обновления платежных потоков в системе. При этом автоматически формируется каталог с названиями, ценами на товары и услуги, а от владельца бота требуется указать только вышеназванный provider_token
При этом настроить функцию не так уж и сложно, если обладать минимальными знаниями в иностранных языках и обратиться к указанной ссылке:
Из особенностей: Телеграм будет автоматически подключать обработчик PreCheckoutQuery, у которого будет ровно 10 секунд на ответ системному запросу. В случае успешной оплаты мессенджер отправит содержимое обработчика SuccefulPayment, а ЮКасса отпишется на электронный ящик.
Зачем нужна оплата в Телеге, когда можно просто организовать сайт?
Возможность принимать оплату через Telegram – отличная возможность ускорить воронку продаж для арбитражника: особенно, если вы работаете с белой товаркой или онлайн-образованием.
Вывод
Товарка и услуги еще никогда не были настолько простыми в оплате и передаче через социальные сети — больше не нужно создавать дополнительные лендинги, думать над сложной рекламной кампанией внутри целого Интернета, а весь органический трафик удобно пройдет через бот. При этом настройка не такая сложная, а время обработки занимает не более 30 секунд.