Search in sources :

Example 6 with PurchasableVirtualItem

use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.

the class StoreInventory method buy.

/**
     * Buys the item with the given <code>itemId</code>.
     *
     * @param itemId id of item to be purchased
     * @param payload a string you want to be assigned to the purchase. This string
     *   is saved in a static variable and will be given bacl to you when the
     *   purchase is completed.
     * @throws InsufficientFundsException
     * @throws VirtualItemNotFoundException
     */
public static void buy(String itemId, String payload) throws InsufficientFundsException, VirtualItemNotFoundException {
    PurchasableVirtualItem pvi = (PurchasableVirtualItem) StoreInfo.getVirtualItem(itemId);
    pvi.buy(payload);
}
Also used : PurchasableVirtualItem(com.soomla.store.domain.PurchasableVirtualItem)

Example 7 with PurchasableVirtualItem

use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.

the class StoreInfo method hasMarketIdDuplicates.

/** Private functions **/
/**
     * Checks if given storeAssets is correct IStoreAssets instance
     *
     * @param assetsArray array of successors of PurchasableVirtualItem class.
     * @return true if <code>marketId</code> duplicates exists and false otherwise.
     */
private static boolean hasMarketIdDuplicates(PurchasableVirtualItem[] assetsArray) {
    HashSet<String> marketItemIds = new HashSet<String>();
    for (PurchasableVirtualItem pvi : assetsArray) {
        if (pvi.getPurchaseType() instanceof PurchaseWithMarket) {
            String currentMarketId = ((PurchaseWithMarket) pvi.getPurchaseType()).getMarketItem().getProductId();
            if (marketItemIds.contains(currentMarketId)) {
                return true;
            }
            marketItemIds.add(currentMarketId);
        }
    }
    return false;
}
Also used : PurchasableVirtualItem(com.soomla.store.domain.PurchasableVirtualItem) PurchaseWithMarket(com.soomla.store.purchaseTypes.PurchaseWithMarket) HashSet(java.util.HashSet)

Example 8 with PurchasableVirtualItem

use of com.soomla.store.domain.PurchasableVirtualItem in project android-store by soomla.

the class StoreInfo method fromJSONObject.

/**
     * Transforms given jsonObject to StoreInfo
     *
     * @param jsonObject
     * @throws JSONException
     */
