Android Google Billing Client - onSkuDetailsResponse Всегда пустой список - PullRequest
0 голосов
/ 12 июля 2020

Мне было интересно, не могли бы вы помочь. Я выполнил инструкции на https://developer.android.com/google/play/billing/integrate, но, похоже, мне не удается заставить процесс покупки работать. Похоже, что биллинг настроен нормально, но когда я пытаюсь запросить продукты для продажи в приложении, список всегда возвращается пустым. Может кто-нибудь помочь?

В моем файле build.gradle уровня приложения я включил Google Billing SDK:

implementation 'com.android.billingclient:billing:3.0.0'

Затем я создал действие для проверки кода. Сначала он инициализирует BillingClient и запускает соединение. Кажется, что соединение завершило sh установку правильно. После правильной настройки я пытаюсь запросить продукты, доступные в моей консоли Google Play, в разделе «Наличие в магазине»> «Продукты в приложении»> «Управление продуктами»

введите описание изображения здесь

Далее следует код в Activity, который должен запустить процесс и вернуть список SkuDetails, но, к сожалению, он возвращается пустым.

private BillingClient billingClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_billing);

    this.billingClient = BillingClient.newBuilder(this)
            .enablePendingPurchases()
            .setListener(this.purchaseUpdateListener)
            .build();
    this.billingClient.startConnection(billingClientStateListener);
}

private PurchasesUpdatedListener purchaseUpdateListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List<Purchase> list) {
        Log.d("Billing", "onPurchasesUpdated - List Size: " + list.size());
    }
};

private BillingClientStateListener billingClientStateListener = new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
            Log.d("Billing", "onBillingSetupFinished - OK");
            queryProducts();
        } else {
            Log.d("Billing", "onBillingSetupFinished - Something wrong response Code: " + billingResult.getResponseCode());
        }
    }

    @Override
    public void onBillingServiceDisconnected() {
        Log.d("Billing", "Service disconnected");
    }
};

private void queryProducts() {
    List<String> productIdsList = new ArrayList<>();
    productIdsList.add("test.billing.001");

    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(productIdsList).setType(BillingClient.SkuType.INAPP);
    this.billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(@NonNull BillingResult billingResult, @Nullable List< SkuDetails > list) {
            Log.d("Billing", "onSkuDetailsResponse - List Size: " + list.size());
        }
    });
}

1 Ответ

0 голосов
/ 20 июля 2020

Таким образом, для всех, у кого есть подобные проблемы, кажется, что (в любом случае, в моем случае) мое приложение необходимо было успешно опубликовать, прежде чем я смогу получить внутри приложения продукты из приложения. Как только мое приложение было опубликовано, я смог запрашивать и использовать встроенные в приложение продукты.

...