МИНИ-КЕЙС: "ОПЛАТА В КРИТПЕ".
Хочешь заказать разработку бота?
Пиши в личку http://t.me/wowcharov обсудим проект.
Прием платежей из-за границы - это всегда головняк по нескольким причинам:
- Дополнительные комиссии за конвертацию, поэтому сумма платежа для клиента увеличивается.
- С момента начала СВО, пропала возможность принимать прямые переводы, так как ушли VISA и Mastercard, а эквайринги с иностранными картами работают через раз.
Самый простой и очевидный выход из ситуации - прием оплат в крипте. А именно в USDT, что по своей сути является аналогом доллара с курсом 1 к 1.
Задача стояла в том, чтобы этот процесс автоматизировать и не проверять каждую транзакцию "ручками".
Для крипты это достаточно легко делается, так как как у каждой транзакции есть свой хэш.
Хэш транзакций (txid) - уникальный идентификатор, используемый для определения конкретной транзакции в блокчейне.
Выглядит он так: 95294ed77aa7b171be8503a94134337471b34e2ff9492a8237ee336cc4649605
С помощью этого идентификатора мы можем узнать:
- Сумму платежа.
- Кошелек, с которого была отправлена транзакция.
- Кошелек, на которой пришла транзакция.
- Статус транзакции.
Зная эти данные, мы можем проверить действительно ли на наш кошелек поступил платеж в нужном размере.
Как это было реализовано:
При переходе на оплату в критпе, пользователь получает вот такое сообщение:
Кошелек написан специальным форматированием, которое позволяет просто нажать на него (не важно с компа или с телефона) и он скопируется. Это позволяет исключить ситуацию, когда пользователь некорректно скопировал адрес.
Получив кошелек, пользователь идет на биржу или в кошелек и переводит нам обозначенную сумму. После этого копирует хэш транзакции и жмем кнопку "Оплатил".
После оплаты, бот попросит пользователя прислать хэш. И после этого начнется его проверка.
Есть всего 4 способа, как покупатель может попробовать нас кинуть:
- Отправить несуществующий хэш (девиз таких покупателей "Слабоумие и отвага)
- Отправить хэш, который уже отправлял нам другой человек (тут кошелек назначения и сумма перевода будут соответствовать тем, что мы задали)
- Отправить перевод меньшей суммы и отправить нам хэш этой транзакции
- Отправить нам хэш транзакции с нужной суммой, но этот перевод был осуществлен на другой кошелек (не наш)
Давай разберем, как бот будет реагировать на каждую из этих ситуаций:
Тут важно понимать, что если бот не смог найти хэш, не обязательно, что пользователь хочет нас кинуть.
Хэш может отсутствовать банально потому что транзакция еще не была подтверждена сетью. Обычно это занимает до 5 минут и хэш появляется в реестре.
На этот случай, мы не говорим сразу пользователю что он козел вонючий маленький врунишка, а просто даем ему кнопку, чтобы в случае, если он действительно оплатил, через 5 минут его платеж был корректно проверен.
Но если же это был мамкин скаммер, мы тактично даем ему возможность все таки оплатить и прислать хэш заново нажав на кнопку "Ввести другой хэш".
Все имеют право на ошибку, тем более человек мог просто некорректно скопировать хэш)
2. Отправить хэша, который уже отправлял нам другой человек.
В этом случае, хэш по всем параметрам будет валидным. Потому что и сумма платежа совпадает и кошелек назначения наш.
И самое печальное, что любой человек, который немного шарит в крипте, знает, что можно пробить все транзакции, которые проходили по кошельку. То есть, тем самым достать хэш такой валидной транзакции.
На этот случай мы просто создаем эксель таблицу, которая будет нашей базой данных. После каждой успешной транзакции мы складываем туда валидный хэш, который прислал нам оплативший пользователь.
И если вдруг наш дорогой крипто-гик попытается нас скамануть таким образом, он просто получит следующее сообщение:
3. Перевод средств меньше стоимости продукта.
Тут у нас и транзакция получит статус "подтверждена" и кошелек, на который перевели деньги, будет корректный - наш. Единственное, что будет выдавать такую транзакцию - объем переводимого актива.
Если пользователь скинут нам такой хэш, то бот просто посчитает сколько он не докинул и попросит перевести остаток:
Также, бот сразу запишет хэш в нашу базу данных, что не даст пользователю возможности накидать пусть и своих, но повторных хэшей, чтобы "набить" нужную сумму:
После того, как пользователь доплатит сумму, мы запишем и следующий хэш, после чего отметим оплату как произведенную.
4. Перевод средств на чужой кошелек.
Если пользователь попробует нам скинуть хэш транзакции с нужной суммой перевода, но переведенной не на наш кошелек - бот это заметит и отправит пользователю следующее сообщение:
Таким образом, у меня получилось создать функционал приема оплат в крипте и обезопаситься от всех возможных способов кинуть меня на оплату.
❗️ Ты можешь добавить это функционал к себе в бота самостоятельно с помощью шаблона.
Шаблон разворачивается за 5 минут, мы также даем подробную инструкцию по установке - купить можно в боте, ссылке:
Функционал сделан на платформе Salebot: https://salebot.pro/
При создании проекта, вводи промокод: BOSSNIKITOS - он даст тебе 10 дней максимального тарифа бесплатно.