public void QuerySkuDetailsAsync(List <string> skus, string type,
                                         Action <IGoogleBillingResult, List <AndroidJavaObject> > onSkuDetailsResponseAction)
        {
            var skuDetailsParamsBuilder = GetSkuDetailsParamClass().CallStatic <AndroidJavaObject>("newBuilder");

            skuDetailsParamsBuilder = skuDetailsParamsBuilder.Call <AndroidJavaObject>("setSkusList", skus.ToJava());
            skuDetailsParamsBuilder = skuDetailsParamsBuilder.Call <AndroidJavaObject>("setType", type);
            var skuDetailsParams = skuDetailsParamsBuilder.Call <AndroidJavaObject>("build");
            var listener         = new SkuDetailsResponseListener(onSkuDetailsResponseAction, m_Util);

            m_BillingClient.Call("querySkuDetailsAsync", skuDetailsParams, listener);
        }
Example #2
0
        private void QuerySkuDetailsForSkuType(ReadOnlyCollection <ProductDefinition> products,
                                               SkuType skuType)
        {
            var skuDetailsParamBuilder = new AndroidJavaObject(Constants.SkuDetailsParamBuilder);

            string[] skuIds = { };
            if (skuType == SkuType.InApp)
            {
                skuIds = products.Where(p => p.type == ProductType.Consumable || p.type == ProductType.NonConsumable)
                         .Select(p => p.storeSpecificId).ToArray();
            }
            else if (skuType == SkuType.Subs)
            {
                skuIds = products.Where(p => p.type == ProductType.Subscription).Select(p => p.storeSpecificId)
                         .ToArray();
            }
            else
            {
                throw new NotImplementedException(String.Format("Unsupported Google Play Store skuType {0}.", skuType));
            }

            // Set the SkuDetails request status to success state if the list is empty.
            if (!skuIds.Any())
            {
                _billingClientQuerySkuDetailsCallStatus[skuType] = AsyncRequestStatus.Succeed;
                NotifyUnityRetrieveProductsResults();
                return;
            }

            skuDetailsParamBuilder.Call <AndroidJavaObject>(Constants.SkuDetailsParamBuilderSetSkuListMethod,
                                                            JniUtils.CreateJavaArrayList(skuIds));
            skuDetailsParamBuilder.Call <AndroidJavaObject>(Constants.SkuDetailsParamBuilderSetTypeMethod,
                                                            skuType.ToString());
            var skuDetailsParam =
                skuDetailsParamBuilder.Call <AndroidJavaObject>(Constants.BuildMethod);
            var skuDetailsResponseListener = new SkuDetailsResponseListener(skuType);

            skuDetailsResponseListener.OnSkuDetailsResponse += ParseSkuDetailsResults;
            _billingClient.Call(Constants.QuerySkuDetailsMethod, skuDetailsParam,
                                skuDetailsResponseListener);
        }
Example #3
0
 public void QuerySkuDetailsAsync(AndroidJavaObject skuDetailsParamsBuilder, SkuDetailsResponseListener listener)
 {
     m_BillingClient.Call("querySkuDetailsAsync", skuDetailsParamsBuilder.Call <AndroidJavaObject>("build"), listener);
 }