Получение списка продуктов

Для получения продуктов необходимо использовать метод RustoreBillingClient.products(ids):

RustoreBillingClient.products(ids).then((response) {
      for (final product in response.products) {
        print(product?.productId);
      }
}, onError: (err) {
      print("products err: $err");
});
  • ids: List<String?> — список идентификаторов продуктов.

Метод возвращает ProductsResponse:

class ProductsResponse {
  int code;
  String? errorMessage;
  String? errorDescription;
  String? traceId;
  List<Product?> products;
  List<DigitalShopGeneralError?> errors;
}
  • code — код ответа;
  • errorMessage — сообщение об ошибке;
  • errorDescription — описание ошибки;
  • traceId — идентификатор ошибки;
  • errors — список ошибок;
  • products — список продуктов.

Структура ошибки DigitalShopGeneralError:

class DigitalShopGeneralError {
  String? name;
  int? code;
  String? description
}
  • name — имя ошибки;
  • code — код ошибки;
  • description — описание ошибки.

Структура продукта Product:

class Product {
  String productId;
  String? productType;
  String productStatus;
  String? priceLabel;
  int? price;
  String? currency;
  String? language;
  String? title;
  String? description;
  String? imageUrl;
  String? promoImageUrl;
  Subscription? subscription;
}
  • productId — идентификатор продукта;
  • productType — тип продукта;
  • productStatus — статус продукта;
  • priceLable — отформатированная цена товара, включая валютный знак на языке [language];
  • price — цена в минимальных единицах (в копейках); 
  • currency — код валюты ISO 4217;
  • language — язык, указанный с помощью BCP 47 кодирования;
  • title — название продукта на языке [language];
  • description — описание продукта на языке [language];
  • imageUrl — ссылка на картинку;
  • promoImageUrl — ссылка на промо картинку;
  • subscription — описание подписки, возвращается только для продуктов с типом subscription.

Структура подписки Subscription:

class Subscription {
  SubscriptionPeriod? subscriptionPeriod;
  SubscriptionPeriod? freeTrialPeriod;
  SubscriptionPeriod? gracePeriod;
  String? introductoryPrice;
  String? introductoryPriceAmount;
  SubscriptionPeriod? introductoryPricePeriod;
}
  • subscriptionPeriod — период подписки; 
  • freeTrialPeriod — пробный период подписки;
  • gracePeriod — льготный период подписки;
  • introductoryPrice — отформатированная вступительная цена подписки, включая знак валюты, на языке product:language;
  • introductoryPriceAmount — вступительная цена в минимальных единицах валюты (в копейках);
  • introductoryPricePeriod — расчетный период вступительной цены. 

Структура периода подписки SubscriptionPeriod:

class SubscriptionPeriod {
  int years;
  int months;
  int days;
}
  • years — количество лет;
  • months — количество месяцев;
  • days — количество дней. 
Обновлено 20 июня 2023 г.
Was this information helpful?