Как мы автоматизировали платежи в Трибьют без API

Ассистент принимает, проверяет и подтверждает заказ
Ассистент принимает, проверяет и подтверждает заказ

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

И все было бы просто, если бы не одна проблема - у сервиса нет API оплаты цифровых товаров - только уведомления о новом заказе.

Как это работает в ручном режиме

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

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

🆕 Custom Product Order

To complete this order, press and hold this message (on desktop, right-click) and select "Reply." In the reply message, send the digital product.

Customer: Имя пользователя

Product: 1 алмаз

Price: €5.00

Order Details:

ID пользователя

Далее мы вручную:

  • Производим добавление алмазов к аккаунту пользователя.
  • Отвечаем на сообщение выше «Заказ выполнен, спасибо!» - это сообщение Трибьют также отправляет пользователю.
  • В ответ бот присылает кнопку «Отправить», после нажатия которой завершенный заказ отправляется на модерацию Трибьюта.

Учитывая, что наш средний заказ - 10 евро, то для поддержки работы платежной системы данным способом нам понадобился бы менеджер, который бы обрабатывал заказы 24/7.

Автоматизация Python +Telethon

Чтобы решить эту проблему, мы создали ассистента, который выполняет рутину за нас. Простейший способ - Python с библиотекой Telethon - это единственная на данный момент официальная библиотека для создания Телеграм-агента.

Workflow ассистента
Workflow ассистента

Как работает оплата после создания ассистента

Пользователь кликает по ссылке и переходит в Телеграм для оплаты заказа. В этот момент на сервере создается заказ с метаданными пользователя.

Трибьют отправляет нам сообщение о новом оплаченном заказе. Ассистент получает сообщение и проверяет, есть ли в поле “Назначение платежа” номер аккаунта пользователя.

1. Проверка заказа

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

Если назначение платежа в порядке, то ассистент отправляет запрос на сервер для подключения услуги. Сервер проверяет, есть ли указанный в запросе заказ с соответствующим ID пользователя. Если нет - возвращает ошибку. Ассистент получает ошибку и отправляет модератору оповещение о проблеме.

2. Активация услуги

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

3. Оповещение Tribute о завершении заказа

Ассистент отвечает на сообщение Трибьюта, указывая в сообщении:

- Название предоставленного продукта

- Номер платежа, чтобы в случае проблемы быстро найти транзакцию и проверить логи.

Далее Трибьют просит подтвердить отправку, и ассистент нажимает кнопку “Отправить”. Обработка заказа завершена.

Ограничения сервиса

Автоматизация не является стопроцентной, и требует регулярного участия с нашей стороны. Основная проблема автоматической обработки - отсутствие ID пользователя сайта в деталях заказа. Автоматически заполнять это поле Трибьют, увы, не умеет. Однако, количество таких случаев не превышает 5%.

Где хостить ассистента

Если ваш бэкэнд не поддерживает Python, то можно купить простой хостинг за 5-10 евро в месяц, например, PythonAnywhere.

Как вариант - использовать в роли сервера телефон на Андроид, запустив Python при помощи любого SSH клиента, например, Termius. Рекомендуем использовать старый ненужный телефон, т.к. активный фоновый процесс увеличит нагрузку на батарею.

Защита данных

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

Данные, отправляемые на сервер ассистентом, должны содержать контрольную сумму, чтобы исключить неавторизованное использование сервиса. Также, вы можете ограничить доступ IP-адресом вашего пайтон-хостинга, если у него статичный адрес.

Возможные улучшения

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

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

Используете ли вы автоматизацию оплат через Трибьют? Какие подходы используете? Будем благодарны за рекомендации по улучшению представленного решения.

Начать дискуссию