2

由于Google Play Billing Library 2.0.x中的“setProductId”已被删除,我们必须使用 setSkuDetails 来启动BillingFlow。那么如何启动 BillingFlow 来购买商品

• 我有 3 个单选按钮

• 用户必须选择一项并通过点击按钮付款

我从文档中执行了以下操作来获取价格

final   List<String> skuList = new ArrayList<>();

    skuList.add("item1");
    skuList.add("item2");
    skuList.add("item3");
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

    mBillingClient.querySkuDetailsAsync(params.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
                    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
                        for (SkuDetails skuDetails : skuDetailsList) {


                            String sku = skuDetails.getSku();
                            String price = skuDetails.getPrice();
                            if ("item1".equals(sku)) {
                                item1price = price;
                            } else if ("item2".equals(sku)) {
                                item2price = price;


                            } else if ("item3".equals(sku)) {
                                item3price = price;
                        }
                    }
                }

            });

用户选择商品后如何通过按钮点击购买单品?

mBuyButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                    .setSkuDetails(skuDetails)
                    .build();
        }
    });
4

1 回答 1

1

试试这个启动

private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

并添加

mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);

在您的代码中:

final   List<String> skuList = new ArrayList<>();

skuList.add("item1");
skuList.add("item2");
skuList.add("item3");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);

mBillingClient.querySkuDetailsAsync(params.build(),
        new SkuDetailsResponseListener() {
            @Override
            public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
                    for (SkuDetails skuDetails : skuDetailsList) {


                        String sku = skuDetails.getSku();
                        String price = skuDetails.getPrice();

                        mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);

                        if ("item1".equals(sku)) {
                            item1price = price;
                        } else if ("item2".equals(sku)) {
                            item2price = price;


                        } else if ("item3".equals(sku)) {
                            item3price = price;
                    }
                }
            }

        });

对于 item1 它将是

  mBuyButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                .setSkuDetails(mSkuDetailsMap.get("item1")
                .build();
    }
});

让我知道,如果它有效。

于 2019-07-12T09:03:52.870 回答