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

Victoria Kharlan
Victoria Kharlan
4 мин чтения
Что означает «Восстановить покупку»?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SKPaymentQueue.default().restoreCompletedTransactions()
Swift

Это дает 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)
        }
    }
}
Swift

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)
        }
    }
}
Swift

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

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

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

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

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

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

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

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

Заключение

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

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

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

FAQ

Похожие статьи

Пользователи iPhone и Android: Подробное поведенческое сравнение
8 мин чтения

Пользователи iPhone и Android: Подробное поведенческое сравнение

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

Disha SharmaDisha SharmaRead