Reputation: 21
i have written these code which for sure fetching the skus from api, becoz its printing in log the fetched skus, but when i am setting the sku using .setSku() OR .setType() OR even directly .setSkuDetails() still the billingFlowParams isnt getting build, but these same code is working when i pass android.test.purchased to .setSku(). I couldnt get whee i am doing mistake. Any help will be appricated.
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder()
List<String> Skus=new ArrayList<>();
Skus.add("sms_100103");
Skus.add("sms_500105");
params.setSkusList(Skus).setType(BillingClient.SkuType.INAPP);
mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
Log.d(TAG, "onSkuDetailsResponse: "+responseCode+" 1."+skuDetailsList.get(1));
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSku(skuDetailsList.get(1).getSku())
.setType(skuDetailsList.get(1).getType())
.build();
int res= mBillingClient.launchBillingFlow((Activity) context,flowParams);
Log.d(TAG, "onSkuDetailsResponse: "+res);
}
});
Upvotes: 1
Views: 1254
Reputation: 471
Codes have now changed:
public void attemptPurchase(String skuID){
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
List<String> Skus=new ArrayList<>();
Skus.add(skuID);
params.setSkusList(Skus).setType(BillingClient.SkuType.SUBS);
billingClient.querySkuDetailsAsync(params.build(), (billingResult, list) -> {
Log.d(TAG, "onSkuDetailsResponse: "+billingResult.getResponseCode()+" 1."+list.toString());
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSkuDetails( list.get( 0 ) )
.build();
BillingResult responseCode = billingClient.launchBillingFlow(this, flowParams);
} );
}
Upvotes: 2