void IStore.LoadProducts(Action onComplete, Action onFailure) { PlayFabStore.LoadProducts( () => { ModifyProducts(); onComplete(); }, onFailure); void ModifyProducts() { foreach (PlayFabProduct product in PlayFabStore.Products) { product.Purchase = Purchase; } } }
void IStore.LoadProducts(Action onComplete, Action onFailure) { var purchasingModule = StandardPurchasingModule.Instance(); var builder = ConfigurationBuilder.Instance(purchasingModule); var appleConfiguration = builder.Configure <IAppleConfiguration>(); if (!appleConfiguration.canMakePayments) { var exception = new NotSupportedException($"\"{nameof(IAppleConfiguration)}.{nameof(IAppleConfiguration.canMakePayments)}\" is false!"); ExceptionHandler.Process(exception); onFailure(); return; } foreach (var(ProductId, ProductType) in ProductMap) { builder.AddProduct(ProductId, ProductType); } _storeListener = new StoreListener(); _storeListener.Initialized += OnInitialized; _storeListener.InitializeFailed += OnInitializeFailed; UnityPurchasing.Initialize(_storeListener, builder); void OnInitialized(object sender, InitializedEventArgs eventArgs) { _storeListener.Initialized -= OnInitialized; _storeListener.InitializeFailed -= OnInitializeFailed; _appleExtensions = eventArgs.AppleExtensions; _storeController = eventArgs.StoreController; PlayFabStore.LoadProducts( () => { ModifyProducts(); onComplete(); }, onFailure); } void OnInitializeFailed(object sender, InitializeFailedEventArgs eventArgs) { _storeListener.Initialized -= OnInitialized; _storeListener.InitializeFailed -= OnInitializeFailed; var exception = new Exception($"UnityPurchasing initialization failure! InitializationFailureReason: \"{eventArgs.InitializationFailureReason}\""); ExceptionHandler.Process(exception); onFailure(); } void ModifyProducts() { foreach (PlayFabProduct product in PlayFabStore.Products) { product.Purchase = Purchase; var itemId = PlayFabStore.GetItemId(((IProduct)product).Id); if (string.IsNullOrWhiteSpace(itemId)) { continue; } var uProduct = FindProduct(itemId); if (uProduct == null) { continue; } var currencyId = PlayFabStore.GetCurrencyId("RM"); var metadata = uProduct.metadata; var price = Convert.ToUInt32(metadata.localizedPrice * 100m); product.SetPrice(currencyId, price, metadata.isoCurrencyCode); } } }