---
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 v4.0 或更高版本。
- 先构建一个付费墙——例如，参照[创建基础付费墙界面](basic-paywall-screen)教程。

## 1. 构建购后流程 \{#1-build-the-post-purchase-flow\}

[创建流程](paywall-builder-templates)。该流程在购买完成后运行，因此无需配置产品。若要将用户引导回应用自身的界面，请在最后一个屏幕上添加一个绑定 **Close Flow** 操作的按钮。

当流程有多个分支出口时，请使用[**自定义操作**](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)