Пример #1
0
        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);
                }
            }
        }