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); }
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); }
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); }
//-------------------------------------- // 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 { }; } }); }