---
title: "Habilitar compras con Flow Builder en el SDK de Capacitor"
description: "Guía de inicio rápido para habilitar compras in-app con Adapty Flow Builder."
---

Para habilitar las compras in-app, necesitas entender tres conceptos clave:
- [**Products**](product) – cualquier cosa que los usuarios pueden comprar (suscripciones, consumibles, acceso de por vida)
- [**Flows**](adapty-flow-builder) – secuencias de pantallas que presentan productos a los usuarios, construidas en el Flow Builder sin código. El SDK los recupera mediante `getFlow`. Si prefieres construir la interfaz en tu propio código, usa un paywall — consulta [Implementar paywalls manualmente](capacitor-quickstart-manual).
- [**Placements**](placements) – dónde y cuándo mostrar flows en tu app (como `main`, `onboarding`, `settings`). Asocias flows a placements en el dashboard y luego los solicitas por ID de placement en tu código. Esto facilita ejecutar pruebas A/B y mostrar diferentes flows a distintos usuarios.
Adapty te ofrece tres formas de habilitar compras en tu aplicación. Selecciona la que mejor se adapte a tus requisitos:
| Implementación | Complejidad | Cuándo usarla |
|---|---|---|
| Adapty Flow Builder | ✅ Fácil | [Creas un flow completo y listo para compras en el editor sin código](quickstart-paywalls). Adapty lo renderiza automáticamente y gestiona todo el proceso de compra, la validación de recibos y la gestión de suscripciones entre bastidores. |
| Paywalls creados manualmente | 🟡 Media | Implementas la interfaz de tu paywall en el código de tu app, pero sigues obteniendo el objeto flow desde Adapty para mantener flexibilidad en la oferta de productos. Consulta la [guía](capacitor-quickstart-manual). |
| Modo observador | 🔴 Difícil | Ya tienes tu propia infraestructura de gestión de compras y quieres seguir usándola. Ten en cuenta que el modo observador tiene sus limitaciones en Adapty. Consulta el [artículo](observer-vs-full-mode). |
:::important
**Los pasos a continuación muestran cómo implementar un flow creado en el Adapty Flow Builder.**

Si prefieres crear la UI del paywall tú mismo, consulta [Implementar paywalls manualmente](capacitor-quickstart-manual).
:::

Para mostrar un flow creado en el Adapty Flow Builder, en el código de tu app solo necesitas:

1. **Obtener el flow**: Obtenerlo desde Adapty.
2. **Mostrarlo y Adapty gestionará las compras por ti**: Muestra la vista en tu app.
3. **Gestionar las acciones de los botones**: Asocia las interacciones del usuario con la respuesta de tu app a ellas. Por ejemplo, abre enlaces o cierra el flow cuando los usuarios pulsen botones.
## Antes de empezar \{#before-you-start\}

Antes de empezar, completa estos pasos:

1. Conecta tu app al [App Store](initial_ios) y/o [Google Play](initial-android) en el Adapty Dashboard.
2. [Crea tus productos](create-product) en Adapty.
3. [Crea un paywall y añade productos](create-paywall).
4. [Crea un placement y añade tu paywall](create-placement).
5. [Instala y activa el SDK de Adapty](sdk-installation-capacitor) en el código de tu app.

:::tip
La forma más rápida de completar estos pasos es seguir la [guía de inicio rápido](quickstart) o crear paywalls y placements usando el [CLI para desarrolladores](developer-cli-quickstart).
:::

## 1. Obtener el flow \{#1-get-the-flow\}

Tus flows están asociados a placements configurados en el dashboard. Los placements te permiten mostrar flows distintos para diferentes audiencias o ejecutar [pruebas A/B](ab-tests).

Para obtener un flow creado en el Adapty Flow Builder, obtén el objeto `flow` por el ID del [placement](placements) usando el método `getFlow`. El flow contiene los elementos de UI y los estilos necesarios para mostrarlo.
```typescript showLineNumbers title="Capacitor"

try {
  const flow = await adapty.getFlow({
    placementId: 'YOUR_PLACEMENT_ID',
  });
  // the requested flow
} catch (error) {
  // handle the error
}
```

## 2. Muestra el flow \{#2-display-the-flow\}

Ahora que tienes el flow, basta con añadir unas pocas líneas para mostrarlo.

Crea un `view` con el método `createFlowView`, configura sus manejadores de eventos y luego llama a `view.present()`. Cada `view` solo puede usarse una vez. Si necesitas mostrar el flow de nuevo, llama a `createFlowView` otra vez para crear una nueva instancia de `view`.
```typescript showLineNumbers title="Capacitor"

try {
  const view = await createFlowView(flow);

  await view.setEventHandlers({
    onPurchaseCompleted(purchaseResult, product) {
      return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
    },
  });

  await view.present();
} catch (error) {
  // handle the error
}
```

:::tip
Para más detalles sobre cómo mostrar un flow, consulta nuestra [guía](capacitor-present-paywalls).
:::
## 3. Gestionar las acciones de los botones \{#3-handle-button-actions\}

Cuando los usuarios hacen clic en los botones del flow, el SDK de Capacitor gestiona automáticamente las compras, la restauración, el cierre del flow y la apertura de URLs.

Sin embargo, otros botones tienen IDs personalizados o predefinidos y requieren que gestiones las acciones en tu código. O bien, puede que quieras sobreescribir su comportamiento predeterminado.

Por ejemplo, aquí está el comportamiento predeterminado del botón de cierre. No necesitas añadirlo en el código, pero aquí puedes ver cómo se hace si fuera necesario.
```typescript showLineNumbers title="Capacitor"
const unsubscribe = await view.setEventHandlers({
  onCloseButtonPress() {
    return true; // allow the flow to close
  },
});
```

:::tip
Lee nuestras guías sobre cómo gestionar [acciones](capacitor-handle-paywall-actions) y [eventos](capacitor-handling-events) de botones.
:::
## Siguientes pasos \{#next-steps\}

:::tip
¿Tienes preguntas o estás teniendo algún problema? Consulta nuestro [foro de soporte](https://adapty.featurebase.app/) donde encontrarás respuestas a preguntas frecuentes o podrás plantear las tuyas. ¡Nuestro equipo y la comunidad están aquí para ayudarte!
:::

Tu paywall está listo para mostrarse en la app. Prueba tus compras en el [sandbox del App Store](test-purchases-in-sandbox) o en [Google Play Store](testing-on-android) para asegurarte de que puedes completar una compra de prueba desde el paywall.

A continuación, necesitas [comprobar el nivel de acceso de los usuarios](capacitor-check-subscription-status) para asegurarte de mostrar un paywall o dar acceso a las funciones de pago a los usuarios correctos.

## Ejemplo completo \{#full-example\}

Aquí tienes cómo integrar todos los pasos de esta guía en tu aplicación.
```typescript showLineNumbers title="Capacitor"

export async function showFlow() {
  try {
    const flow = await adapty.getFlow({
      placementId: 'YOUR_PLACEMENT_ID',
    });

    const view = await createFlowView(flow);

    await view.setEventHandlers({
      onCloseButtonPress() {
        return true;
      },
      onPurchaseCompleted(purchaseResult, product) {
        return purchaseResult.type === 'success'; // close the flow on a successful purchase, keep it open for cancelled or pending purchases
      },
    });

    await view.present();
  } catch (error) {
    // handle any error that may occur during the process
    console.warn('Error showing flow:', error);
  }
}
```