Esempio n. 1
0
        public void consumeProduct(Purchase purchase)
        {
            if (!IsDevice())
            {
                // Fake consume in editor mode
                OpenIAB.EventManager.SendMessage("OnConsumePurchaseSucceeded", purchase.Serialize());
                return;
            }

            var storeSku = OpenIAB_iOS.Sku2StoreSku(purchase.Sku);

            if (storeSku == "")
            {
                storeSku = purchase.Sku;
            }
            if (Inventory_hasPurchase(storeSku))
            {
                OpenIAB.EventManager.SendMessage("OnConsumePurchaseSucceeded", purchase.Serialize());
                Inventory_removePurchase(storeSku);
            }
            else
            {
                OpenIAB.EventManager.SendMessage("OnConsumePurchaseFailed", "Purchase not found");
            }
        }
Esempio n. 2
0
        public Inventory(string json)
        {
            var j = new JSON(json);

            foreach (var entry in (List <object>)j.fields["purchaseMap"])
            {
                List <object> pair = (List <object>)entry;
#if UNITY_IOS
                string key = OpenIAB_iOS.StoreSku2Sku(pair[0].ToString());
                // TODO: use same cotr on all platforms. Test why it works on Android json
                Purchase value = new Purchase((JSON)pair[1]);
#else
                string   key   = pair[0].ToString();
                Purchase value = new Purchase(pair[1].ToString());
#endif
                _purchaseMap.Add(key, value);
            }
            foreach (var entry in (List <object>)j.fields["skuMap"])
            {
                List <object> pair = (List <object>)entry;
#if UNITY_IOS
                string     key   = OpenIAB_iOS.StoreSku2Sku(pair[0].ToString());
                SkuDetails value = new SkuDetails((JSON)pair[1]);
#else
                string     key   = pair[0].ToString();
                SkuDetails value = new SkuDetails(pair[1].ToString());
#endif
                _skuMap.Add(key, value);
            }
        }
        public SkuDetails(JSON json)
        {
            ItemType    = json.ToString("itemType");
            Sku         = json.ToString("sku");
            Type        = json.ToString("type");
            Price       = json.ToString("price");
            Title       = json.ToString("title");
            Description = json.ToString("description");
            Json        = json.ToString("json");

            Sku = OpenIAB_iOS.StoreSku2Sku(Sku);
        }
Esempio n. 4
0
 public Inventory(StoreKitProduct[] products)
 {
     foreach (var product in products)
     {
         string sku = OpenIAB_iOS.StoreSku2Sku(product.identifier);
         _skuMap.Add(sku, new SkuDetails(product));
         if (OpenIAB_iOS.IsProductPurchased(product.identifier))
         {
             _purchaseMap.Add(sku, Purchase.CreateFromSku(sku));
         }
     }
 }
        public SkuDetails(JSON json)
        {
            ItemType     = json.ToString("itemType");
            Sku          = json.ToString("sku");
            Type         = json.ToString("type");
            Price        = json.ToString("price");
            Title        = json.ToString("title");
            Description  = json.ToString("description");
            Json         = json.ToString("json");
            CurrencyCode = json.ToString("currencyCode");
            StoreCountry = json.ToString("storeCountry");

            PriceValue = json.ToString("priceValue");
            Sku        = OpenIAB_iOS.StoreSku2Sku(Sku);
        }
Esempio n. 6
0
        public SkuDetails(StoreKitProduct storeKitProduct)
        {
            //Debug.Log(storeKitProduct);

            Sku = OpenIAB_iOS.StoreSku2Sku(storeKitProduct.identifier);
            //Debug.Log(storeKitProduct.identifier);

            Price = storeKitProduct.localPrice + storeKitProduct.priceSymbol;
            //Debug.Log(storeKitProduct.localPrice);

            Title = storeKitProduct.localizedTitle;
            //Debug.Log(storeKitProduct.localizedTitle);

            Description = storeKitProduct.localizedDescription;
            //Debug.Log(storeKitProduct.localizedDescription);
        }
