In-App Purchase — суть, типы покупок и как работает монетизация

Автор: IT Sectr Опубликовано: 2026-04-22 Время чтения: 9 мин

In-App Purchase (IAP) — это механизм внутриигровых покупок, который позволяет пользователям приобретать цифровые товары и услуги непосредственно внутри мобильного приложения. Платформы iOS и Android предоставляют встроенные API для проведения платежей без передачи данных банковских карт разработчику. По данным документации Apple StoreKit, IAP обрабатывает более 500 миллиардов долларов транзакций ежегодно через App Store и Google Play.

Главное

  • In-App Purchase — механизм покупки цифровых товаров внутри мобильного приложения через API магазина.
  • Consumable — одноразовые покупки, которые можно приобретать многократно (монеты, жизни, энергия).
  • Non-Consumable — постоянные покупки, доступные после однократного приобретения (уровни, фильтры, премиум-функции).
  • Автопродление (Auto-Renewable Subscription) — регулярные платежи за доступ к контенту или сервису на период.
  • Server-side receipt validation — обязательная проверка чека на собственном сервере для защиты от фрода.

Что такое In-App Purchase?

In-App Purchase (IAP) — это технология, позволяющая продавать цифровые товары и услуги внутри мобильного приложения. Платежи обрабатываются через App Store (на iOS) или Google Play (на Android), которые взимают комиссию за проведение транзакции. Разработчик получает средства за вычетом комиссии магазина.

Apple взимает комиссию 30% (15% для малого бизнеса с доходом до 1 миллиона долларов). Google Play также взимает 30% (15% на первый 1 миллион долларов дохода разработчика). С 2024 года Google тестирует программу User Choice Billing, которая позволяет разработчикам использовать альтернативные платёжные системы.

IAP обязателен для продажи цифровых товаров в приложениях согласно политикам App Store и Google Play. Физические товары, услуги (заказ такси, доставка еды) и peer-to-peer платежи могут использовать сторонние платёжные системы.

Типы In-App Purchase: consumable, non-consumable и subscription

App Store и Google Play поддерживают три основных типа In-App Purchase. Каждый тип предназначен для разных моделей монетизации. Выбор типа продукта влияет на логику восстановления покупок, управление подписками и поведение при повторной установке приложения.

Consumable (расходуемые покупки)

Consumable — это товары, которые можно приобретать многократно и которые расходуются в процессе использования. Типичные примеры: игровая валюта (монеты, алмазы), дополнительные жизни, ускорители, расходуемые бустеры. Consumable не восстанавливаются при переустановке приложения — разработчик сам управляет балансом каждого пользователя на своём сервере.

Non-Consumable (нерасходуемые покупки)

Non-Consumable — это товары, которые покупаются один раз и остаются доступными навсегда. Примеры: полная версия приложения, премиум-уровни, разблокировка фильтров, удаление рекламы. Non-consumable продукты восстанавливаются через Restore Purchases API: после переустановки пользователь может вернуть ранее купленные товары без повторной оплаты.

Auto-Renewable Subscription (автопродление)

Auto-Renewable Subscription — это регулярные платежи за доступ к контенту или сервису на определённый период (неделя, месяц, год). Подписка автоматически продлевается, пока пользователь не отменит её в настройках аккаунта. Магазины предоставляют серверные уведомления (App Store Server Notifications, Google Play Developer Notifications) об изменении статуса подписки: продление, истечение, возврат.

Настройка IAP в App Store Connect и Google Play Console

Настройка In-App Purchase начинается в панелях разработчика: App Store Connect для iOS и Google Play Console для Android. Для каждого продукта указывается идентификатор (Product ID), название, описание, тип и цена в долларах США с автоматической конвертацией в региональные валюты. После создания продукт проходит модерацию магазина.

В App Store Connect продукты IAP создаются в разделе Features → In-App Purchases. Для каждого продукта выбирается тип (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) и заполняются локализованные названия. Для подписок дополнительно настраиваются группы (Subscription Groups) — группы взаимозаменяемых подписок.

В Google Play Console managed products настраиваются в разделе Monetise → Products → In-app products. Google использует термины Managed Product (аналог non-consumable) и Subscription. Для consumable покупок на Android используется отдельный флаг consume, который сбрасывает продукт для повторной покупки.

Модерация IAP-продуктов в среднем занимает 24–48 часов в App Store и несколько часов в Google Play. Изменения цен применяются немедленно без повторной модерации. Product ID нельзя изменить после создания — только удалить и создать заново.

Server-side receipt validation и защита от фрода

Receipt validation (проверка чека) — обязательный этап обработки In-App Purchase. Клиентское приложение отправляет чек (receipt) на собственный сервер, сервер проверяет его через API Apple (https://buy.itunes.apple.com) или Google (https://androidpublisher.googleapis.com) и только после успешной валидации зачисляет товар пользователю.

Без серверной валидации злоумышленник может подменить ответ от магазина и получить товар бесплатно. Client-side validation небезопасна, поскольку выполняется в среде, контролируемой пользователем. Серверная проверка гарантирует, что чек подлинный и оплата прошла успешно. Для Apple проверка выполняется через verifyReceipt endpoint (production или sandbox), для Google — через Android Publisher API. Оба магазина возвращают подтверждение в формате JSON.

Apple возвращает в чеке данные о покупке: product_id, transaction_id, purchase_date, expiration_date (для подписок). Google возвращает аналогичные поля через API Purchases.products.get или Purchases.subscriptions.get. Сервер должен хранить transaction_id каждого чека и отклонять повторные запросы с тем же ID для защиты от replay-атак.

Интеграция IAP в мобильное приложение на Swift и Kotlin

Интеграция In-App Purchase требует подключения платформенных библиотек: StoreKit 2 на iOS и Billing Library 7+ на Android. API позволяют запрашивать список продуктов, инициировать покупку, обрабатывать результат и восстанавливать ранее приобретённые товары.

Swift — StoreKit 2 на iOS 17+

swift
import StoreKit

func purchaseProduct(productID: String) async throws {
    guard let product = try await Product.products(for: [productID]).first else { return }
    let result = try await product.purchase()
    switch result {
    case .success(let verification):
        let transaction = try verification.payloadValue
        await validateReceipt(transaction)
        await transaction.finish()
    default:
        break
    }
}

Kotlin — Billing Library 7

kotlin
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingFlowParams

val billingClient = BillingClient.newBuilder(context)
    .setListener { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            purchases?.forEach { purchase ->
                validateReceipt(purchase)
            }
        }
    }
    .build()

