Приём платежей в игре: как встроить оплату в Unity и Unreal Engine

Если вы делаете игру и планируете зарабатывать — вам нужно принимать платежи. Не через костыли и самописные формы, а через нормальные платёжные SDK, которые уже встроены в магазины или работавшие годами агрегаторы. Разберёмся, какие есть варианты для Unity и Unreal Engine, как их подключить и на что обратить внимание, чтобы не переделывать всё через месяц.

Какие бывают платёжные сценарии в играх

Прежде чем выбирать SDK, определитесь, как именно вы хотите принимать деньги. От этого зависит выбор инструмента.

  • Покупка внутриигровых предметов — кристаллы, скины, бустеры. Это основной сценарий для мобильных и free-to-play игр.
  • Продажа самой игры — разовая покупка в Steam, Epic Games Store, App Store, Google Play.
  • Подписка — ежемесячный доступ к контенту, как в MMO или сервисах вроде Xbox Game Pass.
  • Пожертвования и донат — для инди-проектов и серверов, где игроки платят напрямую разработчику.

Для мобильных игр основной путь — встроенные SDK магазинов (Google Play, App Store) или агрегаторы вроде Qiwi, ЮKassa, Robokassa, если вы работаете на рынке РФ и СНГ. Для десктопных и консольных игр — платформы вроде Steam, Epic, Xbox Live.

Платёжные SDK для Unity

Unity — самый популярный движок для инди и мобильных игр, поэтому вариантов интеграции много. Вот основные из них.

Unity IAP (In-App Purchases)

Это официальное решение от Unity. Покупаете пакет в Package Manager, подключаете — и получаете единый API для App Store, Google Play, Amazon, Samsung Galaxy Store и других магазинов.

Плюсы:

  • Один код для нескольких магазинов — не пишете отдельную логику для каждого.
  • Бесплатный пакет, хорошо документирован.
  • Поддерживает -consumable (расходуемые), non-consumable (одноразовые) и подписки.

Минусы:

  • Не работает с российскими агрегаторами — только с магазинами устройств.
  • На десктопе через Steam или сайт не заработает — нужны дополнительные решения.
  • В бесплатной версии Unity есть ограничения на использование в коммерческих проектах до определённого порога дохода.

Подключение простое: открываете Package Manager, находите Unity IAP, устанавливаете. Затем настраиваете продукты в коде через PurchaseModule.Instance() и обрабатываете результат через IPurchaseHandler. В документации Unity есть рабочие примеры, которые можно скопировать и адаптировать.

App Store Kit (iOS) и Google Play Billing (Android)

Если вам нужен полный контроль или вы работаете с кастомными магазинами, можно подключить нативные SDK напрямую. Для iOS это StoreKit 2, для Android — Google Play Billing Library версии 5+.

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

Агрегаторы для российского рынка

Если ваша аудитория в России и СНГ, вам нужны способы оплаты, которые работают здесь: карты Мир, СБП, электронные кошельки. Вот что можно использовать:

  • ЮKassa — есть SDK для Unity, поддерживает карты, электронные кошельки, СБП. Хорошая документация на русском.
  • Robokassa — давно на рынке, есть плагин для Unity, но документация иногда устаревает.
  • Qiwi — работает, но лучше проверять актуальность плагинов, так как некоторые решения уже не поддерживаются.
  • CloudPayments — удобны для разовых платежей и подписок, есть REST API, который можно вызывать через UnityWebRequest.

Важно: при работе с агрегаторами вы сами отвечаете за безопасность. Проверяйте подписи уведомлений (webhook), храните секретные ключи на сервере, не в клиенте. Если кто-то докопается до ключа в билде — будут фейковые покупки.

Платёжные SDK для Unreal Engine

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

Online Subsystem и встроенные магазины

В Unreal Engine есть модуль Online Subsystem, который даёт абстракцию для разных платформ: Steam, Epic Games, Xbox Live, PlayStation Network. Для покупок внутри игры можно использовать его расширения.

Например, для Steam подключаете модуль OnlineSubsystemSteam и вызываете функции покупки через IOnlinePurchasePtr. Для Epic — OnlineSubsystemEOS с соответствующими методами.

Плюс — всё уже встроено в движок, не нужно тащить сторонние плагины. Минус — если нужны кастомные способы оплаты (карты, СБП), придётся писать самому или искать плагины.

Платёжные плагины для Unreal

На Marketplace можно найти плагины для ЮKassa, Stripe, PayPal и других систем. Перед покупкой проверяйте:

  • Когда последний раз обновлялся плагин.
  • Поддерживает ли он вашу версию движка.
  • Есть ли отзывы и техподдержка от автора.

