---
title: "在 Android SDK 的观察者模式下报告交易"
description: "在 Android SDK 的 Adapty 观察者模式下报告购买交易，以获取用户洞察和收入追踪。"
---

<Tabs groupId="sdk-version" queryString> 

<TabItem value="current" label="Adapty SDK v3.4+（当前版本）" default> 
在观察者模式下，Adapty SDK 无法自动追踪通过您现有购买系统完成的购买。您需要从应用商店手动报告交易。在发布应用之前务必完成此设置，以避免分析数据出现错误。

使用 `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) 类的实例。 |
| variationId     | 可选     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

</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) 类的实例。 |
| variationId     | 可选     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

</TabItem>
</Tabs>
</TabItem>
<TabItem value="old" label="Adapty SDK 3.3.x（旧版）" default> 

在观察者模式下，Adapty SDK 无法自动追踪通过您现有购买系统完成的购买。您需要从应用商店报告交易或恢复购买。在发布应用之前务必完成此设置，以避免分析数据出现错误。

使用 `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) 类的实例。 |
| variationId   | 必填     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

</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) 类的实例。 |
| variationId   | 必填     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

</TabItem>
</Tabs>
</TabItem>
<TabItem value="old2" label="Adapty SDK 3.2.x 及以下版本（旧版）" default> 

**报告交易**

使用 `restorePurchases` 在观察者模式下向 Adapty 报告交易，详情请参阅[在移动端代码中恢复购买](android-restore-purchase)页面。

:::warning
**请勿跳过交易报告！**
如果您不调用 `restorePurchases`，Adapty 将无法识别该交易，它不会出现在分析数据中，也不会被发送到集成服务。
::: 

**将付费墙与交易关联**

由于您负责处理购买，Adapty SDK 无法确定购买来源。因此，如果您打算在观察者模式下使用付费墙和/或 A/B 测试，则需要在移动应用代码中将来自应用商店的交易与相应的付费墙关联起来。在发布应用之前务必正确完成此设置，否则将导致分析数据出现错误。

<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) 类的实例。 |
| variationId   | 必填     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

</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) 类的实例。 |
| variationId   | 必填     | 实验变体的字符串标识符。您可以通过 [AdaptyPaywall](https://android.adapty.io/adapty/com.adapty.models/-adapty-paywall/) 对象的 `variationId` 属性获取。 |

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