/// <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); }
/// <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); }
//******************************************************************* // 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); }
/// <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); }
/// <summary> /// Support deferred purchases. /// Register to `OnPurchaseDeferred` callback to listen. /// </summary> public static IAPBuilder WithDeferredPurchaseCompatibility(this IAPBuilder builder) { builder.DeferredPurchaseCompatible = true; return(builder); }
/// <summary> /// Add Purchasing module. /// </summary> public static IAPBuilder WithPurchasingModule(this IAPBuilder builder, IPurchasingModule module) { builder.PurchasingModule = module; return(builder); }
/// <summary> /// Add Google tangle data for IAP receipt validation. /// </summary> public static IAPBuilder WithGoogleTangleData(this IAPBuilder builder, byte[] tangleData) { builder.GoogleTangleData = tangleData; return(builder); }
/// <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); }