IGooglePlayStoreService BuildGooglePlayStoreServiceAar(IGooglePurchaseCallback googlePurchaseCallback)
        {
            var googleCachedQuerySkuDetailsService = new GoogleCachedQuerySkuDetailsService();
            var googleLastKnownProductService      = new GoogleLastKnownProductService();
            var googlePurchaseUpdatedListener      = new GooglePurchaseUpdatedListener(googleLastKnownProductService, googlePurchaseCallback, googleCachedQuerySkuDetailsService);
            var googleBillingClient          = new GoogleBillingClient(googlePurchaseUpdatedListener, util);
            var skuDetailsConverter          = new SkuDetailsConverter();
            var retryPolicy                  = new ExponentialRetryPolicy();
            var googleQuerySkuDetailsService = new QuerySkuDetailsService(googleBillingClient, googleCachedQuerySkuDetailsService, skuDetailsConverter, retryPolicy);
            var purchaseService              = new GooglePurchaseService(googleBillingClient, googlePurchaseCallback, googleQuerySkuDetailsService);
            var queryPurchasesService        = new GoogleQueryPurchasesService(googleBillingClient, googleCachedQuerySkuDetailsService);
            var finishTransactionService     = new GoogleFinishTransactionService(googleBillingClient, queryPurchasesService);
            var billingClientStateListener   = new BillingClientStateListener();
            var priceChangeService           = new GooglePriceChangeService(googleBillingClient, googleQuerySkuDetailsService);

            return(new GooglePlayStoreService(
                       googleBillingClient,
                       googleQuerySkuDetailsService,
                       purchaseService,
                       finishTransactionService,
                       queryPurchasesService,
                       billingClientStateListener,
                       priceChangeService,
                       googleLastKnownProductService
                       ));
        }
 public void QueryAsyncSku(ReadOnlyCollection <ProductDefinition> products, Action <List <ProductDescription> > onSkuDetailsResponse)
 {
     QueryAsyncSku(products,
                   skus => SkuDetailsConverter.ConvertOnQuerySkuDetailsResponse(skus, onSkuDetailsResponse));
 }