Первое подключение к Google Play Billing всегда не удается - PullRequest
0 голосов
/ 22 февраля 2019

Следуя официальному руководству Я разработал этот код для подключения к Google Play Billing:

BillingManager(Context context, BillingListener listener) {
    this.listener = listener;
    billingClient = BillingClient.newBuilder(context).setListener(this).build();
    startConnection(null);
}

private void startConnection(final Runnable runnable) {
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(int responseCode) {
            switch (responseCode) {
                case BillingClient.BillingResponse.OK:
                    connected = true;
                    executeRequest(runnable);
                    break;
                default:
                    listener.onError(STAGE.CONNECTION, responseCode);
            }
        }

        @Override
        public void onBillingServiceDisconnected() {
            connected = false;
        }
    });
}

Этот код вызывается в методе onCreate() моей Деятельности.Ответ, который я получаю всегда:

BILLING_RESPONSE_RESULT_DEVELOPER_ERROR

Однако тот же код выполняется, когда пользователь делает запрос на покупку.Тогда ответ всегда OK.Я запускаю соединение по методу onCreate(), чтобы восстановить покупки, которые пользователь мог совершить ранее.Из официального руководства :

Вызовите queryPurchases () как минимум дважды в своем коде:

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

Является ли метод onCreate() слишком рано, чтобы начать соединение?Если так, когда я должен сделать это?Если нет, есть ли проблема с моим кодом?

...