API/Autodoc/Files/DataConverter.cs.en.md
Namespaces
| Name |
|---|
Classes
| Name | |
|---|---|
| class | RuStore::PayClient::Internal::DataConverter |
Source code
using UnityEngine;
using System;
using System.Collections.Generic;
namespace RuStore.PayClient.Internal {
public static partial class DataConverter {
public static Product ConvertProduct(AndroidJavaObject obj) {
if (obj == null) return null;
var amountLabel = obj.Get<AndroidJavaObject>("amountLabel").Get<string>("value");
var currency = obj.Get<AndroidJavaObject>("currency").Get<string>("value");
var description = obj.Get<AndroidJavaObject>("description")?.Get<string>("value");
var imageUrl = obj.Get<AndroidJavaObject>("imageUrl").Get<string>("value");
var price = obj.Get<AndroidJavaObject>("price")?.Get<int>("value");
var productId = obj.Get<AndroidJavaObject>("productId").Get<string>("value");
var promoImageUrl = obj.Get<AndroidJavaObject>("promoImageUrl")?.Get<string>("value");
var subscriptionInfo = ConvertSubscriptionInfo(obj.Get<AndroidJavaObject>("subscriptionInfo"));
var title = obj.Get<AndroidJavaObject>("title").Get<string>("value");
var type = (ProductType)ConvertEnum<ProductType>(obj.Get<AndroidJavaObject>("type"));
var product = new Product(
new AmountLabel(amountLabel),
new Currency(currency),
description != null ? new Description(description) : null,
new Url(imageUrl),
price != null ? new Price((int)price) : null,
new ProductId(productId),
promoImageUrl != null ? new Url(imageUrl) : null,
subscriptionInfo,
new Title(title),
type
);
return product;
}
private static SubscriptionInfo ConvertSubscriptionInfo(AndroidJavaObject obj) {
if (obj == null) return null;
var periods = obj.Get<AndroidJavaObject>("periods");
int size = periods.Call<int>("size");
var result = new List<SubscriptionPeriod>(size);
for (int i = 0; i < size; i++) {
var period = periods.Call<AndroidJavaObject>("get", i);
result.Add(ConvertSubscriptionPeriod(period));
}
return new SubscriptionInfo(result);
}
private static SubscriptionPeriod ConvertSubscriptionPeriod(AndroidJavaObject obj) {
if (obj == null) return null;
using (var javaClass = obj.Call<AndroidJavaObject>("getClass")) {
var className = javaClass.Call<string>("getName").Split('.');
var type = className[className.Length - 1];
string duration, currency;
int price;
switch (type) {
case "TrialPeriod":
duration = obj.Get<string>("duration");
currency = obj.Get<string>("currency");
price = obj.Get<int>("price");
return new TrialPeriod(duration, currency, price);
case "PromoPeriod":
duration = obj.Get<string>("duration");
currency = obj.Get<string>("currency");
price = obj.Get<int>("price");
return new PromoPeriod(duration, currency, price);
case "MainPeriod":
duration = obj.Get<string>("duration");
currency = obj.Get<string>("currency");
price = obj.Get<int>("price");
return new MainPeriod(duration, currency, price);
case "GracePeriod":
duration = obj.Get<string>("duration");
return new GracePeriod(duration);
case "HoldPeriod":
duration = obj.Get<string>("duration");
return new HoldPeriod(duration);
default:
return null;
}
}
}
public static IPurchase ConvertPurchase(AndroidJavaObject obj) {
if (obj == null) return null;
using (var javaClass = obj.Call<AndroidJavaObject>("getClass")) {
var className = javaClass.Call<string>("getName").Split('.');
var type = className[className.Length - 1];
switch (type) {
case "ProductPurchase":
return ConvertProductPurchase(obj);
case "SubscriptionPurchase":
return ConvertSubscriptionPurchase(obj);
default:
return null;
}
}
}
private static ProductPurchase ConvertProductPurchase(AndroidJavaObject obj) {
var amountLabel = obj.Get<AndroidJavaObject>("amountLabel").Get<string>("value");
var currency = obj.Get<AndroidJavaObject>("currency").Get<string>("value");
var description = obj.Get<AndroidJavaObject>("description").Get<string>("value");
var developerPayload = obj.Get<AndroidJavaObject>("developerPayload")?.Get<string>("value");
var invoiceId = obj.Get<AndroidJavaObject>("invoiceId").Get<string>("value");
var orderId = obj.Get<AndroidJavaObject>("orderId")?.Get<string>("value");
var price = obj.Get<AndroidJavaObject>("price").Get<int>("value");
var productId = obj.Get<AndroidJavaObject>("productId").Get<string>("value");
var productType = (ProductType)ConvertEnum<ProductType>(obj.Get<AndroidJavaObject>("productType"));
var purchaseId = obj.Get<AndroidJavaObject>("purchaseId").Get<string>("value");
var purchaseTime = ConvertDateTime(obj.Get<AndroidJavaObject>("purchaseTime"));
var purchaseType = (PurchaseType)ConvertEnum<PurchaseType>(obj.Get<AndroidJavaObject>("purchaseType"));
var quantity = obj.Get<AndroidJavaObject>("quantity").Get<int>("value");
var status = (ProductPurchaseStatus)ConvertEnum<ProductPurchaseStatus>(obj.Get<AndroidJavaObject>("status"));
var sandbox = obj.Get<bool>("sandbox");
var purchase = new ProductPurchase(
new AmountLabel(amountLabel),
new Currency(currency),
new Description(description),
developerPayload != null ? new DeveloperPayload(developerPayload) : null,
new InvoiceId(invoiceId),
orderId != null ? new OrderId(orderId) : null,
new Price(price),
new ProductId(productId),
productType,
new PurchaseId(purchaseId),
purchaseTime,
purchaseType,
new Quantity(quantity),
status,
sandbox
);
return purchase;
}
private static SubscriptionPurchase ConvertSubscriptionPurchase(AndroidJavaObject obj) {
var purchaseId = obj.Get<AndroidJavaObject>("purchaseId").Get<string>("value");
var invoiceId = obj.Get<AndroidJavaObject>("invoiceId").Get<string>("value");
var orderId = obj.Get<AndroidJavaObject>("orderId")?.Get<string>("value");
var purchaseType = (PurchaseType)ConvertEnum<PurchaseType>(obj.Get<AndroidJavaObject>("purchaseType"));
var status = (SubscriptionPurchaseStatus)ConvertEnum<SubscriptionPurchaseStatus>(obj.Get<AndroidJavaObject>("status"));
var description = obj.Get<AndroidJavaObject>("description").Get<string>("value");
var purchaseTime = ConvertDateTime(obj.Get<AndroidJavaObject>("purchaseTime"));
var price = obj.Get<AndroidJavaObject>("price").Get<int>("value");
var amountLabel = obj.Get<AndroidJavaObject>("amountLabel").Get<string>("value");
var currency = obj.Get<AndroidJavaObject>("currency").Get<string>("value");
var developerPayload = obj.Get<AndroidJavaObject>("developerPayload")?.Get<string>("value");
var sandbox = obj.Get<bool>("sandbox");
var productId = obj.Get<AndroidJavaObject>("productId").Get<string>("value");
var expirationDate = ConvertDateTime(obj.Get<AndroidJavaObject>("expirationDate"));
var gracePeriodEnabled = obj.Get<bool>("gracePeriodEnabled");
var purchase = new SubscriptionPurchase(
new PurchaseId(purchaseId),
new InvoiceId(invoiceId),
orderId != null ? new OrderId(orderId) : null,
purchaseType,
status,
new Description(description),
purchaseTime,
new Price(price),
new AmountLabel(amountLabel),
new Currency(currency),
developerPayload != null ? new DeveloperPayload(developerPayload) : null,
sandbox,
new ProductId(productId),
expirationDate,
gracePeriodEnabled
);
return purchase;
}
public static ProductPurchaseResult ConvertProductPurchaseResult(AndroidJavaObject obj) {
var invoiceId = obj.Get<AndroidJavaObject>("invoiceId").Get<string>("value");
var orderId = obj.Get<AndroidJavaObject>("orderId")?.Get<string>("value");
var productId = obj.Get<AndroidJavaObject>("productId").Get<string>("value");
var productType = (ProductType)ConvertEnum<ProductType>(obj.Get<AndroidJavaObject>("productType"));
var purchaseId = obj.Get<AndroidJavaObject>("purchaseId").Get<string>("value");
var purchaseType = (PurchaseType)ConvertEnum<PurchaseType>(obj.Get<AndroidJavaObject>("purchaseType"));
var quantity = obj.Get<AndroidJavaObject>("quantity").Get<int>("value");
var sandbox = obj.Get<bool>("sandbox");
return new ProductPurchaseResult(
new InvoiceId(invoiceId),
orderId != null ? new OrderId(orderId) : null,
new ProductId(productId),
productType,
new PurchaseId(purchaseId),
purchaseType,
new Quantity(quantity),
sandbox
);
}
public static T? ConvertEnum<T>(AndroidJavaObject obj) where T : struct {
Type type = typeof(T);
string strValue = obj?.Call<string>("toString");
object enumValue;
return Enum.TryParse(type, strValue, true, out enumValue) ? (T?)enumValue : null;
}
public static T ConvertEnumStrict<T>(AndroidJavaObject obj) where T : struct {
if (obj == null) throw new ArgumentNullException(nameof(obj));
string strValue = obj.Call<string>("toString");
return (T)Enum.Parse(typeof(T), strValue, true);
}
public static DateTime? ConvertDateTime(AndroidJavaObject obj) {
DateTime? dateTime = null;
if (obj != null) {
long time = obj.Call<long>("getTime");
dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(time);
}
return dateTime;
}
public static (PurchaseId, InvoiceId) ConvertPurchaseIdInvoiceIdPair(
AndroidJavaObject purchaseIdObject,
AndroidJavaObject invoiceIdObject
) {
var purchaseIdValue = purchaseIdObject?.Get<string>("value");
var invoiceIdValue = invoiceIdObject?.Get<string>("value");
var purchaseId = purchaseIdValue != null
? new PurchaseId(purchaseIdValue)
: null;
var invoiceId = invoiceIdValue != null
? new InvoiceId(invoiceIdValue)
: null;
return (purchaseId, invoiceId);
}
}
}
- Страницы
- AmountLabel.cs.en
- AmountLabel.cs
- AppUserEmail.cs.en
- AppUserEmail.cs
- AppUserId.cs.en
- AppUserId.cs
- ApplicationPurchaseStatus.cs.en
- ApplicationPurchaseStatus.cs
- BaseFields.cs.en
- BaseFields.cs
- BaseValue.cs.en
- BaseValue.cs
- Callbacks.en
- Callbacks
- CancelTwoStepPurchase.cs.en
- CancelTwoStepPurchase.cs
- CancelTwoStepPurchaseResponseListener.cs.en
- CancelTwoStepPurchaseResponseListener.cs
- ConfirmTwoStepPurchase.cs.en
- ConfirmTwoStepPurchase.cs
- ConfirmTwoStepPurchaseResponseListener.cs.en
- ConfirmTwoStepPurchaseResponseListener.cs
- Currency.cs.en
- Currency.cs
- Data.en
- Data
- DataConverter.cs.en
- DataConverter.cs
- Description.cs.en
- Description.cs
- DeveloperPayload.cs.en
- DeveloperPayload.cs
- GetProducts.cs.en
- GetProducts.cs
- GetPurchase.cs.en
- GetPurchase.cs
- GetPurchaseAvailability.cs.en
- GetPurchaseAvailability.cs
- GetPurchases.cs.en
- GetPurchases.cs
- GetPurchases_with_params.cs.en
- GetPurchases_with_params.cs
- GetUserAuthorizationStatus.cs.en
- GetUserAuthorizationStatus.cs
- IPurchase.cs.en
- IPurchase.cs
- IPurchaseStatus.cs.en
- IPurchaseStatus.cs
- InvoiceId.cs.en
- InvoiceId.cs
- IsRuStoreInstalled.cs.en
- IsRuStoreInstalled.cs
- Java.en
- Java
- Model.en
- Model
- OrderId.cs.en
- OrderId.cs
- PaymentExceptionConverter.cs.en
- PaymentExceptionConverter.cs
- PreferredPurchaseType.cs.en
- PreferredPurchaseType.cs
- Price.cs.en
- Price.cs
- Product.cs.en
- Product.cs
- ProductId.cs.en
- ProductId.cs
- ProductPurchase.cs.en
- ProductPurchase.cs
- ProductPurchaseParams.cs.en
- ProductPurchaseParams.cs
- ProductPurchaseResult.cs.en
- ProductPurchaseResult.cs
- ProductPurchaseResultListener.cs.en
- ProductPurchaseResultListener.cs
- ProductPurchaseStatus.cs.en
- ProductPurchaseStatus.cs
- ProductType.cs.en
- ProductType.cs
- ProductsResponseListener.cs.en
- ProductsResponseListener.cs
- Purchase.cs.en
- Purchase.cs
- PurchaseAvailabilityListener.cs.en
- PurchaseAvailabilityListener.cs
- PurchaseAvailabilityResult.cs.en
- PurchaseAvailabilityResult.cs
- PurchaseEventListener.cs.en
- PurchaseEventListener.cs
- PurchaseId.cs.en
- PurchaseId.cs
- PurchaseResponseListener.cs.en
- PurchaseResponseListener.cs
- PurchaseTwoStep.cs.en
- PurchaseTwoStep.cs
- PurchaseTwoStep_with_theme.cs.en
- PurchaseTwoStep_with_theme.cs
- PurchaseType.cs.en
- PurchaseType.cs
- Purchase_with_theme.cs.en
- Purchase_with_theme.cs
- PurchasesResponseListener.cs.en
- PurchasesResponseListener.cs
- Quantity.cs.en
- Quantity.cs
- RuStoreDeeplinkActivityDefault.java.en
- RuStoreDeeplinkActivityDefault.java
- RuStorePayClient.cs.en
- RuStorePayClient.cs
- RuStorePayClient_Instance.cs.en
- RuStorePayClient_Instance.cs
- Runtime.en
- Runtime
- RustorePaymentException.cs.en
- RustorePaymentException.cs
- SdkTheme.cs.en
- SdkTheme.cs
- SubscriptionInfo.cs.en
- SubscriptionInfo.cs
- SubscriptionPeriod.cs.en
- SubscriptionPeriod.cs
- SubscriptionPurchase.cs.en
- SubscriptionPurchase.cs
- SubscriptionPurchaseStatus.cs.en
- SubscriptionPurchaseStatus.cs
- SubscriptionToken.cs.en
- SubscriptionToken.cs
- Title.cs.en
- Title.cs
- Url.cs.en
- Url.cs
- UserAuthorizationStatus.cs.en
- UserAuthorizationStatus.cs
- UserAuthorizationStatusListener.cs.en
- UserAuthorizationStatusListener.cs
- docs.en
- docs
- examples.en
- examples
- ru.rustore.pay.en
- ru.rustore.pay
- AmountLabel.cs.en
- AmountLabel.cs
- AppUserEmail.cs.en
- AppUserEmail.cs
- AppUserId.cs.en
- AppUserId.cs
- ApplicationPurchaseStatus.cs.en
- ApplicationPurchaseStatus.cs
- BaseFields.cs.en
- BaseFields.cs
- BaseValue.cs.en
- BaseValue.cs
- Callbacks.en
- Callbacks
- CancelTwoStepPurchase.cs.en
- CancelTwoStepPurchase.cs
- CancelTwoStepPurchaseResponseListener.cs.en
- CancelTwoStepPurchaseResponseListener.cs
- ConfirmTwoStepPurchase.cs.en
- ConfirmTwoStepPurchase.cs
- ConfirmTwoStepPurchaseResponseListener.cs.en
- ConfirmTwoStepPurchaseResponseListener.cs
- Currency.cs.en
- Currency.cs
- Data.en
- Data
- DataConverter.cs.en
- DataConverter.cs
- Description.cs.en
- Description.cs
- DeveloperPayload.cs.en
- DeveloperPayload.cs
- GetProducts.cs.en
- GetProducts.cs
- GetPurchase.cs.en
- GetPurchase.cs
- GetPurchaseAvailability.cs.en
- GetPurchaseAvailability.cs
- GetPurchases.cs.en
- GetPurchases.cs
- GetPurchases_with_params.cs.en
- GetPurchases_with_params.cs
- GetUserAuthorizationStatus.cs.en
- GetUserAuthorizationStatus.cs
- IPurchase.cs.en
- IPurchase.cs
- IPurchaseStatus.cs.en
- IPurchaseStatus.cs
- InvoiceId.cs.en
- InvoiceId.cs
- IsRuStoreInstalled.cs.en
- IsRuStoreInstalled.cs
- Java.en
- Java
- Model.en
- Model
- OrderId.cs.en
- OrderId.cs
- PaymentExceptionConverter.cs.en
- PaymentExceptionConverter.cs
- PreferredPurchaseType.cs.en
- PreferredPurchaseType.cs
- Price.cs.en
- Price.cs
- Product.cs.en
- Product.cs
- ProductId.cs.en
- ProductId.cs
- ProductPurchase.cs.en
- ProductPurchase.cs
- ProductPurchaseParams.cs.en
- ProductPurchaseParams.cs
- ProductPurchaseResult.cs.en
- ProductPurchaseResult.cs
- ProductPurchaseResultListener.cs.en
- ProductPurchaseResultListener.cs
- ProductPurchaseStatus.cs.en
- ProductPurchaseStatus.cs
- ProductType.cs.en
- ProductType.cs
- ProductsResponseListener.cs.en
- ProductsResponseListener.cs
- Purchase.cs.en
- Purchase.cs
- PurchaseAvailabilityListener.cs.en
- PurchaseAvailabilityListener.cs
- PurchaseAvailabilityResult.cs.en
- PurchaseAvailabilityResult.cs
- PurchaseEventListener.cs.en
- PurchaseEventListener.cs
- PurchaseId.cs.en
- PurchaseId.cs
- PurchaseResponseListener.cs.en
- PurchaseResponseListener.cs
- PurchaseTwoStep.cs.en
- PurchaseTwoStep.cs
- PurchaseTwoStep_with_theme.cs.en
- PurchaseTwoStep_with_theme.cs
- PurchaseType.cs.en
- PurchaseType.cs
- Purchase_with_theme.cs.en
- Purchase_with_theme.cs
- PurchasesResponseListener.cs.en
- PurchasesResponseListener.cs
- Quantity.cs.en
- Quantity.cs
- RuStoreDeeplinkActivityDefault.java.en
- RuStoreDeeplinkActivityDefault.java
- RuStorePayClient.cs.en
- RuStorePayClient.cs
- RuStorePayClient_Instance.cs.en
- RuStorePayClient_Instance.cs
- Runtime.en
- Runtime
- RustorePaymentException.cs.en
- RustorePaymentException.cs
- SdkTheme.cs.en
- SdkTheme.cs
- SubscriptionInfo.cs.en
- SubscriptionInfo.cs
- SubscriptionPeriod.cs.en
- SubscriptionPeriod.cs
- SubscriptionPurchase.cs.en
- SubscriptionPurchase.cs
- SubscriptionPurchaseStatus.cs.en
- SubscriptionPurchaseStatus.cs
- SubscriptionToken.cs.en
- SubscriptionToken.cs
- Title.cs.en
- Title.cs
- Url.cs.en
- Url.cs
- UserAuthorizationStatus.cs.en
- UserAuthorizationStatus.cs
- UserAuthorizationStatusListener.cs.en
- UserAuthorizationStatusListener.cs
- docs.en
- docs
- examples.en
- examples
- ru.rustore.pay.en
- ru.rustore.pay