Esempio n. 7
0
        public Purchase(JSON json)
        {
            if (json != null)
            {
                ItemType         = json.ToString("itemType");
                OrderId          = json.ToString("orderId");
                PackageName      = json.ToString("packageName");
                Sku              = json.ToString("sku");
                PurchaseTime     = json.ToLong("purchaseTime");
                PurchaseState    = json.ToInt("purchaseState");
                DeveloperPayload = json.ToString("developerPayload");
                Token            = json.ToString("token");
                OriginalJson     = json.ToString("originalJson");
                Signature        = json.ToString("signature");
                AppstoreName     = json.ToString("appstoreName");
                Receipt          = json.ToString("receipt");

                // Catch will be hit if the Sku is already a product id
                try
                {
                    Sku = OpenIAB_iOS.StoreSku2Sku(Sku);
                } catch (System.Collections.Generic.KeyNotFoundException) {}

                JSON receiptJson = AppleArrayToJSON(Receipt);

                if (receiptJson != null)
                {
                    string purchaseInfo = receiptJson.ToString("purchase-info");

                    if (!string.IsNullOrEmpty(purchaseInfo))
                    {
                        JSON purchaseInfoJson = AppleArrayToJSON(purchaseInfo);

                        if (purchaseInfoJson != null)
                        {
                            string transactionId = purchaseInfoJson.ToString("original-transaction-id");

                            if (!string.IsNullOrEmpty(transactionId))
                            {
                                Token = transactionId;
                            }
                            else
                            {
                                Debug.LogError("Failed to get transaction id");
                            }
                        }
                        else
                        {
                            Debug.LogError("Failed to get purchaseInfo JSON!");
                        }
                    }
                    else
                    {
                        Debug.LogError("Failed to get purchase info");
                    }
                }
                else
                {
                    Debug.LogError("Failed to get receipt JSON!");
                }
            }
            else
            {
                Debug.LogError("Null json!");
            }
        }
Esempio n. 8
0
        /**
         * Create purchase from json string
         * @param jsonString data serialized to json
         */
        public Purchase(string jsonString)
        {
            var json = new JSON(jsonString);

            ItemType         = json.ToString("itemType");
            OrderId          = json.ToString("orderId");
            PackageName      = json.ToString("packageName");
            Sku              = json.ToString("sku");
            PurchaseTime     = json.ToLong("purchaseTime");
            PurchaseState    = json.ToInt("purchaseState");
            DeveloperPayload = json.ToString("developerPayload");
            Token            = json.ToString("token");
            OriginalJson     = json.ToString("originalJson");
            Signature        = json.ToString("signature");
            AppstoreName     = json.ToString("appstoreName");
            Receipt          = json.ToString("receipt");

#if UNITY_IOS
            // Catch will be hit if the Sku is already a product id
            try
            {
                Sku = OpenIAB_iOS.StoreSku2Sku(Sku);
            }
            catch (System.Collections.Generic.KeyNotFoundException) { }

            JSON receiptJson = AppleArrayToJSON(Receipt);

            // Parse the iOS receipt token, converting it from Apple's own stupid format to normal JSON data along the way
            if (receiptJson != null)
            {
                string purchaseInfo = receiptJson.ToString("purchase-info");

                if (!string.IsNullOrEmpty(purchaseInfo))
                {
                    JSON purchaseInfoJson = AppleArrayToJSON(purchaseInfo);

                    if (purchaseInfoJson != null)
                    {
                        string transactionId = purchaseInfoJson.ToString("original-transaction-id");

                        if (!string.IsNullOrEmpty(transactionId))
                        {
                            Token = transactionId;
                        }
                        else
                        {
                            Debug.LogError("Failed to get transaction id");
                        }
                    }
                    else
                    {
                        Debug.LogError("Failed to get purchaseInfo JSON!");
                    }
                }
                else
                {
                    Debug.LogError("Failed to get purchase info");
                }
            }
            else
            {
                Debug.LogError("Failed to get receipt JSON!");
            }
#endif
        }