예제 #1
0
        /// <summary>
        /// Initialize Hermes IAP.
        /// </summary>
        /// <param name="iapBuilder">Builder data used to create instance.</param>
        /// <param name="onDone">Callback when initialization is done.</param>
        public void Init(IAPBuilder iapBuilder, Action <InitStatus> onDone)
        {
            if (IsInit)
            {
                onDone(initStatus);
                return;
            }

            if (onInitDone != null)
            {
                Debug.LogWarning("Hermes is already in the process of initializing.");
                return;
            }

            googleTangleData = iapBuilder.GoogleTangleData ?? null;
            IPurchasingModule    module  = Google.Play.Billing.GooglePlayStoreModule.Instance();
            ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);

            // Add Products to store.
            foreach (var key in iapBuilder.Products.Keys)
            {
                builder.AddProduct(key, iapBuilder.Products[key]);
            }

            deferPurchaseCompatible = iapBuilder.DeferredPurchaseCompatible;

            onInitDone = onDone;
            UnityPurchasing.Initialize(this, builder);
        }
예제 #2
0
        /// <summary>
        /// Initialize Hermes IAP.
        /// </summary>
        /// <param name="iapBuilder">Builder data used to create instance.</param>
        /// <param name="onDone">Callback when initialization is done.</param>
        public void Init(IAPBuilder iapBuilder, Action <InitStatus> onDone)
        {
            if (IsInit)
            {
                onDone(initStatus);
                return;
            }

            if (onInitDone != null)
            {
                Debug.LogError("Hermes is already in the process of initializing.");
                return;
            }

            if (iapBuilder.DeferredPurchaseCompatible)
            {
                Debug.LogError("Amazon store does not support deferred purchases");
                return;
            }

            googleTangleData = iapBuilder.GoogleTangleData ?? null;

            var module  = iapBuilder.PurchasingModule ?? StandardPurchasingModule.Instance();
            var builder = ConfigurationBuilder.Instance(module);

            // Add Products to store.
            foreach (var key in iapBuilder.Products.Keys)
            {
                builder.AddProduct(key, iapBuilder.Products[key]);
            }

            onInitDone = onDone;

            UnityPurchasing.Initialize(this, builder);
        }
예제 #3
0
        //*******************************************************************
        // INIT
        //*******************************************************************
        /// <summary>
        /// Initialize Hermes IAP.
        /// </summary>
        /// <param name="builder">Builder data used to create instance.</param>
        public async UniTask <InitStatus> InitAsync(IAPBuilder builder)
        {
            // initialize.
            Init(builder, _ => {});

            // wait until complete.
            await UniTask.WaitWhile(() => onInitDone != null);

            return(initStatus);
        }
예제 #4
0
        /// <summary>
        /// Initialize Hermes IAP.
        /// </summary>
        /// <param name="iapBuilder">Builder data used to create instance.</param>
        /// <param name="onDone">Callback when initialization is done.</param>
        public void Init(IAPBuilder iapBuilder, Action <InitStatus> onDone)
        {
            if (IsInit)
            {
                onDone(initStatus);
                return;
            }

            if (onInitDone != null)
            {
                Debug.LogWarning("Hermes is already in the process of initializing.");
                onDone(InitStatus.Initializing);
                return;
            }

            appleTangleData = iapBuilder.AppleTangleData ?? null;
            var module  = iapBuilder.PurchasingModule ?? StandardPurchasingModule.Instance();
            var builder = ConfigurationBuilder.Instance(module);

            appleConfig = builder.Configure <IAppleConfiguration>();

            // Verify if purchases are possible on this iOS device.
            if (!appleConfig.canMakePayments)
            {
                initStatus = InitStatus.PurchasingDisabled;
                onDone(InitStatus.PurchasingDisabled);
                return;
            }

            // Add Products to store.
            foreach (var key in iapBuilder.Products.Keys)
            {
                builder.AddProduct(key, iapBuilder.Products[key]);
            }

            deferPurchaseCompatible       = iapBuilder.DeferredPurchaseCompatible;
            promotionalPurchaseCompatible = iapBuilder.PromotionalPurchaseCompatible;

            if (promotionalPurchaseCompatible)
            {
                appleConfig.SetApplePromotionalPurchaseInterceptorCallback(OnPromotionalPurchase);
                onPromotionalPurchase = iapBuilder.OnPromotionalPurchase;
            }

            onInitDone = onDone;
            UnityPurchasing.Initialize(this, builder);
        }
예제 #5
0
 /// <summary>
 /// Support deferred purchases.
 /// Register to `OnPurchaseDeferred` callback to listen.
 /// </summary>
 public static IAPBuilder WithDeferredPurchaseCompatibility(this IAPBuilder builder)
 {
     builder.DeferredPurchaseCompatible = true;
     return(builder);
 }
예제 #6
0
 /// <summary>
 /// Add Purchasing module.
 /// </summary>
 public static IAPBuilder WithPurchasingModule(this IAPBuilder builder, IPurchasingModule module)
 {
     builder.PurchasingModule = module;
     return(builder);
 }
예제 #7
0
 /// <summary>
 /// Add Google tangle data for IAP receipt validation.
 /// </summary>
 public static IAPBuilder WithGoogleTangleData(this IAPBuilder builder, byte[] tangleData)
 {
     builder.GoogleTangleData = tangleData;
     return(builder);
 }
예제 #8
0
 /// <summary>
 /// Support IAP Promotions from AppStore.
 /// </summary>
 /// <param name="onPromotionalPurchase">Callback when promotional purchase requested. Return true to continue purchase.</param>
 public static IAPBuilder WithPromotionSupport(this IAPBuilder builder, Func <Product, UniTask <bool> > onPromotionalPurchase)
 {
     builder.PromotionalPurchaseCompatible = true;
     builder.OnPromotionalPurchase         = onPromotionalPurchase;
     return(builder);
 }