Подписки в приложении для Android: возникла проблема при проверке подписки в приложении - PullRequest
0 голосов
/ 08 сентября 2018
  1. Я реализовал подписку на приложение в моем приложении для Android.Но я не могу проверить в режиме отладки.Нам всегда нужно генерировать подписанный APK и проверять следующий процесс - может кто-нибудь подсказать, как справиться с этим сценарием.

  2. После установки подписанного APK, когда я открываю свое приложение, оно показывает мою подпискупродукт и игра с 3-дневной пробной версией и одной активной подпискойНа следующий день, когда я открываю приложение, оно снова показывает то же сообщение, а количество пробных версий по-прежнему составляет 3 дня.

  3. Когда я нажал кнопку подписки, он был обработан до варианта оплаты.После завершения процесса с моего аккаунта была снята ежемесячная абонентская плата, и был показан способ оплаты.- но я все еще был в пробном режиме, тогда почему он сократил сумму.Он должен быть заряжен после 3 дней

Может кто-нибудь, пожалуйста, предложите ... найти мой код ниже

/*In-App BillingConfig*/
    private void initBillingConfig() {
        try {
            mBillingClient = BillingClient.newBuilder(context).setListener(new PurchasesUpdatedListener() {
                @Override
                public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
                    try {
                        if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
                            for (Purchase purchase : purchases) {
                                if (purchase.getSku().equalsIgnoreCase(MONTHLY_2USD)) {
                                    showToast("You have subscribed our product(" + MONTHLY_2USD + ") for next 1 month");
                                    appendLog("You have subscribed our product(" + MONTHLY_2USD + ") for next 1 month");
                                }
                            }
                        } else if (responseCode == BillingClient.BillingResponse.ITEM_ALREADY_OWNED) {
                            showToast("onPurchasesUpdated: Item already purchased");
                            appendLog("onPurchasesUpdated: Item already purchased");
                        } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
                            showToast("You have canceled our subscription mode.");
                            appendLog("You have canceled our subscription mode.");
                        } else if (responseCode == BillingClient.BillingResponse.DEVELOPER_ERROR)   {
                            showToast("BillingClient.BillingResponse.DEVELOPER_ERROR");
                            appendLog("BillingClient.BillingResponse.DEVELOPER_ERROR");
                            overridePendingTransition(0,0);
                            finish();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        showToast("onPurchasesUpdated: " + e.getMessage());
                        appendLog("onPurchasesUpdated: " + e.getMessage());
                    }
                }
            }).build();
            mBillingClient.startConnection(new BillingClientStateListener() {
                @Override
                public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
                    try {
                        if (billingResponseCode == BillingClient.BillingResponse.OK) {
                            // The billing client is ready. You can query purchases here.
                            checkBillingSKU();
                        } else if (billingResponseCode == BillingClient.BillingResponse.ITEM_ALREADY_OWNED) {
                            appendLog("onBillingSetupFinished: Item already purchased");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        showToast("onBillingSetupFinished: " + e.getMessage());
                        appendLog("onBillingSetupFinished: " + e.getMessage());
                    }
                }

                @Override
                public void onBillingServiceDisconnected() {
                    // Try to restart the connection on the next request to
                    // Google Play by calling the startConnection() method.
                    try {
                        mBillingClient.startConnection(this);
                    } catch (Exception e) {
                        e.printStackTrace();
                        showToast("onBillingServiceDisconnected: " + e.getMessage());
                        appendLog("onBillingServiceDisconnected: " + e.getMessage());
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            showToast("initBillingConfig: " + e.getMessage());
            appendLog("initBillingConfig: " + e.getMessage());
        }
    }

    private void showToast(String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void checkBillingSKU() {
        try {
            List skuList = new ArrayList<>();
            skuList.add(MONTHLY_2USD);
            SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
            params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);
            mBillingClient.querySkuDetailsAsync(params.build(),
                    new SkuDetailsResponseListener() {
                        @Override
                        public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
                            // Process the result.
                            try {
                                if (responseCode == BillingClient.BillingResponse.OK && skuDetailsList != null) {
                                    for (SkuDetails skuDetails : skuDetailsList) {
                                        String sku = skuDetails.getSku();
                                        String price = skuDetails.getPrice();
                                        showToast(skuDetails.toString());
                                        if (MONTHLY_2USD.equals(sku)) {
                                            //mPremiumUpgradePrice = price;
                                            purchaseProduct();
                                        }
                                    }
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                                showToast("onSkuDetailsResponse: " + e.getMessage());
                                appendLog("onSkuDetailsResponse: " + e.getMessage());
                            }
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
            showToast("checkBillingSKU: " + e.getMessage());
            appendLog("checkBillingSKU: " + e.getMessage());
        }
    }

    private void purchaseProduct() {
        try {
            BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                    .setSku(MONTHLY_2USD)
                    .setType(BillingClient.SkuType.SUBS) // SkuType.SUB for subscription
                    .build();
            int responseCode = mBillingClient.launchBillingFlow(DashBoard.this, flowParams);
            showToast("BillingFlowParams: " + responseCode);
            appendLog("BillingFlowParams: " + responseCode);
        } catch (Exception e) {
            e.printStackTrace();
            showToast("purchaseProduct: " + e.getMessage());
            appendLog("purchaseProduct: " + e.getMessage());
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...