private static void fromJSONObject(JSONObject jsonObject) throws JSONException {
    mVirtualItems = new HashMap<String, VirtualItem>();
    mPurchasableItems = new HashMap<String, PurchasableVirtualItem>();
    mGoodsCategories = new HashMap<String, VirtualCategory>();
    mGoodsUpgrades = new HashMap<String, List<UpgradeVG>>();
    mCurrencyPacks = new LinkedList<VirtualCurrencyPack>();
    mGoods = new LinkedList<VirtualGood>();
    mCategories = new LinkedList<VirtualCategory>();
    mCurrencies = new LinkedList<VirtualCurrency>();
    if (jsonObject.has(StoreJSONConsts.STORE_CURRENCIES)) {
        JSONArray virtualCurrencies = jsonObject.getJSONArray(StoreJSONConsts.STORE_CURRENCIES);
        for (int i = 0; i < virtualCurrencies.length(); i++) {
            JSONObject o = virtualCurrencies.getJSONObject(i);
            VirtualCurrency c = new VirtualCurrency(o);
            mCurrencies.add(c);
            mVirtualItems.put(c.getItemId(), c);
        }
    }
    if (jsonObject.has(StoreJSONConsts.STORE_CURRENCYPACKS)) {
        JSONArray currencyPacks = jsonObject.getJSONArray(StoreJSONConsts.STORE_CURRENCYPACKS);
        for (int i = 0; i < currencyPacks.length(); i++) {
            JSONObject o = currencyPacks.getJSONObject(i);
            VirtualCurrencyPack pack = new VirtualCurrencyPack(o);
            mCurrencyPacks.add(pack);
            mVirtualItems.put(pack.getItemId(), pack);
            PurchaseType purchaseType = pack.getPurchaseType();
            if (purchaseType instanceof PurchaseWithMarket) {
                mPurchasableItems.put(((PurchaseWithMarket) purchaseType).getMarketItem().getProductId(), pack);
            }
        }
    }
    // For example: VGU and VGP depend on other VGs
    if (jsonObject.has(StoreJSONConsts.STORE_GOODS)) {
        JSONObject virtualGoods = jsonObject.getJSONObject(StoreJSONConsts.STORE_GOODS);
        if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_SU)) {
            JSONArray suGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_SU);
            for (int i = 0; i < suGoods.length(); i++) {
                JSONObject o = suGoods.getJSONObject(i);
                SingleUseVG g = new SingleUseVG(o);
                addVG(g);
            }
        }
        if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_LT)) {
            JSONArray ltGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_LT);
            for (int i = 0; i < ltGoods.length(); i++) {
                JSONObject o = ltGoods.getJSONObject(i);
                LifetimeVG g = new LifetimeVG(o);
                addVG(g);
            }
        }
        if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_EQ)) {
            JSONArray eqGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_EQ);
            for (int i = 0; i < eqGoods.length(); i++) {
                JSONObject o = eqGoods.getJSONObject(i);
                EquippableVG g = new EquippableVG(o);
                addVG(g);
            }
        }
        if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_PA)) {
            JSONArray paGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_PA);
            for (int i = 0; i < paGoods.length(); i++) {
                JSONObject o = paGoods.getJSONObject(i);
                SingleUsePackVG g = new SingleUsePackVG(o);
                addVG(g);
            }
        }
        if (virtualGoods.has(StoreJSONConsts.STORE_GOODS_UP)) {
            JSONArray upGoods = virtualGoods.getJSONArray(StoreJSONConsts.STORE_GOODS_UP);
            for (int i = 0; i < upGoods.length(); i++) {
                JSONObject o = upGoods.getJSONObject(i);
                UpgradeVG g = new UpgradeVG(o);
                addVG(g);
                List<UpgradeVG> upgrades = mGoodsUpgrades.get(g.getGoodItemId());
                if (upgrades == null) {
                    upgrades = new ArrayList<UpgradeVG>();
                    mGoodsUpgrades.put(g.getGoodItemId(), upgrades);
                }
                upgrades.add(g);
            }
        }
    }
    // Categories depend on virtual goods. That's why the have to be initialized after!
    if (jsonObject.has(StoreJSONConsts.STORE_CATEGORIES)) {
        JSONArray virtualCategories = jsonObject.getJSONArray(StoreJSONConsts.STORE_CATEGORIES);
        for (int i = 0; i < virtualCategories.length(); i++) {
            JSONObject o = virtualCategories.getJSONObject(i);
            VirtualCategory category = new VirtualCategory(o);
            mCategories.add(category);
            for (String goodItemId : category.getGoodsItemIds()) {
                mGoodsCategories.put(goodItemId, category);
            }
        }
    }
    // Remove this code when no longer needed.
    if (mNonConsumableMigrationNeeded) {
        SoomlaUtils.LogDebug(TAG, "NonConsumables balance migration is required. Doing it now.");
        nonConsBalancesToLTVGs();
    }
}
Also used : PurchasableVirtualItem(com.soomla.store.domain.PurchasableVirtualItem) VirtualGood(com.soomla.store.domain.virtualGoods.VirtualGood) UpgradeVG(com.soomla.store.domain.virtualGoods.UpgradeVG) LifetimeVG(com.soomla.store.domain.virtualGoods.LifetimeVG) VirtualCurrencyPack(com.soomla.store.domain.virtualCurrencies.VirtualCurrencyPack) VirtualCategory(com.soomla.store.domain.VirtualCategory) SingleUseVG(com.soomla.store.domain.virtualGoods.SingleUseVG) VirtualItem(com.soomla.store.domain.VirtualItem) PurchaseWithVirtualItem(com.soomla.store.purchaseTypes.PurchaseWithVirtualItem) PurchasableVirtualItem(com.soomla.store.domain.PurchasableVirtualItem) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) List(java.util.List) PurchaseType(com.soomla.store.purchaseTypes.PurchaseType) JSONArray(org.json.JSONArray) JSONObject(org.json.JSONObject) EquippableVG(com.soomla.store.domain.virtualGoods.EquippableVG) PurchaseWithMarket(com.soomla.store.purchaseTypes.PurchaseWithMarket) SingleUsePackVG(com.soomla.store.domain.virtualGoods.SingleUsePackVG) VirtualCurrency(com.soomla.store.domain.virtualCurrencies.VirtualCurrency)

Aggregations

PurchasableVirtualItem (com.soomla.store.domain.PurchasableVirtualItem)8 UnexpectedStoreErrorEvent (com.soomla.store.events.UnexpectedStoreErrorEvent)4 VirtualItemNotFoundException (com.soomla.store.exceptions.VirtualItemNotFoundException)4 PurchaseWithMarket (com.soomla.store.purchaseTypes.PurchaseWithMarket)3 IabPurchase (com.soomla.store.billing.IabPurchase)2 VirtualCategory (com.soomla.store.domain.VirtualCategory)2 VirtualItem (com.soomla.store.domain.VirtualItem)2 VirtualCurrency (com.soomla.store.domain.virtualCurrencies.VirtualCurrency)2 VirtualCurrencyPack (com.soomla.store.domain.virtualCurrencies.VirtualCurrencyPack)2 UpgradeVG (com.soomla.store.domain.virtualGoods.UpgradeVG)2 VirtualGood (com.soomla.store.domain.virtualGoods.VirtualGood)2 PurchaseType (com.soomla.store.purchaseTypes.PurchaseType)2 PurchaseWithVirtualItem (com.soomla.store.purchaseTypes.PurchaseWithVirtualItem)2 ArrayList (java.util.ArrayList)2 LinkedList (java.util.LinkedList)2 List (java.util.List)2 IabCallbacks (com.soomla.store.billing.IabCallbacks)1 EquippableVG (com.soomla.store.domain.virtualGoods.EquippableVG)1 LifetimeVG (com.soomla.store.domain.virtualGoods.LifetimeVG)1 SingleUsePackVG (com.soomla.store.domain.virtualGoods.SingleUsePackVG)1