---
title: "Responder a los resultados de compra"
description: "Reacciona a cada resultado de compra en el código de tu app y abre un segundo flow cuando la compra tenga éxito."
---

> **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`

Cuando una compra finaliza, el SDK de Adapty llama a tu app con el resultado. Nada cambia en pantalla hasta que tu app reacciona. Tu app puede cerrar el paywall, dejarlo abierto para un nuevo intento o abrir un segundo flow que confirme la compra.

El builder no puede ramificar en función del resultado de una compra: ningún [trigger](onboarding-actions#trigger-types) se dispara cuando finaliza una compra, y ninguna [variable](onboarding-variables) contiene su resultado. Por eso, la transición debe gestionarse en tu código, donde llega el resultado.

El trabajo se divide en tres partes:

- Crear el flow posterior a la compra y asignarlo a su propio placement.
- En el código de tu app, ramificar según el resultado de la compra.
- En caso de éxito, cerrar el paywall y mostrar el flow posterior a la compra.

## Antes de empezar \{#before-you-start\}

- Los flows requieren el SDK de Adapty v4.0 o posterior.
- Crea un paywall — por ejemplo, sigue la receta [Crear una pantalla de paywall básica](basic-paywall-screen).

## 1. Construye el flow posterior a la compra \{#build-the-post-purchase-flow\}

[Crea el flow](paywall-builder-templates). Se ejecuta después de la compra, por lo que no necesita productos. Para devolver al usuario a la interfaz propia de tu app, añade un botón con la acción **Close Flow** en la pantalla final.

Usa una [**Acción personalizada**](onboarding-actions#custom-actions) cuando el flow tenga más de una salida. Crea varios botones, cada uno con su propio ID de acción, para que tu app pueda distinguir **Set up now** de **Set up later**.

## 2. Añade el flow de post-compra a su propio placement \{#2-add-the-post-purchase-flow-to-its-own-placement\}

Para obtener el flow de post-compra desde tu app, asígnalo a su propio placement. El placement de tu paywall no puede utilizarlo también — un placement sirve un único flow por audiencia.

1. [Publica el flow](builder-save-publish).
2. [Crea un placement para el flow](create-placement). Anota el **Placement ID** — tu app lo usa para obtener el flow.
3. Asigna el flow de post-compra al nuevo placement.

## 3. Ramifica según el resultado de la compra \{#3-branch-on-the-purchase-result\}

Tu app recibe el resultado de la compra a través de dos callbacks:

- **Completion**: La compra llegó a una conclusión: tuvo éxito, el usuario la canceló, o el pago está pendiente de aprobación (la confirmación de un padre, por ejemplo). Lee el tipo del resultado para distinguir los tres casos. En caso de éxito, el resultado incluye el `AdaptyProfile` actualizado.
- **Failure**: Un error detuvo la compra, y el callback incluye un `AdaptyError`: restricciones de pago, productos inválidos, fallos de red o errores de verificación de transacciones.

Nombres y firmas de los callbacks: [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)

Actúa según el resultado:

- Si tiene éxito, cierra el paywall y muestra el flow posterior a la compra.
- Si hay una cancelación, un pago pendiente o un error, deja el paywall abierto.

:::note
Las restauraciones se reportan a través de su propio callback, que cubre a los usuarios que reinstalan la app o cambian de dispositivo. Confirma que el perfil devuelto tiene tu [nivel de acceso](access-level) activo, luego cierra y presenta un flow de la misma manera. Apunta ese callback a un flow distinto: una pantalla que agradece al usuario por una compra no encaja en una restauración.
:::

## 4. Cargar y presentar el flow post-compra \{#4-load-and-present-the-post-purchase-flow\}

Para abrir el flow post-compra sin espera, obtenlo junto con el paywall en lugar de hacerlo dentro del handler. El SDK descarga y almacena en caché las imágenes de antemano.

Para precalentar la caché de varios placements en una sola llamada, usa [`preloadFlows`](ios-optimize-paywall-fetching#preload-placements) (SDK 4.1+).

Obtener flows y paywalls: [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)

Mostrar flows y 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)