コード例 #1
0
    private void BuildProducts()
    {
        //Clean up current UI
        m_Purchases.Clear();

        //Let's get all the purchases  first
        var purchasesResult = m_BillingClientSample.Client.QueryPurchases(AN_BillingClient.SkuType.inapp);

        if (purchasesResult.IsSucceeded)
        {
            m_Purchases.AddRange(purchasesResult.Purchases);
        }

        //In case you also have subs products you can also Query for it as well.
        //In this example we only have inapp products types.
        var paramsBuilder = AN_SkuDetailsParams.NewBuilder();

        paramsBuilder.SetType(AN_BillingClient.SkuType.inapp);

        var skusList = new List <string>();

        foreach (var product in AN_Settings.Instance.InAppProducts)
        {
            skusList.Add(product.Sku);
        }

        paramsBuilder.SetSkusList(skusList);

        m_BillingClientSample.Client.QuerySkuDetailsAsync(paramsBuilder.Build(), this);
    }
コード例 #2
0
        private void BuildProductsUI()
        {
            //Clean up current UI
            m_Purchases.Clear();
            m_ProductView.transform.parent.Clear();

            //Let's get all the purchases  first
            var purchasesResult = m_BillingClientSample.Client.QueryPurchases(AN_BillingClient.SkuType.inapp);

            if (purchasesResult.IsSucceeded)
            {
                m_Purchases.AddRange(purchasesResult.Purchases);
            }

            //In case you also have subs products you can also Query for it as well.
            //In this example we only have inapp products types.
            var paramsBuilder = AN_SkuDetailsParams.NewBuilder();

            paramsBuilder.SetType(AN_BillingClient.SkuType.inapp);

            var skusList = new List <string>();

            skusList.Add("android.test.purchased");
            skusList.Add("android.test.canceled");
            skusList.Add("android.test.item_unavailable");
            skusList.Add("androidnative.test.product.1");
            skusList.Add("androidnative.product.test.2");
            paramsBuilder.SetSkusList(skusList);

            m_BillingClientSample.Client.QuerySkuDetailsAsync(paramsBuilder.Build(), this);
        }
コード例 #3
0
        public void LoadSkuDetails(AN_BillingClient client, AN_BillingClient.SkuType skuType, Action <List <AN_SkuDetails> > callback)
        {
            m_Callback = callback;
            var paramsBuilder = AN_SkuDetailsParams.NewBuilder();

            paramsBuilder.SetType(skuType);

            var skusList = new List <string>();

            foreach (var product in AN_Settings.Instance.InAppProducts)
            {
                if (product.Type == skuType)
                {
                    skusList.Add(product.Sku);
                }
            }

            paramsBuilder.SetSkusList(skusList);
            client.QuerySkuDetailsAsync(paramsBuilder.Build(), this);
        }
コード例 #4
0
 public void QuerySkuDetailsAsync(AN_SkuDetailsParams @params, Action <List <AN_SkuDetails> > callback)
 {
     m_OnSkuDetailsCallback = callback;
     m_BillingClient.QuerySkuDetailsAsync(@params, this);
 }
コード例 #5
0
        //--------------------------------------
        //  Public Methods
        //--------------------------------------


        /// <summary>
        /// Connecting to Google Play Billing service.
        /// Once the connection is successfully established,
        /// <see cref="GetPurchases(Action{SA_Result})"/> method will be called automatically.
        /// Which means the <see cref="Inventory"/> will be filled and available after method callback
        /// </summary>
        /// <param name="callback">The Connection result callback</param>
        public static void Connect(Action <AN_BillingConnectionResult> callback)
        {
            if (m_SuccessInitResultCache != null)
            {
                callback.Invoke(m_SuccessInitResultCache);
                return;
            }

            s_OnConnect += callback;
            if (s_IsConnectionInProgress)
            {
                return;
            }


            s_IsConnectionInProgress = true;

            m_Client.Connect(connectionResult =>
            {
                if (connectionResult.IsSucceeded)
                {
                    var skusList = new List <string>();
                    foreach (var product in AN_Settings.Instance.InAppProducts)
                    {
                        if (product.Type == AN_BillingClient.SkuType.inapp)
                        {
                            skusList.Add(product.Sku);
                        }
                    }

                    var paramsBuilder = AN_SkuDetailsParams.NewBuilder();
                    paramsBuilder.SetType(AN_BillingClient.SkuType.inapp);
                    paramsBuilder.SetSkusList(skusList);

                    m_Client.QuerySkuDetailsAsync(paramsBuilder.Build(), (skus) =>
                    {
                        if (skus != null)
                        {
                            var products = new List <AN_Product>();
                            foreach (var sku in skus)
                            {
                                m_LoadedSkus.Add(sku);
                                products.Add(new AN_Product(sku));
                            }
                            Inventory.SetProducts(products);
                        }

                        skusList = new List <string>();
                        foreach (var product in AN_Settings.Instance.InAppProducts)
                        {
                            if (product.Type == AN_BillingClient.SkuType.subs)
                            {
                                skusList.Add(product.Sku);
                            }
                        }

                        paramsBuilder = AN_SkuDetailsParams.NewBuilder();
                        paramsBuilder.SetType(AN_BillingClient.SkuType.subs);
                        paramsBuilder.SetSkusList(skusList);
                        m_Client.QuerySkuDetailsAsync(paramsBuilder.Build(), (subsSkus) =>
                        {
                            if (subsSkus != null)
                            {
                                var products = new List <AN_Product>();
                                foreach (var sku in subsSkus)
                                {
                                    m_LoadedSkus.Add(sku);
                                    products.Add(new AN_Product(sku));
                                }
                                Inventory.SetProducts(products);
                            }


                            GetPurchases((invResult) => {
                                if (invResult.IsSucceeded)
                                {
                                    SaveConnectionResult(connectionResult);
                                }
                                else
                                {
                                    connectionResult.SetError(invResult.Error);
                                }
                                s_OnConnect.Invoke(connectionResult);
                                s_OnConnect = delegate { };
                            });
                        });
                    });
                }
                else
                {
                    s_OnConnect.Invoke(connectionResult);
                    s_OnConnect = delegate { };
                }
            });
        }