Некоторые плагины — просто обёртки над REST API, и их можно написать самостоятельно через HTTP-запросы. Это не так сложно, как кажется, и даёт больше контроля.

Сравнение подходов

Подход Сложность интеграции Гибкость Поддержка магазинов Подходит для
Unity IAP Низкая Средняя App Store, Google Play, Amazon, Samsung Мобильные игры, кросс-платформенные проекты
Нативные SDK магазинов Высокая Высокая Конкретный магазин Проекты с особыми требованиями к контролю
Агрегаторы (ЮKassa, Robokassa) Средняя Высокая Любые способы оплаты Игры для РФ и СНГ, веб-игры, донат на серверах
Online Subsystem (Unreal) Низкая-средняя Средняя Steam, Epic, консоли Десктопные и консольные игры

Что выбрать в зависимости от ситуации

Мобильная игра для глобального рынка на Unity: начните с Unity IAP. Он покроет App Store и Google Play из коробки. Если нужны дополнительные способы оплаты — добавьте агрегатор через веб-запросы или нативный плагин.

Игра для российского рынка: подключите ЮKassa или другой агрегатор с поддержкой карт Мир и СБП. Не полагайтесь только на Google Play — у многих пользователей нет привязанной карты.

Десктопная игра в Steam на Unreal Engine: используйте Online Subsystem Steam для покупок через магазин. Для донатов или дополнительных способов оплаты — встроите веб-форму с агрегатором.

Веб-игра или гибридный проект: здесь движок не так важен. Подключайте агрегатор через JavaScript SDK или REST API. Для Unity WebGL можно вызвать JS-функции из C# через Application.ExternalCall.

Частые ошибки при интеграции платежей

Проверка покупок на клиенте. Если вы доверяете клиенту подтверждение покупки — вас взломают в первую же неделю. Всегда проверяйте чеки на сервере. Для Unity IAP используйте IStoreListener.ProcessPurchase и отправляйте чек на ваш сервер для валидации. Для нативных SDK — отправляйте receipt на сервер и проверяйте через API магазина.

Хранение секретов в клиенте. Ключи от агрегатора, пароли от магазинов — всё это должно быть на сервере. Клиент должен получать только токены с ограниченным сроком жизни.

Игнорирование восстановления покупок. Если пользователь переустановил игру или сменил устройство, он должен получить свои покупки обратно. Для App Store и Google Play это обязательно, иначе получите жалобы и возвраты.

Нет обработки ошибок. Сеть может пропасть, магазин может ответить ошибкой, пользователь может отменить покупку. Если вы не обработаете все состояния — игрок потеряет деньги и не получит предмет. Это прямой путь к плохим отзывам.

Как лучше сделать: практические рекомендации

  1. Начните с простого. Не пытайтесь сразу подключить десять способов оплаты. Выберите один-два основных, доведите до рабочего состояния, протестируйте на реальных пользователях.
  2. Используйте серверную проверку. Даже если у вас маленький проект — заведите простой сервер для проверки чеков. Это сбережёт вас от взломов и потерь.
  3. Тестируйте в песочнице. Все магазины и агрегаторы предоставляют тестовые среды. App Store — Sandbox, Google Play — лицензированные тестировщики, ЮKassa — тестовый режим. Не тестируйте на реальных деньгах.
  4. Логируйте всё. Записывайте все этапы покупки: начало, успех, ошибку, отмену. Когда пользователь напишет в поддержку «я заплатил, а предмет не пришёл», вы сможете разобраться за пять минут.
  5. Учитывайте комиссии. App Store и Google Play берут 30% (15% для малого бизнеса в некоторых программах). Агрегаторы — от 2% до 5% в зависимости от способа оплаты. Закладывайте это в экономику игры.
  6. Поддерживайте актуальные версии SDK. Магазины регулярно меняют требования. Google Play уже требует Billing Library 5+, Apple переходит на StoreKit 2. Если не обновляться — приложение могут отклонить при публикации.

Итог

Приём платежей в игре — это не просто «подключить SDK и забыть». Это система, которая требует серверной проверки, обработки ошибок, тестирования и регулярного обновления.

Для Unity оптимальный старт — Unity IAP для мобильных магазинов или ЮKassa для российского рынка. Для Unreal Engine — Online Subsystem для десктопных платформ и кастомные решения для дополнительных способов оплаты.

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

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

platejigid.ru — мир платежей и цифровых финансов