public static List <NonConsumableItem> GetNonConsumableItems() { StoreUtils.LogDebug(TAG, "Trying to fetch noncons"); List <NonConsumableItem> nonConsumableItems = new List <NonConsumableItem>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniNonConsumableItems = new AndroidJavaClass("com.soomla.unity.StoreInfo").CallStatic <AndroidJavaObject>("getNonConsumableItems")) { for (int i = 0; i < jniNonConsumableItems.Call <int>("size"); i++) { using (AndroidJavaObject jniNon = jniNonConsumableItems.Call <AndroidJavaObject>("get", i)) { nonConsumableItems.Add(new NonConsumableItem(jniNon)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetNonConsumableItems(out p); IOS_ErrorCodes.CheckAndThrowException(err); string nonConsumableJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + nonConsumableJson); JSONObject nonConsArr = new JSONObject(nonConsumableJson); foreach (JSONObject obj in nonConsArr.list) { nonConsumableItems.Add(new NonConsumableItem(obj)); } #endif return(nonConsumableItems); }
public static List <VirtualCategory> GetVirtualCategories() { StoreUtils.LogDebug(TAG, "Trying to fetch categories"); List <VirtualCategory> virtualCategories = new List <VirtualCategory>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniVirtualCategories = new AndroidJavaClass("com.soomla.unity.StoreInfo").CallStatic <AndroidJavaObject>("getCategories")) { for (int i = 0; i < jniVirtualCategories.Call <int>("size"); i++) { using (AndroidJavaObject jniCat = jniVirtualCategories.Call <AndroidJavaObject>("get", i)) { virtualCategories.Add(new VirtualCategory(jniCat)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualCategories(out p); IOS_ErrorCodes.CheckAndThrowException(err); string categoriesJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + categoriesJson); JSONObject categoriesArr = new JSONObject(categoriesJson); foreach (JSONObject obj in categoriesArr.list) { virtualCategories.Add(new VirtualCategory(obj)); } #endif return(virtualCategories); }
public static List <UpgradeVG> GetUpgradesForVirtualGood(string goodItemId) { StoreUtils.LogDebug(TAG, "Trying to fetch upgrades for " + goodItemId); List <UpgradeVG> vgus = new List <UpgradeVG>(); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniUpgradeVGs = new AndroidJavaClass("com.soomla.unity.StoreInfo").CallStatic <AndroidJavaObject>("getGoodUpgrades")) { for (int i = 0; i < jniUpgradeVGs.Call <int>("size"); i++) { using (AndroidJavaObject jnivgu = jniUpgradeVGs.Call <AndroidJavaObject>("get", i)) { vgus.Add(new UpgradeVG(jnivgu)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS IntPtr p = IntPtr.Zero; int err = storeInfo_GetUpgradesForVirtualGood(goodItemId, out p); IOS_ErrorCodes.CheckAndThrowException(err); string upgradesJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + upgradesJson); JSONObject upgradesArr = new JSONObject(upgradesJson); foreach (JSONObject obj in upgradesArr.list) { vgus.Add(new UpgradeVG(obj)); } #endif return(vgus); }
protected PurchasableVirtualItem(AndroidJavaObject jniVirtualItem) : base(jniVirtualItem) { StoreUtils.LogDebug(TAG, "Trying to create PurchasableVirtualItem with itemId: " + jniVirtualItem.Call <string>("getItemId")); using (AndroidJavaObject jniPurchaseType = jniVirtualItem.Call <AndroidJavaObject>("getPurchaseType")) { System.IntPtr cls = AndroidJNI.FindClass("com/soomla/store/purchaseTypes/PurchaseWithMarket"); if (AndroidJNI.IsInstanceOf(jniPurchaseType.GetRawObject(), cls)) { using (AndroidJavaObject jniMarketItem = jniPurchaseType.Call <AndroidJavaObject>("getGoogleMarketItem")) { PurchaseType = new PurchaseWithMarket(jniMarketItem.Call <string>("getProductId"), jniMarketItem.Call <double>("getPrice")); } } else { cls = AndroidJNI.FindClass("com/soomla/store/purchaseTypes/PurchaseWithVirtualItem"); if (AndroidJNI.IsInstanceOf(jniPurchaseType.GetRawObject(), cls)) { string itemId = jniPurchaseType.Call <string>("getTargetItemId"); int amount = jniPurchaseType.Call <int>("getAmount"); PurchaseType = new PurchaseWithVirtualItem(itemId, amount); } else { StoreUtils.LogError(TAG, "Couldn't determine what type of class is the given purchaseType."); } } } }
public static List <VirtualCurrencyPack> GetVirtualCurrencyPacks() { StoreUtils.LogDebug(TAG, "Trying to fetch packs"); List <VirtualCurrencyPack> vcps = new List <VirtualCurrencyPack>(); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniVirtualCurrencyPacks = new AndroidJavaClass("com.soomla.store.data.StoreInfo").CallStatic <AndroidJavaObject>("getCurrencyPacks")) { for (int i = 0; i < jniVirtualCurrencyPacks.Call <int>("size"); i++) { using (AndroidJavaObject jnivcp = jniVirtualCurrencyPacks.Call <AndroidJavaObject>("get", i)) { vcps.Add(new VirtualCurrencyPack(jnivcp)); } } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualCurrencyPacks(out p); IOS_ErrorCodes.CheckAndThrowException(err); string packsJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + packsJson); JSONObject packsArr = new JSONObject(packsJson); foreach (JSONObject obj in packsArr.list) { vcps.Add(new VirtualCurrencyPack(obj)); } #endif return(vcps); }
public static string GetGoodCurrentUpgrade(string goodItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling GetGoodCurrentUpgrade with: " + goodItemId); #if UNITY_ANDROID string currentItemId = ""; AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { currentItemId = AndroidJNIHandler.CallStatic <string>(jniStoreInventory, "getGoodCurrentUpgrade", goodItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(currentItemId); #elif UNITY_IOS IntPtr p = IntPtr.Zero; int err = storeInventory_GetGoodCurrentUpgrade(goodItemId, out p); IOS_ErrorCodes.CheckAndThrowException(err); string result = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); return(result); #endif } return(null); }
public static void BuyItem(string itemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling BuyItem with: " + itemId); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { AndroidJNIHandler.CallStaticVoid(jniStoreInventory, "buy", itemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS int err = storeInventory_BuyItem(itemId); IOS_ErrorCodes.CheckAndThrowException(err); #endif } #if UNITY_EDITOR var item = StoreInfo.GetPurchasableItemWithProductId(itemId) as PurchasableVirtualItem; if (UnityEngine.Random.value > 0.1) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Simulate purchase: " + itemId); Events.OnMarketPurchaseStarted(item); Events.OnMarketPurchase(item); } else { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Simulate failed purchase: " + itemId); Events.OnMarketPurchaseStarted(item); Events.OnMarketPurchaseCancelled(item); } #endif }
public static VirtualItem GetItemByItemId(string itemId) { StoreUtils.LogDebug(TAG, "Trying to fetch an item with itemId: " + itemId); #if UNITY_ANDROID VirtualItem vi = null; AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniVirtualItem = AndroidJNIHandler.CallStatic <AndroidJavaObject>( new AndroidJavaClass("com.soomla.unity.StoreInfo"), "getVirtualItem", itemId)) { vi = VirtualItem.factoryItemFromJNI(jniVirtualItem); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(vi); #elif UNITY_IOS IntPtr p = IntPtr.Zero; int err = storeInfo_GetItemByItemId(itemId, out p); IOS_ErrorCodes.CheckAndThrowException(err); string json = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + json); JSONObject obj = new JSONObject(json); return(VirtualItem.factoryItemFromJSONObject(obj)); #else return(null); #endif }
public void onMarketRefund(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onMarketRefund:" + message); PurchasableVirtualItem pvi = (PurchasableVirtualItem)StoreInfo.GetItemByItemId(message); Events.OnMarketPurchaseStarted(pvi); }
public void onRestoreTransactions(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onRestoreTransactions:" + message); bool success = Convert.ToBoolean(int.Parse(message)); Events.OnRestoreTransactions(success); }
public void onGoodUnequipped(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onVirtualGoodUnEquipped:" + message); EquippableVG vg = (EquippableVG)StoreInfo.GetItemByItemId(message); Events.OnGoodUnEquipped(vg); }
public void onGoodUpgrade(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onGoodUpgrade:" + message); string[] vars = Regex.Split(message, "#SOOM#"); VirtualGood vg = (VirtualGood)StoreInfo.GetItemByItemId(vars[0]); UpgradeVG vgu = (UpgradeVG)StoreInfo.GetItemByItemId(vars[1]); Events.OnGoodUpgrade(vg, vgu); }
public void onGoodBalanceChanged(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onGoodBalanceChanged:" + message); string[] vars = Regex.Split(message, "#SOOM#"); VirtualGood vg = (VirtualGood)StoreInfo.GetItemByItemId(vars[0]); int balance = int.Parse(vars[1]); int amountAdded = int.Parse(vars[2]); Events.OnGoodBalanceChanged(vg, balance, amountAdded); }
public static void UpgradeGood(string goodItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling UpgradeGood with: " + goodItemId); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { AndroidJNIHandler.CallStaticVoid(jniStoreInventory, "upgradeVirtualGood", goodItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR int err = storeInventory_UpgradeGood(goodItemId); IOS_ErrorCodes.CheckAndThrowException(err); #endif } }
public static void BuyItem(string itemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling BuyItem with: " + itemId); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { AndroidJNIHandler.CallStaticVoid(jniStoreInventory, "buy", itemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS int err = storeInventory_BuyItem(itemId); IOS_ErrorCodes.CheckAndThrowException(err); #endif } }
public static void RemoveNonConsumableItem(string nonConsItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling RemoveNonConsumableItem with: " + nonConsItemId); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { AndroidJNIHandler.CallStaticVoid(jniStoreInventory, "removeNonConsumableItem", nonConsItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR int err = storeInventory_RemoveNonConsumableItem(nonConsItemId); IOS_ErrorCodes.CheckAndThrowException(err); #endif } }
public static void TakeItem(string itemId, int amount) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling TakeItem with itedId: " + itemId + " and amount: " + amount); #if UNITY_ANDROID && !UNITY_EDITOR AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { AndroidJNIHandler.CallStaticVoid(jniStoreInventory, "takeVirtualItem", itemId, amount); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS && !UNITY_EDITOR int err = storeInventory_TakeItem(itemId, amount); IOS_ErrorCodes.CheckAndThrowException(err); #endif } }
public static VirtualItem factoryItemFromJNI(AndroidJavaObject jniItem) { StoreUtils.LogDebug(TAG, "Trying to create VirtualItem with itemId: " + jniItem.Call <string>("getItemId")); if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualGoods/SingleUseVG")) { return(new SingleUseVG(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualGoods/LifetimeVG")) { return(new LifetimeVG(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualGoods/EquippableVG")) { return(new EquippableVG(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualGoods/SingleUsePackVG")) { return(new SingleUsePackVG(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualGoods/UpgradeVG")) { return(new UpgradeVG(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualCurrencies/VirtualCurrency")) { return(new VirtualCurrency(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/virtualCurrencies/VirtualCurrencyPack")) { return(new VirtualCurrencyPack(jniItem)); } else if (isInstanceOf(jniItem, "com/soomla/store/domain/NonConsumableItem")) { return(new NonConsumableItem(jniItem)); } else { StoreUtils.LogError(TAG, "Couldn't determine what type of class is the given jniItem."); } return(null); }
public static List <VirtualGood> GetVirtualGoods() { StoreUtils.LogDebug(TAG, "Trying to fetch goods"); List <VirtualGood> virtualGoods = new List <VirtualGood>(); #if UNITY_EDITOR virtualGoods.AddRange(storeAssets.GetGoods()); #elif UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniVirtualGoods = new AndroidJavaClass("com.soomla.unity.StoreInfo").CallStatic <AndroidJavaObject>("getGoods")) { for (int i = 0; i < jniVirtualGoods.Call <int>("size"); i++) { AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniGood = jniVirtualGoods.Call <AndroidJavaObject>("get", i)) { virtualGoods.Add((VirtualGood)VirtualItem.factoryItemFromJNI(jniGood)); } AndroidJNI.PopLocalFrame(IntPtr.Zero); } } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS IntPtr p = IntPtr.Zero; int err = storeInfo_GetVirtualGoods(out p); IOS_ErrorCodes.CheckAndThrowException(err); string goodsJson = Marshal.PtrToStringAnsi(p); Marshal.FreeHGlobal(p); StoreUtils.LogDebug(TAG, "Got json: " + goodsJson); JSONObject goodsArr = new JSONObject(goodsJson); foreach (JSONObject obj in goodsArr.list) { virtualGoods.Add((VirtualGood)VirtualItem.factoryItemFromJSONObject(obj)); } #endif return(virtualGoods); }
public static bool IsVirtualGoodEquipped(string goodItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling IsVirtualGoodEquipped with: " + goodItemId); #if UNITY_ANDROID bool result = false; AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { result = AndroidJNIHandler.CallStatic <bool>(jniStoreInventory, "isVirtualGoodEquipped", goodItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(result); #elif UNITY_IOS bool result = false; int err = storeInventory_IsVirtualGoodEquipped(goodItemId, out result); IOS_ErrorCodes.CheckAndThrowException(err); return(result); #endif } return(false); }
public static int GetGoodUpgradeLevel(string goodItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling GetGoodUpgradeLevel with: " + goodItemId); #if UNITY_ANDROID int level = 0; AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { level = AndroidJNIHandler.CallStatic <int>(jniStoreInventory, "getGoodUpgradeLevel", goodItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(level); #elif UNITY_IOS int level = 0; int err = storeInventory_GetGoodUpgradeLevel(goodItemId, out level); IOS_ErrorCodes.CheckAndThrowException(err); return(level); #endif } return(0); }
/** NonConsumables **/ public static bool NonConsumableItemExists(string nonConsItemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling NonConsumableItemExists with: " + nonConsItemId); #if UNITY_ANDROID bool result = false; AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { result = AndroidJNIHandler.CallStatic <bool>(jniStoreInventory, "nonConsumableItemExists", nonConsItemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(result); #elif UNITY_IOS bool result = false; int err = storeInventory_NonConsumableItemExists(nonConsItemId, out result); IOS_ErrorCodes.CheckAndThrowException(err); return(result); #endif } return(false); }
/** Virtual Items **/ public static int GetItemBalance(string itemId) { if (!Application.isEditor) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Calling GetItemBalance with: " + itemId); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); int balance = 0; using (AndroidJavaClass jniStoreInventory = new AndroidJavaClass("com.soomla.store.StoreInventory")) { balance = AndroidJNIHandler.CallStatic <int>(jniStoreInventory, "getVirtualItemBalance", itemId); } AndroidJNI.PopLocalFrame(IntPtr.Zero); return(balance); #elif UNITY_IOS int balance = 0; int err = storeInventory_GetItemBalance(itemId, out balance); IOS_ErrorCodes.CheckAndThrowException(err); return(balance); #endif } return(0); }
// private static AndroidJavaObject jniUnityEventHandler = null; #endif public static void Initialize(IStoreAssets storeAssets) { if (string.IsNullOrEmpty(Soomla.GetInstance().customSecret) || string.IsNullOrEmpty(Soomla.GetInstance().soomSec)) { StoreUtils.LogError(TAG, "SOOMLA/UNITY MISSING customSecret or soomSec !!! Stopping here !!"); throw new ExitGUIException(); } if (Soomla.GetInstance().customSecret == Soomla.ONLY_ONCE_DEFAULT || Soomla.GetInstance().soomSec == Soomla.ONLY_ONCE_DEFAULT) { StoreUtils.LogError(TAG, "SOOMLA/UNITY You have to change customSecret and soomSec !!! Stopping here !!"); throw new ExitGUIException(); } //init SOOM_SEC #if UNITY_ANDROID if (string.IsNullOrEmpty(Soomla.GetInstance().androidPublicKey)) { StoreUtils.LogError(TAG, "SOOMLA/UNITY MISSING publickKey !!! Stopping here !!"); throw new ExitGUIException(); } if (Soomla.GetInstance().androidPublicKey == Soomla.AND_PUB_KEY_DEFAULT) { StoreUtils.LogError(TAG, "SOOMLA/UNITY You have to change android publicKey !!! Stopping here !!"); throw new ExitGUIException(); } AndroidJNI.PushLocalFrame(100); using (AndroidJavaClass jniStoreAssets = new AndroidJavaClass("com.soomla.unity.StoreAssets")) { jniStoreAssets.CallStatic("setSoomSec", Soomla.GetInstance().soomSec); } AndroidJNI.PopLocalFrame(IntPtr.Zero); #elif UNITY_IOS storeController_SetSoomSec(Soomla.GetInstance().soomSec); #endif StoreInfo.Initialize(storeAssets); #if UNITY_ANDROID AndroidJNI.PushLocalFrame(100); using (AndroidJavaObject jniStoreAssetsInstance = new AndroidJavaObject("com.soomla.unity.StoreAssets")) { using (AndroidJavaClass jniStoreControllerClass = new AndroidJavaClass("com.soomla.store.StoreController")) { jniStoreController = jniStoreControllerClass.CallStatic <AndroidJavaObject>("getInstance"); jniStoreController.Call("initialize", jniStoreAssetsInstance, Soomla.GetInstance().androidPublicKey, Soomla.GetInstance().customSecret); } } //init EventHandler using (AndroidJavaClass jniEventHandler = new AndroidJavaClass("com.soomla.unity.EventHandler")) { jniEventHandler.CallStatic("initialize"); } AndroidJNI.PopLocalFrame(IntPtr.Zero); // setting test mode on Android SetAndroidTestMode(Soomla.GetInstance().androidTestMode); #elif UNITY_IOS storeController_Init(Soomla.GetInstance().customSecret); #endif #if UNITY_EDITOR if (UnityEngine.Random.value < 0.1) { // make billing ddisabled StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Simulate disabled billing"); Events.OnBillingNotSupported(); } else { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY Simulate enabled billing"); Events.OnBillingSupported(); } #endif }
public void onClosingStore(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onClosingStore"); Events.OnClosingStore(); }
public void onBillingNotSupported(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onBillingNotSupported"); Events.OnBillingNotSupported(); }
public void onStoreControllerInitialized(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onStoreControllerInitialized"); Events.OnStoreControllerInitialized(); }
public void onUnexpectedErrorInStore(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onUnexpectedErrorInStore"); Events.OnUnexpectedErrorInStore(); }
public void onRestoreTransactionsStarted(string message) { StoreUtils.LogDebug(TAG, "SOOMLA/UNITY onRestoreTransactionsStarted"); Events.OnRestoreTransactionsStarted(); }
// private static AndroidJavaClass jniStoreInfo = new AndroidJavaClass("com.soomla.unity.StoreInfo"); #endif public static void Initialize(IStoreAssets storeAssets) { #if UNITY_EDITOR StoreInfo.storeAssets = storeAssets; #endif // StoreUtils.LogDebug(TAG, "Adding currency"); JSONObject currencies = new JSONObject(JSONObject.Type.ARRAY); foreach (VirtualCurrency vi in storeAssets.GetCurrencies()) { currencies.Add(vi.toJSONObject()); } // StoreUtils.LogDebug(TAG, "Adding packs"); JSONObject packs = new JSONObject(JSONObject.Type.ARRAY); foreach (VirtualCurrencyPack vi in storeAssets.GetCurrencyPacks()) { packs.Add(vi.toJSONObject()); } // StoreUtils.LogDebug(TAG, "Adding goods"); JSONObject suGoods = new JSONObject(JSONObject.Type.ARRAY); JSONObject ltGoods = new JSONObject(JSONObject.Type.ARRAY); JSONObject eqGoods = new JSONObject(JSONObject.Type.ARRAY); JSONObject upGoods = new JSONObject(JSONObject.Type.ARRAY); JSONObject paGoods = new JSONObject(JSONObject.Type.ARRAY); foreach (VirtualGood g in storeAssets.GetGoods()) { if (g is SingleUseVG) { suGoods.Add(g.toJSONObject()); } else if (g is EquippableVG) { eqGoods.Add(g.toJSONObject()); } else if (g is LifetimeVG) { ltGoods.Add(g.toJSONObject()); } else if (g is SingleUsePackVG) { paGoods.Add(g.toJSONObject()); } else if (g is UpgradeVG) { upGoods.Add(g.toJSONObject()); } } JSONObject goods = new JSONObject(JSONObject.Type.OBJECT); goods.AddField(JSONConsts.STORE_GOODS_SU, suGoods); goods.AddField(JSONConsts.STORE_GOODS_LT, ltGoods); goods.AddField(JSONConsts.STORE_GOODS_EQ, eqGoods); goods.AddField(JSONConsts.STORE_GOODS_UP, upGoods); goods.AddField(JSONConsts.STORE_GOODS_PA, paGoods); // StoreUtils.LogDebug(TAG, "Adding categories"); JSONObject categories = new JSONObject(JSONObject.Type.ARRAY); foreach (VirtualCategory vi in storeAssets.GetCategories()) { categories.Add(vi.toJSONObject()); } // StoreUtils.LogDebug(TAG, "Adding nonConsumables"); JSONObject nonConsumables = new JSONObject(JSONObject.Type.ARRAY); foreach (NonConsumableItem vi in storeAssets.GetNonConsumableItems()) { nonConsumables.Add(vi.toJSONObject()); } // StoreUtils.LogDebug(TAG, "Preparing StoreAssets JSONObject"); JSONObject storeAssetsObj = new JSONObject(JSONObject.Type.OBJECT); storeAssetsObj.AddField(JSONConsts.STORE_CATEGORIES, categories); storeAssetsObj.AddField(JSONConsts.STORE_CURRENCIES, currencies); storeAssetsObj.AddField(JSONConsts.STORE_CURRENCYPACKS, packs); storeAssetsObj.AddField(JSONConsts.STORE_GOODS, goods); storeAssetsObj.AddField(JSONConsts.STORE_NONCONSUMABLES, nonConsumables); string storeAssetsJSON = storeAssetsObj.print(); #if UNITY_ANDROID StoreUtils.LogDebug(TAG, "pushing data to StoreAssets on java side"); using (AndroidJavaClass jniStoreAssets = new AndroidJavaClass("com.soomla.unity.StoreAssets")) { jniStoreAssets.CallStatic("prepare", storeAssets.GetVersion(), storeAssetsJSON); } StoreUtils.LogDebug(TAG, "done! (pushing data to StoreAssets on java side)"); #elif UNITY_IOS StoreUtils.LogDebug(TAG, "pushing data to StoreAssets on ios side"); storeAssets_Init(storeAssets.GetVersion(), storeAssetsJSON); StoreUtils.LogDebug(TAG, "done! (pushing data to StoreAssets on ios side)"); #endif }