Что означает «Восстановить покупку»?

Последнее обновление 10 марта, 2026
 
Victoria Kharlan
Опубликовано 5 декабря, 2025 
Обновлено 10 марта, 2026
Чтение: 4 мин.
What Does Restore Purchase Mean

Представьте: пользователь оформляет подписку, меняет устройство, переустанавливает приложение и внезапно теряет доступ. Это простой способ потерять доверие.

Именно для этого и существует кнопка «Восстановить покупку». Она может показаться необязательной, но на самом деле является обязательной, особенно для приложений, работающих по подписке.

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

Почему это важно

  • Доверие пользователей: если кто-то заплатил один раз, он ожидает сохранить доступ независимо от устройства.
  • Нагрузка на службу поддержки: запутанная или отсутствующая логика восстановления = недовольные пользователи + больше обращений в службу поддержки.
  • Соответствие требованиям App Store: Apple и Google ожидают, что вы включите опцию восстановления для определенных типов продуктов.

Какие покупки можно восстановить

Восстанавливаемые покупки включают:

  • Непотребляемые товары: одноразовые покупки, такие как пожизненный доступ или премиум-функции.
  • Автоматически продлеваемые подписки: ежемесячные/ежегодные планы, которые синхронизируются между устройствами.
  • Непродлеваемые подписки: доступ на фиксированный срок (например, 3-месячный пропуск).

Не подлежит восстановлению:

  • Расходные материалы, такие как монеты, дополнительные жизни или одноразовые ускорения. Они предназначены для использования.

Как работает кнопка «Восстановить покупку»

  1. UI/UX. Добавьте кнопку «Восстановить покупку» — обычно в настройках или непосредственно на платежной стене.
  2. Триггер. При нажатии запустите восстановление с помощью:
    • SKPaymentQueue.restoreCompletedTransactions() для iOS
    • BillingClient.queryPurchaseHistoryAsync() для Android
    • Или ваша бэкэнд-логика, если вы управляете правами на стороне сервера
  3. Обновите доступ. После завершения восстановления обновите статус подписки пользователя и разблокируйте контент.
  4. Добавьте полезную копию. Простая строка поможет уменьшить путаницу: «Используйте это, если вы сменили устройство или переустановили приложение».
  5. Избегайте избыточности. Если у пользователя уже есть доступ, отключите кнопку или полностью скройте ее.
  6. Логика учетной записи. Для приложений с входом в систему: привяжите подписки к учетным записям пользователей и синхронизируйте их через бэкэнд, чтобы упростить восстановление данных на разных устройствах.

Как восстановление покупок работает на iOS

На iOS восстановление покупок обновляет чек приложения и повторно предоставляет продукты, привязанные к Apple ID пользователя. Процесс выполняется тихо в фоновом режиме, а взаимодействие должно быть простым и понятным.

Вот как это сделать с помощью нативного StoreKit (до StoreKit 2):

1. Запустите процесс восстановления

Вызовите restoreCompletedTransactions(), чтобы запустить процесс восстановления:

SKPaymentQueue.default().restoreCompletedTransactions()

Это дает StoreKit команду найти все прошлые покупки, привязанные к текущему Apple ID.

2. Обработайте восстановленные транзакции

Прослушайте очередь платежей и проверьте состояния транзакций .restored. Затем разблокируйте контент и пометьте транзакцию как завершенную:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        if transaction.transactionState == .restored {
            // Unlock access based on restored product
            unlockContent(transaction: transaction)
            SKPaymentQueue.default().finishTransaction(transaction)
        }
    }
}

Don’t forget to call finishTransaction(_:). Otherwise, StoreKit may continue to retry the same transaction.

3. Корректно обработайте ошибки

Восстановление может завершиться неудачей из-за недействительных чеков, проблем с сетью или отсутствия подходящих покупок у данного Apple ID. Покажите пользователю понятное сообщение и запишите ошибку в лог для отладки.

Using Adapty SDK? We handle all of this, including receipt validation and edge cases, with a single method call.

Как восстановление покупок работает на Android

На Android восстановление покупок означает проверку истории покупок пользователя через Google Play и повторную активацию непотребляемых продуктов или активных подписок. Встроенной кнопки «восстановить», как на iOS, здесь нет. Это значит, что вам нужно реализовать это вручную через billing API.

Вот как это сделать с помощью Google Play Billing Library:

1. Запрос истории покупок

Используйте queryPurchaseHistoryAsync() для получения информации о прошлых покупках пользователя:

billingClient.queryPurchaseHistoryAsync(
    BillingClient.SkuType.SUBS
) { billingResult, purchaseHistoryList ->
    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchaseHistoryList != null) {
        for (purchase in purchaseHistoryList) {
            // Restore subscription access
            restoreEntitlement(purchase)
        }
    }
}

Вы также можете запросить информацию о покупках в приложении, передавая BillingClient.SkuType.INAPP.

2. Валидация и разблокировка

После получения истории покупок проверьте чеки (в идеале на стороне сервера) и предоставьте доступ соответствующим образом. Обязательно проверяйте данные подписи для предотвращения подмены.

Adapty берет на себя валидацию покупок, логику доступа пользователей и кроссплатформенную синхронизацию прямо из коробки.

3. Рекомендации по UX

Поскольку пользователи Android не ожидают кнопки «Восстановить покупки», вы можете:

  • Автоматически запускать восстановление при входе в систему или запуске приложения
  • Или предложить незаметную опцию в Настройках для прозрачности

В любом случае убедитесь, что логика восстановления работает тихо в фоновом режиме и обновляет интерфейс при восстановлении доступа.

Заключение

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

  • Она укрепляет доверие.
  • Она снижает отток.
  • Она обеспечивает соответствие требованиям.

Сделайте её заметной. Сделайте её рабочей. И сделайте её понятной.

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

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

Нет. Это только восстанавливает действие ранее совершенных покупок; никаких сборов не взимается.

Нет. Обычно это делается вручную пользователем. Но если вы используете Adapty или свой собственный бэкэнд, вы можете синхронизировать покупки автоматически при запуске приложения, чтобы обеспечить постоянную актуальность доступа.

На iOS — да, если используется тот же Apple ID. На Android рекомендуется войти в систему, чтобы привязать покупки к постоянной учетной записи пользователя.

Нет. Функция «Восстановить покупку» работает только для учетной записи, с которой была совершена покупка.

В iOS, если продукт поддерживает функцию «Семейный доступ» и она включена, любой член семьи может восстановить покупку. Поведение зависит от настроек App Store и типа продукта.

Отобразите дружеское сообщение, например: «Для вашей учетной записи не найдено предыдущих покупок». Это предотвращает путаницу и подтверждает, что процесс прошел как ожидалось.
Victoria Kharlan
Lessons I wish I had. Now yours.
Прочее

На этой странице

Готовы создать ваш первый пейволл с Adapty?
Создавайте денежные пейволлы без программирования
Начать бесплатно