---
title: "Модели Android SDK"
description: "Изучите модели SDK Adapty для оптимизации обработки встроенных покупок (Android)."
---

:::danger
Эта страница устарела. Актуальная документация по моделям SDK доступна по [этой ссылке](https://android.adapty.io/adapty/).
:::
## Интерфейсы \{#interfaces\}
### AdaptyOnboarding

Информация об [онбординге](onboardings).
| Название              | Тип                                                                | Описание                                            |
|-------------------|---------------------------------------------------------------------|--------------------------------------------------------|
| placement         | [AdaptyPlacement](#adaptyplacement)                                 | Плейсмент, настроенный в дашборде Adapty |
| hasViewConfiguration | boolean                                                           | Если true, можно получить объект представления и использовать его с библиотекой AdaptyUI |
| name              | string                                                              | Название онбординг-флоу                            |
| remoteConfig      | [AdaptyRemoteConfig](#adaptyremoteconfig) (optional)                | Remote Config, настроенный в дашборде Adapty для этого онбординга |
| variationId       | string                                                              | Идентификатор варианта, используемый для атрибуции покупок этому онбордингу |
### AdaptyPaywallProduct

Информация о [продукте.](https://swift.adapty.io/documentation/adapty/adaptypaywallproduct)
| Название | Тип | Описание |
|:-----------------------------------------|:------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| vendorProductId | string | Уникальный идентификатор продукта из App Store Connect или Google Play Console |
| adaptyProductId | string | Уникальный идентификатор продукта в Adapty |
| paywallVariationId | string | Совпадает со свойством variationId родительского AdaptyPaywall |
| paywallABTestName | string | Совпадает со свойством abTestName родительского AdaptyPaywall |
| paywallName | string | Совпадает со свойством name родительского AdaptyPaywall |
| localizedDescription | string | Описание продукта |
| localizedTitle | string | Название продукта |
| price | [AdaptyPaywallProduct.Price](#adaptypaywallproductprice) (optional) | Стоимость продукта в местной валюте |
| subscriptionDetails | [AdaptyProductSubscriptionDetails](#adaptyproductsubscriptiondetails) (optional) | Подробная информация о подписке (introductory offer, офферы и т.д.) |
| productDetails | ProductDetails | Системное представление продукта |
### AdaptyPaywallProduct.Price \{#adaptypaywall-product-price\}
| Название | Тип | Описание |
| :---------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| amount | number | Цена в числовом формате |
| currencyCode | string (optional) | Код валюты локали, используемой для форматирования цены продукта. ISO 4217 (USD, EUR) |
| currencySymbol | string (optional) | Символ валюты локали, используемой для форматирования цены продукта. ($, €) |
| localizedString | string (optional) | Язык цены определяется предпочитаемым языком, установленным на устройстве. На Android — отформатированная цена из Google Play в исходном виде |
### AdaptyProductSubscriptionDetails

| Параметр | Тип | Обязательный | Описание |
|----------|-----|:------------:|---------|
| `groupIdentifier` | String | ✅ | Идентификатор группы подписок, к которой принадлежит данная подписка. |
| `renewalType` | AdaptyProductRenewalType | ✅ | Тип возобновления подписки. |
| `subscriptionPeriod` | AdaptyProductSubscriptionPeriod | ✅ | Период подписки. |
| `localizedSubscriptionPeriod` | String? | ❌ | Локализованный период подписки. |
| `introductoryOffer` | AdaptyProductDiscount? | ❌ | Introductory offer продукта, если он доступен. |
| `promotionalOffer` | AdaptyProductDiscount? | ❌ | Promotional offer продукта, если он доступен. |
| `winBackOffer` | AdaptyProductDiscount? | ❌ | Win-back offer продукта, если он доступен. |
| `promotionalOfferId` | String? | ❌ | Идентификатор promotional offer, применяемого к данной транзакции. |
| Название                      | Тип                                                                                                                    | Описание                                                                                                                                                                       |
|:------------------------------|:------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| subscriptionPeriod            | [AdaptyProductSubscriptionPeriod](#adaptyproductsubscriptionperiod)                                                                   | Детали периода для продуктов-подписок. Будет null для iOS ниже версии 11.2 и macOS ниже версии 10.14.4.                                                                                                                              |
| localizedSubscriptionPeriod   | string (optional)                                                                                                       | Язык периода определяется предпочтительным языком, установленным на устройстве                                                                                                         |
| offer                         | [AdaptyProductDiscountPhase](#adaptyproductdiscountphase) (optional)                                                          | Предложение по подписке, если оно доступно для автовозобновляемой подписки                                                                                                                   |
| basePlanId                    | string                                                                                                                  | Идентификатор базового плана. Только для Android.                                                                                                                                    |
| renewalType                   | [AdaptyProductSubscriptionDetails.RenewalType](#adaptyproductsubscriptiondetailsrenewaltype)                                                                                                       | Тип возобновления. Только для Android.                                                                                                                       |
| offerId                       | string (optional)                                                                                                       | Скидочное предложение для данного basePlanId                                                                                                                                              |
| offerTags                     | array of strings                                                                                                        | Теги, заданные в Google Play Console для текущих basePlanId и offerId                                                                                                             |
| introductoryOfferEligibility  | [AdaptyEligibility](#adaptyeligibility)                                                                                 | Право пользователя на introductory offer                                                                                                                                     |
| introductoryOfferPhases       | array of [AdaptyProductDiscountPhase](#adaptyproductdiscountphase)                                                      | Список, который может содержать до двух фаз скидки: фазу бесплатного пробного периода и фазу вводной цены                                                                           |
### AdaptyProductSubscriptionPeriod

```typescript
type AdaptyProductSubscriptionPeriod = {
  unit: 'day' | 'week' | 'month' | 'year' | 'unknown';
  numberOfUnits: number;
};
```
| Name          | Type             | Description                                                                                                                      |
| :------------ | :--------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| numberOfUnits | number           | Количество единиц периода                                                                                                        |
| unit          | [AdaptyPeriodUnit](#adaptyperiodunit)    | Единица времени, в которой задан период подписки |
### AdaptyProductDiscountPhase

| Параметр | Тип | Описание |
|---|---|---|
| `price` | `AdaptyPrice` | Объект `AdaptyPrice`, содержащий сумму платежа для конкретного периода подписки. |
| `numberOfPeriods` | `int` | Количество периодов, в течение которых применяется скидка. |
| `paymentMode` | `AdaptyProductDiscount.PaymentMode` | Режим оплаты. |
| `subscriptionPeriod` | `AdaptySubscriptionPeriod` | Объект `AdaptySubscriptionPeriod`, содержащий информацию о периоде подписки. |
| `localizedSubscriptionPeriod` | `String?` | Локализованная строка периода подписки. |
| `localizedNumberOfPeriods` | `String?` | Локализованная строка количества периодов. |
| Название | Тип | Описание |
|:------------------------------|:------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| localizedNumberOfPeriods | string (optional) | Форматированное количество периодов скидки для локали пользователя |
| localizedSubscriptionPeriod | string (optional) | Форматированный период подписки скидки для локали пользователя |
| numberOfPeriods | number | Количество периодов, в течение которых доступна скидка на продукт |
| price | [AdaptyPaywallProduct.Price](#adaptypaywallproductprice) | Цена скидки на продукт в местной валюте |
| subscriptionPeriod | [AdaptyProductSubscriptionPeriod](#adaptyproductsubscriptionperiod) | Информация о периоде скидки на продукт |
| paymentMode | [AdaptyProductDiscountPhase.PaymentMode](#adaptyproductdiscountphasepaymentmode) | Способ оплаты для данной скидки на продукт |
### AdaptyPaywall

Информация о [пейволе.](https://swift.adapty.io/documentation/adapty/adaptypaywall)
| Название               | Тип                  | Описание                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|--------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| placement          | [AdaptyPlacement](#adaptyplacement)                      | Плейсмент, настроенный в дашборде Adapty                                                                                                                                                                                                                                                                                                                                                                                                                             |
| hasViewConfiguration | boolean               | Если true, можно получить объект представления и использовать его с библиотекой AdaptyUI                                                                                                                                                                                                                                                                                                                                                                                                                      |
| name               | string                | Название пейвола                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| remoteConfig       | [AdaptyRemoteConfig](#adaptyremoteconfig) (optional)     | Remote Config, настроенный в дашборде Adapty для данного пейвола                                                                                                                                                                                                                                                                                                                                                                                  |
| variationId        | string                | Идентификатор варианта, используемый для атрибуции покупок к данному пейволу                                                                                                                                                                                                                                                                                                                                                                             |
| vendorProductIds   | array of strings      | Массив идентификаторов связанных продуктов                                                                                                                                                                                                                                                                                                                                                                                                                     |
### AdaptyPlacement

```typescript
type AdaptyPlacement = {
  id: string;
  name: string;
  revision: number;
  variationId: string;
  abTestName: string | undefined;
  audienceVersionId: string | undefined;
};
```
| Имя          | Тип             | Описание                                                                                                                      |
| :------------ | :--------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| abTestName    | string           | Название родительского A/B-теста                                                                                              |
| audienceName  | string           | Название аудитории, к которой относится пейвол                                                                             |
| id            | string           | ID плейсмента, настроенного в дашборде Adapty                                                                     |
| revision      | number           | Текущая ревизия (версия) пейвола. Каждое изменение пейвола создаёт новую ревизию                               |
| isTrackingPurchases | boolean (optional) | Отслеживает ли плейсмент покупки                                                                                      |
| audienceVersionId | string | ID версии аудитории                                                                                                      |
### AdaptyRemoteConfig
| Name          | Type             | Description                                                                                                                      |
| :------------ | :--------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| locale        | string           | Идентификатор локали пейвола                                                                                                |
| dataMap       | object           | Пользовательский словарь, настроенный в дашборде Adapty для этого пейвола (аналог jsonString)                                                             |
| jsonString    | string           | Пользовательская JSON-строка, настроенная в дашборде Adapty для этого пейвола                                                |
### AdaptyProfile

Информация о [статусе подписки пользователя](https://swift.adapty.io/documentation/adapty/adaptyprofile) и истории покупок.
| Название             | Тип                                                                                      | Описание                                                                                                                                    |
| :--------------- | :---------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
| profileId        | string                                                                                    | Идентификатор пользователя в Adapty                                                                                                              |
| customerUserId   | string (optional)                                                                         | Идентификатор пользователя в вашей системе                                                                                                         |
| customAttributes | object                                                                                    | Ранее установленные пользовательские атрибуты через метод updateProfile                                                                           |
| accessLevels     | object\<string, [AdaptyProfile.AccessLevel](#adaptyprofileaccesslevel)>                   | Ключи — это идентификаторы уровней доступа, настроенные вами в дашборде Adapty. Значения — объекты AccessLevel. Может быть null, если у пользователя нет уровней доступа  |
| subscriptions    | object\<string, [AdaptyProfile.Subscription](#adaptyprofilesubscription)>                 | Ключи — это идентификаторы продуктов из App Store Connect. Значения — объекты Subscription. Может быть null, если у пользователя нет подписок        |
| nonSubscriptions | object\<string, array of [AdaptyProfile.NonSubscription](#adaptyprofilenonsubscription)>  | Ключи — это идентификаторы продуктов из App Store Connect. Значения — массивы объектов NonSubscription. Может быть null, если у пользователя нет покупок |
### AdaptyProfile.AccessLevel

Информация об [уровне доступа пользователя.](https://swift.adapty.io/documentation/adapty/adaptyprofile/accesslevel)
| Название | Тип | Описание |
|----|----|-----------|
| id | string | Уникальный идентификатор уровня доступа, заданный вами в дашборде Adapty |
| isActive | boolean | Активен ли уровень доступа. Как правило, достаточно проверить только это свойство, чтобы определить, есть ли у пользователя доступ к премиум-функциям |
| vendorProductId | string | Идентификатор продукта в App Store Connect, открывшего этот уровень доступа |
| store | string | Стор, в котором была совершена покупка, открывшая этот уровень доступа. Возможные значения: play_store, adapty |
| activatedAt | string (ISO 8601 datetime) | Время активации уровня доступа |
| renewedAt | string (ISO 8601 datetime) (optional) | Время последнего обновления уровня доступа |
| expiresAt | string (ISO 8601 datetime) (optional) | Время истечения уровня доступа (может быть в прошлом или равно null для пожизненного доступа) |
| isLifetime | boolean | Является ли уровень доступа бессрочным (без даты истечения). Если значение равно true, проверять expires_at не нужно — достаточно проверить isActive |
| activeIntroductoryOfferType | string (optional) | Тип активного introductory offer. Возможные значения: free_trial, pay_as_you_go, pay_up_front. Если значение не равно null, это означает, что предложение было применено в текущем периоде подписки |
| activePromotionalOfferType | string (optional) | Тип активного promotional offer. Возможные значения: free_trial, pay_as_you_go, pay_up_front. Если значение не равно null, это означает, что предложение было применено в текущем периоде подписки |
| activePromotionalOfferId | string (optional) | Идентификатор активного promotional offer |
| offerId | string (optional) | Идентификатор скидочного предложения в Google Play, открывшего этот уровень доступа |
| willRenew | boolean | Настроено ли автоматическое продление подписки |
| isInGracePeriod | boolean | Находится ли автоматически продлеваемая подписка в льготном периоде |
| unsubscribedAt | string (ISO 8601 datetime) (optional) | Время отмены автоматически продлеваемой подписки. Подписка может оставаться активной — это лишь означает, что автопродление отключено. Устанавливается в null, если пользователь повторно активирует подписку |
| billingIssueDetectedAt | string (ISO 8601 datetime) (optional) | Время обнаружения проблемы с оплатой. Подписка может оставаться активной. Устанавливается в null после успешного списания средств |
| startsAt | string (ISO 8601 datetime) (optional) | Время начала действия уровня доступа (может быть в будущем) |
| cancellationReason | string (optional) | Причина отмены подписки. Возможные значения: voluntarily_cancelled, billing_error, refund, price_increase, product_was_not_available, unknown |
| isRefund | boolean | Был ли произведён возврат средств за покупку |
### AdaptyProfile.Subscription

Информация о [подписке пользователя.](https://swift.adapty.io/documentation/adapty/adaptyprofile/subscription)
| Название | Тип | Описание |
|----|----|-----------|
| store | string | Стор, в котором совершена покупка. Возможные значения: play_store, adapty |
| vendorProductId | string | Идентификатор продукта в App Store Connect |
| vendorTransactionId | string | Идентификатор транзакции из App Store |
| vendorOriginalTransactionId | string | Идентификатор исходной транзакции из App Store. Для автовозобновляемых подписок это будет идентификатор первой транзакции в подписке |
| isActive | boolean | Активна ли подписка |
| isLifetime | boolean | Активна ли подписка бессрочно (без даты истечения). Если значение равно true, не нужно проверять expires_at — достаточно проверить isActive |
| activatedAt | string (ISO 8601 datetime) | Время активации подписки |
| renewedAt | string (ISO 8601 datetime) (optional) | Время последнего продления подписки |
| expiresAt | string (ISO 8601 datetime) (optional) | Время истечения подписки (может быть в прошлом или равно null для пожизненного доступа) |
| startsAt | string (ISO 8601 datetime) (optional) | Время начала действия подписки (может быть в будущем) |
| unsubscribedAt | string (ISO 8601 datetime) (optional) | Время отмены автовозобновляемой подписки. Подписка может оставаться активной — это лишь означает, что автопродление отключено. Принимает значение null, если пользователь повторно активирует подписку |
| billingIssueDetectedAt | string (ISO 8601 datetime) (optional) | Время обнаружения проблемы с оплатой (Apple не смогла списать средства с карты). Подписка может оставаться активной. Принимает значение null после успешного списания |
| isInGracePeriod | boolean | Находится ли автовозобновляемая подписка в льготном периоде |
| isSandbox | boolean | Была ли покупка совершена в среде песочницы |
| isRefund | boolean | Был ли совершён возврат средств за покупку |
| willRenew | boolean | Настроено ли автопродление для подписки |
| activeIntroductoryOfferType | string (optional) | Тип активного introductory offer. Возможные значения: free_trial, pay_as_you_go, pay_up_front. Если значение не равно null, это означает, что предложение было применено в текущем периоде подписки |
| activePromotionalOfferType | string (optional) | Тип активного promotional offer. Возможные значения: free_trial, pay_as_you_go, pay_up_front. Если значение не равно null, это означает, что предложение было применено в текущем периоде подписки |
| activePromotionalOfferId | string (optional) | Идентификатор активного promotional offer |
| offerId | string (optional) | Идентификатор скидочного предложения в Google Play, открывшего доступ к подписке |
| cancellationReason | string (optional) | Причина отмены подписки. Возможные значения: voluntarily_cancelled, billing_error, refund, price_increase, product_was_not_available, unknown |
### AdaptyProfile.NonSubscription

Информация о разовых покупках пользователя (не подписках).
| Название | Тип | Описание |
|----|----|-----------|
| purchaseId | string | Идентификатор покупки в Adapty. Используйте его, чтобы убедиться, что вы уже обработали эту покупку (например, при отслеживании разовых покупок) |
| store | string | Стор, в котором совершена покупка. Возможные значения: play_store, adapty |
| vendorProductId | string | Идентификатор продукта в App Store Connect |
| vendorTransactionId | string (optional) | Идентификатор транзакции из App Store |
| purchasedAt | string (ISO 8601 datetime) | Время совершения покупки |
| isSandbox | boolean | Была ли покупка совершена в среде песочницы |
| isRefund | boolean | Был ли произведён возврат средств за покупку |
| isConsumable | boolean | Должен ли продукт обрабатываться только один раз. Если `true`, Adapty API вернёт эту покупку только один раз |
### AdaptyAndroidSubscriptionUpdateParameters

Параметры для замены одной подписки на другую.

| Название | Тип | Описание |
| :-------------------- | :----- | :----------------------------------------------------------- |
| oldSubVendorProductId | string | Идентификатор продукта текущей подписки, которую нужно заменить |
| replacementMode | [AdaptyAndroidSubscriptionUpdateReplacementMode](#adaptyandroidsubscriptionupdatereplacementmode) | Режим пропорционального пересчёта при обновлении подписки |
### AdaptyPlacementFetchPolicy

Sealed class для политик получения плейсментов.

| Название | Тип | Описание |
|-------|------|-------------|
| ReloadRevalidatingCacheData | class | Всегда загружать данные с сервера |
| ReturnCacheDataElseLoad | class | Вернуть кешированные данные, если доступны, иначе загрузить с сервера |
| ReturnCacheDataIfNotExpiredElseLoad | class | Вернуть кешированные данные, если они не устарели, иначе загрузить с сервера |
### AdaptyEligibility

Перечисление, представляющее статус доступности предложения.

| Значение | Описание |
|-------|-------------|
| `ELIGIBLE` | Пользователь имеет право на получение предложения |
| `INELIGIBLE` | Пользователь не имеет права на получение предложения |
| `NOT_APPLICABLE` | Предложение неприменимо |
### AdaptyPeriodUnit

Перечисление, представляющее единицу времени для периодов подписки.

| Значение | Описание |
|-------|-------------|
| `DAY` | Единица периода — день |
| `WEEK` | Единица периода — неделя |
| `MONTH` | Единица периода — месяц |
| `YEAR` | Единица периода — год |
| `UNKNOWN` | Неизвестная единица периода |
### Перечисления \{#enums\}

#### OfferType \{#offertype\}
- `free_trial` - Бесплатный пробный период
- `pay_as_you_go` - Оплата по мере использования
- `pay_up_front` - Оплата вперёд

#### AdaptyAndroidSubscriptionUpdateReplacementMode \{#adaptyandroidsubscriptionupdatereplacementmode\}
- `immediate_with_time_proration` - Немедленно с пропорциональным пересчётом времени
- `immediate_and_charge_prorated_price` - Немедленно с пропорциональным списанием суммы
- `immediate_without_proration` - Немедленно без пересчёта
- `deferred` - Отложенно
- `immediate_and_charge_full_price` - Немедленно с полным списанием суммы
#### AdaptyProductDiscountPhase.PaymentMode
- `PAY_AS_YOU_GO` - Оплата по мере использования (регулярные платежи)
- `PAY_UPFRONT` - Оплата вперёд (единовременный платёж за несколько периодов)
- `FREE_TRIAL` - Бесплатный пробный период (без оплаты)
- `UNKNOWN` - Неизвестный способ оплаты

#### AdaptyProductSubscriptionDetails.RenewalType
- `AUTORENEWABLE` - Автопродлеваемая подписка
- `PREPAID` - Предоплаченная подписка