---
title: "Реагируйте на результаты покупки"
description: "Обрабатывайте в коде приложения любой исход покупки и открывайте второй флоу при успешном завершении."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skill. Claude Code (self-updating via plugin): `claude plugin marketplace add adaptyteam/adapty-sdk-integration-skill && claude plugin install adapty-sdk-integration@adapty` — other tools: `npx skills add adaptyteam/adapty-sdk-integration-skill --all`

Когда покупка завершается, Adapty SDK передаёт результат вашему приложению. Экран не изменится, пока приложение не отреагирует. Вы можете закрыть пейвол, оставить его открытым для повторной попытки или открыть второй флоу, подтверждающий покупку.

Билдер не может разветвляться по результату покупки: ни один [триггер](onboarding-actions#trigger-types) не срабатывает по завершении покупки, и ни одна [переменная](onboarding-variables) не хранит её результат. Поэтому переход нужно реализовать в коде приложения, где и приходит результат.

Работа делится на три части:

- Собрать флоу после покупки и назначить его на отдельный плейсмент.
- В коде приложения разветвиться по результату покупки.
- При успехе закрыть пейвол и показать флоу после покупки.

## Прежде чем начать \{#before-you-start\}

- Флоу требуют Adapty SDK версии 4.0 или выше.
- Создайте пейвол — например, следуйте рецепту [Создание базового экрана пейвола](basic-paywall-screen).

## 1. Создайте пост-покупочный флоу \{#1-build-the-post-purchase-flow\}

[Создайте флоу](paywall-builder-templates). Он запускается после покупки, поэтому продукты ему не нужны. Чтобы вернуть пользователя в собственный интерфейс приложения, добавьте кнопку с действием **Close Flow** на финальный экран.

Используйте [**Custom Action**](onboarding-actions#custom-actions), если у флоу больше одного варианта выхода. Создайте несколько кнопок, каждой из которых задайте свой action ID — так приложение сможет отличить **Set up now** от **Set up later**.

## 2. Добавьте флоу после покупки в отдельный плейсмент \{#2-add-the-post-purchase-flow-to-its-own-placement\}

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

1. [Опубликуйте флоу](builder-save-publish).
2. [Создайте плейсмент для флоу](create-placement). Запишите **Placement ID** — приложение использует его для загрузки флоу.
3. Назначьте флоу после покупки в новый плейсмент.

## 3. Ветвление по результату покупки \{#3-branch-on-the-purchase-result\}

Ваше приложение получает результат покупки через два колбэка:

- **Completion**: Покупка завершена — успешно, пользователь отменил её или платёж ожидает подтверждения (например, от родителя). Проверьте тип результата, чтобы различить эти три случая. При успехе результат содержит обновлённый `AdaptyProfile`.
- **Failure**: Ошибка прервала покупку, и колбэк содержит `AdaptyError` — ограничения платежей, неверные продукты, сетевые сбои или ошибки верификации транзакции.

Имена и сигнатуры коллбэков: [iOS](ios-handling-events) | [Android](android-handling-events) | [React Native](react-native-handling-events-1) | [Flutter](flutter-handling-events) | [Unity](unity-handling-events) | [Kotlin Multiplatform](kmp-handling-events) | [Capacitor](capacitor-handling-events)

Обработайте результат в зависимости от исхода:

- При успешной покупке — закройте пейвол и запустите флоу после покупки.
- При отмене, ожидающем платеже или ошибке — оставьте пейвол открытым.

:::note
Восстановления отрабатываются через отдельный колбэк, который охватывает пользователей, переустанавливающих приложение или сменивших устройство. Убедитесь, что в возвращённом профиле активен нужный [уровень доступа](access-level), затем закройте текущий экран и откройте флоу обычным способом. Направьте этот колбэк на отдельный флоу — экран с благодарностью за покупку здесь не подойдёт.
:::

## 4. Загрузите и отобразите флоу после покупки \{#4-load-and-present-the-post-purchase-flow\}

Чтобы открыть флоу после покупки без задержки, загружайте его вместе с пейволом, а не внутри обработчика. SDK заранее скачивает и кеширует изображения.

Чтобы прогреть кеш для нескольких плейсментов за один вызов, используйте [`preloadFlows`](ios-optimize-paywall-fetching#preload-placements) (SDK 4.1+).

Получить флоу и пейволы: [iOS](get-pb-paywalls) | [Android](android-get-pb-paywalls) | [React Native](react-native-get-pb-paywalls) | [Flutter](flutter-get-pb-paywalls) | [Unity](unity-get-pb-paywalls) | [Kotlin Multiplatform](kmp-get-pb-paywalls) | [Capacitor](capacitor-get-pb-paywalls)

Отобразить флоу и пейволы: [iOS](ios-present-paywalls) | [Android](android-present-paywalls) | [React Native](react-native-present-paywalls) | [Flutter](flutter-present-paywalls) | [Unity](unity-present-paywalls) | [Kotlin Multiplatform](kmp-present-paywalls) | [Capacitor](capacitor-present-paywalls)