Настройка биллинга клиента - PullRequest
0 голосов
/ 17 апреля 2020

новичок в Android разработке и попытке реализовать IAP для моего приложения. После долгих поисков и попыток найти современные инструкции мне удалось собрать воедино следующий код:

public class MainActivity extends AppCompatActivity implements PurchasesUpdatedListener {

    String SKU_UNLOCK = "unlock_all_features";
    BillingClient mBillingClient;
    Button buyBtn;

mBillingClient = BillingClient.newBuilder(MainActivity.this).setListener(this).enablePendingPurchases().build();
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult) {

                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {

                    Toast.makeText(MainActivity.this, "Successfully connected to Billing Service", Toast.LENGTH_SHORT).show();
                } else
                    Toast.makeText(MainActivity.this, "Failed connection to Billing Service", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onBillingServiceDisconnected() {

                Toast.makeText(MainActivity.this, "Disconnected from Billing Service", Toast.LENGTH_SHORT).show();

            }
        });

        List<String> skuList = new ArrayList<>();
        skuList.add(SKU_UNLOCK);
        final 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 price = skuDetails.getPrice();

                            }
                        }
                    }
                });

        buyBtn = (Button) findViewById(R.id.buyBtn);
        buyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // Setup the Billing Flow Params

            }
        });

    }


    @Override
    public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {

        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
                && purchases != null) {
            for (Purchase purchase : purchases) {
                handlePurchase(purchase);
            }
        } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
            // Handle an error caused by a user cancelling the purchase flow.
        } else {
            // Handle any other error codes.
        }
    }

    public void handlePurchase(Purchase purchase) {
        if (purchase.getSku().equals(SKU_UNLOCK)) {

            // Unlock the the premium app features and hide the buyBtn
        }
    }

Моя главная проблема на данный момент, и вот где я действительно застрял в том, что я не не знаю, как настроить BillingFlowParams для метода buyBthn. Некоторые инструкции, которые я нашел, кажутся устаревшими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...