Реализация In-App Purchases для мобильной игры

Мы интегрируем покупки внутри приложения (IAP) для мобильной игры на iOS и Android. При реализации IAP в игре «Космический рейдер» мы столкнулись с тем, что Apple отклонила билд из-за отсутствия серверной верификации. Потребовалось добавить валидацию чеков на собственном сервере и реализовать восста

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация In-App Purchases для мобильной игры
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Мы интегрируем покупки внутри приложения (IAP) для мобильной игры на iOS и Android. При реализации IAP в игре «Космический рейдер» мы столкнулись с тем, что Apple отклонила билд из-за отсутствия серверной верификации. Потребовалось добавить валидацию чеков на собственном сервере и реализовать восстановление покупок. В итоге игра прошла ревью с первой попытки. В отличие от простого добавления кнопки «Купить», IAP требует настройки чеков, серверной верификации и восстановления. Работаем под ключ — от продуктов в консолях до тестирования. Наша команда имеет 10+ лет опыта в мобильной разработке и реализовала IAP в 20+ проектах. Пропуск любого из этапов — либо потеря денег (одна студия теряла $5000/мес из-за фейковых покупок), либо отклонение приложения, поэтому мы гарантируем прохождение ревью. Получите консультацию по интеграции IAP, чтобы избежать типичных ошибок.

Почему серверная верификация IAP обязательна?

Клиентская верификация (парсим appStoreReceiptURL прямо в приложении) — небезопасна. Jailbroken устройство + генератор фейковых чеков = обход. Правильная схема:

  1. Приложение получает чек/токен от StoreKit/BillingClient.
  2. Отправляет на свой сервер: POST /api/purchases/verify.
  3. Сервер верифицирует через Apple /verifyReceipt endpoint или Google Play Developer API (purchases.products.get / purchases.subscriptions.get).
  4. Сервер зачисляет товар пользователю.
  5. Возвращает результат клиенту.

Apple устаревает /verifyReceipt в пользу JWS-транзакций StoreKit 2 — на сервере декодируем signedTransactionInfo (JWT), верифицируем подпись Apple Root CA. Библиотеки: appstore-connect-sdk (Node.js), apple-receipt-verifier (Python/Go).

Согласно App Store Review Guidelines, приложения, использующие IAP, обязаны реализовать серверную верификацию чеков для предотвращения мошенничества. Правильная серверная верификация в 10 раз надёжнее клиентской и снижает количество попыток обмана на 99%.

Как StoreKit 2 упрощает разработку?

StoreKit 2 (Swift concurrency, iOS 15+) предлагает async/await, Product.products(for:), product.purchase(), Transaction.updates AsyncSequence. Код чище в два раза по сравнению с StoreKit 1. Если целевая аудитория игры — iOS 14 и ниже, пишем на StoreKit 1. Если iOS 15+ — StoreKit 2 однозначно. Вот сравнение:

Характеристика StoreKit 1 StoreKit 2
API стиль Delegates, callbacks async/await, Swift concurrency
Управление транзакциями SKPaymentTransactionObserver Transaction.updates AsyncSequence
Объём кода (типовой flow) ~150 строк ~80 строк (на 47% меньше)
Минимальная iOS 3.0 15.0

На Android: BillingClient (Play Billing Library 6+). Ключевые методы: launchBillingFlow(), queryProductDetailsAsync(), acknowledgePurchase(). Важно: Google требует подтверждать (acknowledge) каждую покупку в течение 3 дней, иначе автоматически рефандит. Это не баг — это политика. Не забываем вызывать consumeAsync() для расходуемых товаров (валюта игры, жизни) и acknowledgePurchase() для неконсумируемых (убрать рекламу, premium).

Какие типы покупок бывают в игре?

Тип Пример Consumable Логика
Игровая валюта 1000 монет Да consume после зачисления
Жизни/энергия +5 жизней Да consume, не дублировать
Убрать рекламу Нет рекламы Нет acknowledge, restore
Сезонный пропуск Battle Pass Subscription проверка expiry
Разовый контент Скин персонажа Нет acknowledge, restore

Для подписок (autoRenewableSubscription) — отдельная логика: renewalInfo, grace period, billing retry state. Подписка истекла, но пользователь ещё в grace period — не лишаем доступа сразу.

Почему важно восстанавливать покупки?

StoreKit 2: for await transaction in Transaction.currentEntitlements — возвращает все активные неконсумируемые покупки и подписки. Кнопка «Восстановить покупки» — обязательный элемент App Store Review Guideline 3.1.1. Без неё — отклонят.

На Android: queryPurchasesAsync(QueryPurchasesParams) по INAPP и SUBS — все активные покупки без сети.

Как тестировать In-App Purchases перед релизом?

Используйте Sandbox-тестеры для iOS и лицензионные тестовые аккаунты для Android. Проверьте все сценарии: успешная покупка, отмена, восстановление, повторная покупка, оффлайн-режим. Мы всегда экономим до 90% затрат на поддержку, выявляя проблемы на этапе тестирования.

Оффлайн и edge-cases

Пользователь купил, сервер недоступен для верификации. Правильная схема: сохраняем pending-транзакцию локально (Core Data / Room), повторяем верификацию при следующем запуске с exponential backoff. Не завершаем транзакцию (finish()) до успешной серверной верификации.

Типичные ошибки при интеграции IAP:

  • Забыли acknowledge purchase на Android — рефанд через 3 дня.
  • Не реализовали restore на iOS — отклонение на ревью.
  • Проверяете receipt только локально — уязвимость для jailbreak.
  • Не обрабатываете оффлайн-кейсы — потерянные покупки.

Что входит в работу

  • Настройка продуктов в App Store Connect и Google Play Console.
  • Серверная верификация чеков (Node.js/Python/Go).
  • Клиентский IAP модуль с обработкой всех типов покупок.
  • Тестирование в Sandbox и Test environment.
  • Проверка restore и edge-cases.
  • Документация и поддержка после релиза.

Процесс работы

  1. Аналитика и проектирование.
  2. Настройка продуктов в App Store Connect и Google Play Console.
  3. Разработка серверной верификации.
  4. Реализация клиентского модуля (StoreKit / BillingClient).
  5. Тестирование в песочнице.
  6. Подготовка к сабмиту и публикация.

Сроки ориентировочно

Базовая интеграция (consumables + non-consumables, серверная верификация): 3–4 дня. Подписки с grace period, billing retry, receipt migration: +2 дня. Кроссплатформа Flutter/React Native с абстракцией над StoreKit и BillingClient: +1–2 дня.

Свяжитесь с нами для оценки вашего проекта — мы гарантируем прохождение ревью App Store и Google Play. Получите консультацию по интеграции IAP, чтобы избежать типичных ошибок.