首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计费流程未启动

计费流程未启动
EN

Stack Overflow用户
提问于 2021-05-19 02:42:57
回答 1查看 100关注 0票数 3

我已经干了一周了。我无法启动计费流程,请帮助!谢谢。我没有收到任何错误。据我所知,它永远不会命中"public void onSkuDetailsResponse“方法。

我试图将我的整个应用程序剥离到只有账单部分,以使其正常工作,但仍然没有任何运气。

代码语言:javascript
运行
复制
private void setupBillingClient() {
    billingClient = BillingClient.newBuilder(this).setListener(this).enablePendingPurchases().setListener(this).build(); //billingClient = BillingClient.newBuilder(this).enablePendingPurchases().build(); //
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                Toast.makeText(getApplication(), "success to connect billing", Toast.LENGTH_SHORT).show();
                loadAllSKUs();
            }
        }

        @Override
        public void onBillingServiceDisconnected() {

        }
    });
}

private void loadAllSKUs() {
    final List<String> skuList = new ArrayList<>();
    skuList.add("GunVault Donation"); //from play store...do this for multiple items if have them
    //  SkuDetailsParams params = SkuDetailsParams.newBuilder()
    //           .setSkusList(skuList)
    //           .setType(BillingClient.SkuType.INAPP)
    //          .build();
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {     //     billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener()
        @Override
        public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) { //     if (skuDetailsList != null && billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                for (Object skuDetailsObject : skuDetailsList) {   //     for (final SkuDetails skuDetails : skuDetailsList) {
                    final SkuDetails skuDetails = (SkuDetails) skuDetailsObject;

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

                    Toast.makeText(About.this, skuDetails.getSku() + " " + sku, Toast.LENGTH_SHORT).show();

                    final BillingFlowParams params = BillingFlowParams.newBuilder()
                            .setSkuDetails(skuDetails)
                            .build();

                    btnDonate.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Toast.makeText(getApplication(), "Donate clicked", Toast.LENGTH_SHORT).show();
                            BillingFlowParams billingFlowParams = BillingFlowParams
                                    .newBuilder()
                                    .setSkuDetails(skuDetails)
                                    .build();
                            billingClient.launchBillingFlow(About.this, billingFlowParams);
                        }
                    });




                }
            } else if (billingResult.getResponseCode() == 
               BillingClient.BillingResponseCode.ERROR) {
                Toast.makeText(About.this, "Error", Toast.LENGTH_SHORT).show();
            }
        }

    });

如果你还需要什么,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2021-05-25 02:54:58

好了,终于想明白了。我使用的是Product Name,而不是我的应用内产品中的Product ID。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67592211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档