val params = BillingFlowParams.newBuilder()
    .setProductDetails(productDetails)
    .build()
billingClient.launchBillingFlow(activity, params)

Server-side receipt validation (Node.js)

js
const response = await fetch('https://buy.itunes.apple.com/verifyReceipt', {
    method: 'POST',
    body: JSON.stringify({
        'receipt-data': receiptBase64,
        'password': 'SHARED_SECRET'
    })
})

const data = await response.json()
if (data.status === 0) {
    // Чек подтверждён — зачисляем товар
    await grantProduct(data.receipt.product_id)
}

Лучшие практики монетизации через In-App Purchase

Монетизация через In-App Purchase требует продуманной стратегии ценообразования и UX. Пользователи более склонны к первой покупке, если им предлагается привлекательный начальный пакет (starter pack) по низкой цене. Apple и Google рекомендуют показывать цену продукта до момента подтверждения покупки.

Subscription onboarding — критический этап конверсии. Покажите пользователю ценность подписки до запроса оплаты: бесплатный пробный период, сравнение тарифов, список преимуществ. По данным исследований, бесплатный пробный период (free trial) увеличивает конверсию в платящих пользователей на 25–40%.

Restore Purchases обязателен для non-consumable продуктов и подписок. Кнопка восстановления должна быть доступна в настройках приложения или на экране оплаты. Google и Apple могут отклонить приложение, если восстановление покупок не реализовано для соответствующих типов IAP.

Grace Period — период отсрочки для подписок, в течение которого пользователь сохраняет доступ после сбоя оплаты. iOS и Android поддерживают grace period до 30 дней. Включение grace period снижает отток (churn rate) на 10–15%.

A/B-тестирование цен IAP — важная практика монетизации. App Store Connect поддерживает локальные цены (Price Tiers) с возможностью менять цену без повторной модерации продукта. Google Play Console позволяет настраивать до 5 base-планов с разными ценами для одного subscription product. Рекомендуется тестировать не менее двух ценовых точек: текущую и новую. Тестирование проводится в течение 2–4 недель на выборке не менее 1000 пользователей на каждую ценовую точку.

Store Review и Rejection-менеджмент — обязательный этап публикации приложения с IAP. Apple особенно тщательно проверяет приложения с auto-renewable subscriptions: необходимо предоставить тестовый аккаунт с активной подпиской, показать экран отмены подписки и реализовать Restore Purchases. Google Play менее строг, но запрашивает подтверждение прав на цифровой контент. Рекомендуется добавить примечание для ревьюера (Review Notes) с описанием логики IAP.

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

Что такое In-App Purchase и как он работает?

In-App Purchase (IAP) — это механизм покупки цифровых товаров внутри мобильного приложения. Платёж обрабатывается через App Store или Google Play, которые удерживают комиссию 30% (15% для малого бизнеса) и переводят остаток разработчику.

Какие бывают типы In-App Purchase?

Существует три типа IAP: consumable (расходуемые — монеты, жизни), non-consumable (постоянные — удаление рекламы, полная версия) и auto-renewable subscription (автопродление — доступ к контенту на период). Non-consumable поддерживают восстановление покупок.

Как защитить In-App Purchase от взлома?

Основной метод защиты — server-side receipt validation. Клиент отправляет чек на ваш сервер, сервер проверяет его через API Apple или Google. Без серверной валидации злоумышленник может подменить ответ магазина и получить товар бесплатно.

Как настроить In-App Purchase в приложении?

Настройка IAP включает: создание продуктов в App Store Connect или Google Play Console, подключение StoreKit (iOS) или Billing Library (Android), реализацию покупки и серверную проверку чека. Каждый продукт проходит модерацию магазина.

Какая комиссия магазинов за In-App Purchase?

Apple взимает 30% (15% для разработчиков с доходом до 1 млн долларов). Google Play также взимает 30% (15% на первый 1 млн). С 2024 года Google тестирует альтернативные платёжные системы через User Choice Billing. Разработчик может выбрать стороннего платёжного провайдера, но должен платить Google сервисный сбор 11–12%.

Итоги

  • In-App Purchase — механизм продажи цифровых товаров внутри мобильного приложения через API App Store и Google Play.
  • Три типа IAP: consumable (расходуемые), non-consumable (постоянные) и auto-renewable subscription (автопродление).
  • Комиссия магазинов составляет 30% (15% для малого бизнеса).
  • Server-side receipt validation — обязательная защита от подмены чека на стороне клиента.
  • Модерация продуктов IAP занимает 24–48 часов в App Store и несколько часов в Google Play.
  • Subscription onboarding с бесплатным пробным периодом повышает конверсию в платящих пользователей на 25–40%.
  • Grace Period до 30 дней снижает отток подписчиков на 10–15% при сбоях оплаты.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также