---
title: "Сообщение о транзакциях в режиме Observer Mode в Android SDK"
description: "Сообщайте о транзакциях покупок в Observer Mode Adapty для получения аналитики пользователей и отслеживания дохода в Android SDK."
---

<Tabs groupId="sdk-version" queryString> 

<TabItem value="current" label="Adapty SDK v3.4+ (current)" default> 
В режиме Observer Mode SDK Adapty не может самостоятельно отслеживать покупки, совершённые через вашу существующую систему. Вам нужно вручную сообщать о транзакциях из вашего стора. Важно настроить это **до** публикации приложения, чтобы избежать ошибок в аналитике.

Используйте `reportTransaction`, чтобы явно сообщать о каждой транзакции — так Adapty сможет её распознать.

:::warning

**Не пропускайте передачу транзакций!**
Если вы не вызываете `reportTransaction`, Adapty не распознает транзакцию: она не появится в аналитике и не будет отправлена в интеграции.

:::

Если вы используете пейволы Adapty, передавайте `variationId` при отчёте о транзакции. Это привязывает покупку к пейволу, который её инициировал, и обеспечивает точную аналитику пейволов.

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

Параметры:

| Параметр        | Обязательность | Описание                                                  |
| --------------- | -------------- | --------------------------------------------------------- |
| transactionInfo | обязательный   | TransactionInfo из покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId     | опциональный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [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
    }
});
```

Параметры:

| Параметр        | Обязательность | Описание                                                  |
| --------------- | -------------- | --------------------------------------------------------- |
| transactionInfo | обязательный   | TransactionInfo из покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId     | опциональный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [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> 

В режиме Observer Mode SDK Adapty не может самостоятельно отслеживать покупки, совершённые через вашу существующую систему. Вам нужно вручную сообщать о транзакциях из стора или восстанавливать их. Важно настроить это **до** публикации приложения, чтобы избежать ошибок в аналитике.

Используйте `restorePurchases`, чтобы передать информацию о транзакции в Adapty.

:::warning

**Не пропускайте восстановление покупок!**
Если вы не вызываете `restorePurchases`, Adapty не распознает транзакцию: она не появится в аналитике и не будет отправлена в интеграции.

:::

Если вы используете пейволы Adapty, свяжите транзакцию с пейволом, который привёл к покупке, с помощью метода `setVariationId`. Это обеспечивает корректную атрибуцию покупки к соответствующему пейволу для точной аналитики. Этот шаг нужен только при использовании пейволов 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
    }
}
```

Параметры:

| Параметр      | Обязательность | Описание                                                  |
| ------------- | -------------- | --------------------------------------------------------- |
| transactionId | обязательный   | Строковый идентификатор (`purchase.getOrderId`) покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId   | обязательный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [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
    }
});
```

Параметры:

| Параметр      | Обязательность | Описание                                                  |
| ------------- | -------------- | --------------------------------------------------------- |
| transactionId | обязательный   | Строковый идентификатор (`purchase.getOrderId`) покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId   | обязательный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [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> 

**Передача транзакций**

Используйте `restorePurchases`, чтобы сообщить о транзакции в Adapty в Observer Mode, как описано на странице [Восстановление покупок в мобильном коде](android-restore-purchase).

:::warning
**Не пропускайте передачу транзакций!**
Если вы не вызываете `restorePurchases`, Adapty не распознает транзакцию: она не появится в аналитике и не будет отправлена в интеграции.
::: 

**Привязка пейволов к транзакциям**

SDK Adapty не может определить источник покупок, так как их обрабатываете вы. Поэтому, если вы планируете использовать пейволы и/или A/B-тесты в режиме Observer Mode, вам нужно привязать транзакцию из стора к соответствующему пейволу в коде вашего приложения. Важно сделать это правильно до публикации приложения, иначе это приведёт к ошибкам в аналитике.

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

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

Параметры запроса:

| Параметр      | Обязательность | Описание                                                  |
| ------------- | -------------- | --------------------------------------------------------- |
| transactionId | обязательный   | Строковый идентификатор (purchase.getOrderId) покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId   | обязательный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [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
    }
});
```

| Параметр      | Обязательность | Описание                                                  |
| ------------- | -------------- | --------------------------------------------------------- |
| transactionId | обязательный   | Строковый идентификатор (purchase.getOrderId) покупки, где purchase — экземпляр класса [Purchase](https://developer.android.com/reference/com/android/billingclient/api/Purchase) библиотеки billing. |
| variationId   | обязательный   | Строковый идентификатор варианта. Его можно получить через свойство `variationId` объекта [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/). |

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