结算流程未启动

问题描述

我已经做了一个星期了。我无法启动计费流程,请帮助!。谢谢。我没有收到任何错误。据我所知,它永远不会遇到“public void onSkuDetailsResponse”方法

我已经尝试将我的整个应用程序剥离到仅计费部分以使其正常工作,但仍然没有任何运气。

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();
            }
        }

    });

如果您需要其他任何东西,请告诉我

解决方法

终于明白了。我使用的是产品名称而不是应用内产品的产品 ID。