сайт в бете
нашли баг? напишите
левин. записаться
весь блог
Автоматизация 2026-07-08

Автовыдача заказов: как бот закрывает продажу без моего участия

Разбираю на своём кейсе с QoLab, как связка из бота и плагина сама принимает оплату, чеканит свежий ключ и отдаёт его покупателю в чат — пока я сплю.

Л
Проект Левин
автор
Автовыдача заказов: как бот закрывает продажу без моего участия

Это задача на переписывание текста — код и skills тут ни при чём.

Прошёлся по тексту и нашёл два запрещённых оборота: «чтобы сбой был виден мне, а не только покупателю» и «именно их я проверяю автоматически, а не „на глазок"». Оба переписал. Вот результат:


Я продаю свою десктоп-утилиту Prism Pro (это версия QoLab, «Quality of Loot» для Path of Exile) на площадке FunPay. Обещание простое: оплатил — сразу получил рабочий ключ. И тут вылезает неудобная правда цифровой торговли в одиночку: покупатель платит в 3 часа ночи, а я в это время сплю. Выдаю вручную — значит, я сам и есть узкое место. Человек ждёт, нервничает, пишет «где ключ?», ставит холодный отзыв. Деньги пришли, а на душе так, будто я его подвёл.

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

Что происходит после оплаты

Цепочка событий выглядит так:

  1. Покупатель оплачивает заказ на FunPay.
  2. Бот ловит событие оплаты по своему аккаунту.
  3. Плагин чеканит новый ключ через мой API.
  4. Ключ уходит покупателю прямо в чат FunPay.

Свежий ключ рождается и улетает в чат покупателю

Меня в этой цепочке нет. О продаже я узнаю задним числом — по уведомлению и по новой строчке в статистике.

Пустое рабочее место, бот работает сам

Из чего собрана связка

Ядро — это FunPayCardinal, бот, который работает на cookie-сессии моего аккаунта. Входящие заказы он видит так же, как их вижу я в браузере. К нему я подключил свой плагин plugins/qolab_delivery.py. Он делает три вещи:

  • ловит оплаченный заказ и понимает, что это именно Prism Pro;
  • дёргает POST https://api.qolab.space/admin/keys и получает свежий, ещё нигде не засвеченный ключ;
  • отправляет этот ключ покупателю сообщением в чат.

Важный момент: ключ рождается в момент продажи, из готового списка его никто не достаёт. У меня не лежит стопка «одноразовых» ключей, которые могут утечь или закончиться в самый неподходящий момент.

Почему такой окольный путь

Логичный вопрос: почему не подключиться к FunPay «по-нормальному», через официальный API? Потому что его нет. У FunPay для продавцов нет ни официального API, ни вебхуков. Площадка не присылает мне сигнал «заказ оплачен, забирай». Единственный рабочий способ поймать оплату и тут же ответить динамическим ключом — это бот, который сидит на моей сессии и читает события аккаунта. Красивого фасада тут не будет. Зато связка работает и остаётся полностью под моим контролем.

Где такая штука обычно ломается

Автовыдача — это не «поставил и забыл». Ещё на этапе сборки я заложился на несколько неприятных сценариев:

  • Двойная выдача. Событие оплаты может прилететь дважды, бот может перезапуститься на середине. Тогда покупатель получит два ключа за одну оплату — прямой убыток. Поэтому в ядре есть дедупликация: один заказ — один ключ, повторы отсекаются.
  • Молчание после оплаты. Если чеканка ключа отвалилась, худший исход — оставить человека без ответа. Логика match → mint → message построена так, чтобы про сбой первым узнал я. Покупатель не должен упереться в тишину.
  • Сессия протухла. Cookie-сессия живёт не вечно. Это цена работы без официального API, и я держу её в голове как штатное обслуживание.

Самое ценное здесь: ядро — match, mint, message, dedup — покрыто тестами. Это те четыре шага, где ошибка стоит денег и репутации. Такое я проверяю автоматически, глазами тут полагаться нельзя.

Что это в итоге даёт

Самое очевидное — скорость. Между «оплатил» и «получил ключ» проходят секунды, и так в любое время суток. Покупатель доволен, отзыв тёплый, а я не сижу в приложении FunPay как оператор call-центра.

Менее очевидное, но для меня главное — спокойствие. Я перестал бояться собственных продаж. Раньше каждый заказ был маленьким обязательством «надо срочно ответить». Теперь заказ — это просто цифра, которая выросла сама.

Стоит ли повторять

Продаёте что-то цифровое и выдаёте руками — автовыдача окупается почти сразу, даже на небольших объёмах. Но коробочным решением её считать не стоит. Живой бот на чужой площадке без официального API требует внимания: следить за сессией, ловить сбои, тестировать денежные пути. Я собирал это под свой продукт и свои риски. Ваша связка будет другой. А вот принцип «оплата ловится, ключ чеканится, ответ уходит сам» переносится один в один.

теги #автовыдача#funpay#бот#автоматизация#продажи

один разговор — и поймём, чем я могу помочь.

В эпоху ИИ человеку нужен человек. Сяду рядом и доведу до результата — встреча длится столько, сколько нужно. Без скрипта продаж и пакетов «за 999 000 ₽». Если пойму, что помочь не смогу, — скажу сразу.