---
title: "Reportar transacciones en Observer Mode en el SDK de Android"
description: "Reporta transacciones de compra en el Observer Mode de Adapty para obtener información de usuario y seguimiento de ingresos en el SDK de Android."
---

<Tabs groupId="sdk-version" queryString> 

<TabItem value="current" label="Adapty SDK v3.4+ (current)" default> 
En Observer Mode, el SDK de Adapty no puede rastrear por sí solo las compras realizadas a través de tu sistema de compras existente. Debes reportar las transacciones desde tu app store. Es fundamental configurar esto **antes** de publicar tu app para evitar errores en los análisis.

Usa `reportTransaction` para reportar explícitamente cada transacción y que Adapty la reconozca.

:::warning

**¡No omitas el reporte de transacciones!**
Si no llamas a `reportTransaction`, Adapty no reconocerá la transacción, no aparecerá en los análisis y no se enviará a las integraciones.

:::

Si usas paywalls de Adapty, incluye el `variationId` al reportar una transacción. Esto vincula la compra con el paywall que la generó, garantizando análisis precisos del paywall.

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin showLineNumbers
val transactionInfo = TransactionInfo.fromPurchase(purchase)

Adapty.reportTransaction(transactionInfo, variationId) { result ->
    if (result is AdaptyResult.Success) {
        // success
    }
}
```

Parámetros:

| Parámetro       | Presencia | Descripción                                                  |
| --------------- | --------- | ------------------------------------------------------------ |
| transactionInfo | requerido | El TransactionInfo de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId     | opcional  | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
<TabItem value="java" label="Java" default>

```java showLineNumbers
TransactionInfo transactionInfo = TransactionInfo.fromPurchase(purchase);

Adapty.reportTransaction(transactionInfo, variationId, result -> {
    if (result instanceof AdaptyResult.Success) {
        // success
    }
});
```

Parámetros:

| Parámetro       | Presencia | Descripción                                                  |
| --------------- | --------- | ------------------------------------------------------------ |
| transactionInfo | requerido | El TransactionInfo de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId     | opcional  | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
</Tabs>
</TabItem>
<TabItem value="old" label="Adapty SDK 3.3.x (legacy)" default> 

En Observer Mode, el SDK de Adapty no puede rastrear por sí solo las compras realizadas a través de tu sistema de compras existente. Debes reportar las transacciones desde tu app store o restaurarlas. Es fundamental configurar esto **antes** de publicar tu app para evitar errores en los análisis.

Usa `restorePurchases` para reportar la transacción a Adapty.

:::warning

**¡No omitas la restauración de compras!**
Si no llamas a `restorePurchases`, Adapty no reconocerá la transacción, no aparecerá en los análisis y no se enviará a las integraciones.

:::

Si usas paywalls de Adapty, vincula tu transacción con el paywall que originó la compra mediante el método `setVariationId`. Esto garantiza que la compra se atribuya correctamente al paywall que la desencadenó para un análisis preciso. Este paso solo es necesario si usas paywalls de Adapty.

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin showLineNumbers
Adapty.restorePurchases { result ->
    if (result is AdaptyResult.Success) {
        // success
    }
}

Adapty.setVariationId(transactionId, variationId) { error ->
    if (error == null) {
        // success
    }
}
```

Parámetros:

| Parámetro     | Presencia | Descripción                                                  |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | requerido | Identificador de cadena (`purchase.getOrderId`) de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId   | requerido | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
<TabItem value="java" label="Java" default>

```java showLineNumbers
Adapty.restorePurchases(result -> {
    if (result instanceof AdaptyResult.Success) {
        // success
    }
});

Adapty.setVariationId(transactionId, variationId, error -> {
    if (error == null) {
        // success
    }
});
```

Parámetros:

| Parámetro     | Presencia | Descripción                                                  |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | requerido | Identificador de cadena (`purchase.getOrderId`) de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId   | requerido | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
</Tabs>
</TabItem>
<TabItem value="old2" label="Adapty SDK up to 3.2.x (legacy)" default> 

**Reporte de transacciones**

Usa `restorePurchases` para reportar una transacción a Adapty en Observer Mode, tal como se explica en la página [Restaurar compras en el código móvil](android-restore-purchase).

:::warning
**¡No omitas el reporte de transacciones!**
Si no llamas a `restorePurchases`, Adapty no reconocerá la transacción, no aparecerá en los análisis y no se enviará a las integraciones.
::: 

**Asociar paywalls a transacciones**

El SDK de Adapty no puede determinar el origen de las compras, ya que eres tú quien las procesa. Por lo tanto, si tienes intención de usar paywalls y/o pruebas A/B en Observer Mode, debes asociar la transacción proveniente de tu app store con el paywall correspondiente en el código de tu app móvil. Es importante hacerlo bien antes de publicar tu app, de lo contrario generará errores en los análisis.

<Tabs groupId="current-os" queryString>
<TabItem value="kotlin" label="Kotlin" default>

```kotlin 
Adapty.setVariationId(transactionId, variationId) { error ->
    if (error == null) {
        // success
    }
}
```

Parámetros de la solicitud:

| Parámetro     | Presencia | Descripción                                                  |
| ------------- | --------- | ------------------------------------------------------------ |
| transactionId | requerido | Identificador de cadena (purchase.getOrderId de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId   | requerido | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
<TabItem value="java" label="Java" default>

```java 
Adapty.setVariationId(transactionId, variationId, error -> {
    if (error == null) {
        // success
    }
});
```

| Parámetro                                         | Presencia | Descripción                                                  |
| ------------------------------------------------- | --------- | ------------------------------------------------------------ |
| transactionId                                     | requerido | Identificador de cadena (purchase.getOrderId de la compra, donde la compra es una instancia de la clase [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) de la biblioteca de facturación. |
| variationId                                       | requerido | El identificador de cadena de la variante. Puedes obtenerlo usando la propiedad `variationId` del objeto [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

</TabItem>
</Tabs>
</TabItem> 
</Tabs>