Ошибка запроса отсрочки Google Play Developer API - желаемое время истечения срока действия подписки недействительно.

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

    Exception was thrown while updating 
    listingcom.google.api.client.googleapis.json.GoogleJsonResponseException: 
    400 Bad Request
     {
       "code" : 400,
       "errors" : [ {
       "domain" : "androidpublisher",
       "message" : "The desired expiry time for the subscription is not 
       valid.",
       "reason" : "subscriptionDeferInvalidTime"
       } ],
      "message" : "The desired expiry time for the subscription is not valid."
     }

Я написал следующий код для запроса. Я уверен, что такие переменные, как имя пакета subscriptionID и subscriptionToken, верны, потому что вызов Purchases.get работает. Переменное время истечения срока действия сохраняется из предыдущего ответа на получение вызова.

class DeferBilling extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... urls) {
        try {
            Preconditions.checkArgument(!Strings.isNullOrEmpty(ApplicationConfig.PACKAGE_NAME),
                    "ApplicationConfig.PACKAGE_NAME cannot be null or empty!");

            // Create the API service.
            final AndroidPublisher service = AndroidPublisherHelper.init(
                    ApplicationConfig.APPLICATION_NAME, ApplicationConfig.SERVICE_ACCOUNT_EMAIL, getBaseContext());
            final AndroidPublisher.Purchases purchases = service.purchases();
            SubscriptionPurchasesDeferRequest request = new SubscriptionPurchasesDeferRequest();
            SubscriptionDeferralInfo info = new SubscriptionDeferralInfo();
            long desiredTime = expiryTime + 10*60*1000;
            long expectedTime = expiryTime;
            info.setDesiredExpiryTimeMillis(desiredTime);
            info.setExpectedExpiryTimeMillis(expectedTime);
            request.setDeferralInfo(sdi);
            SubscriptionPurchasesDeferResponse response = purchases.subscriptions().defer(ApplicationConfig.PACKAGE_NAME,GlobalClass.subscriptionID,
                    GlobalClass.subscriptionToken,request).execute();
            System.out.println(response);
            return response.toString();
        } catch (Exception e) {
            System.out.println("Exception thrown" + e.toString());
            return "";
        }
    }

    protected void onPostExecute(String feed) {
    }
}

person Kriti Sharma    schedule 11.05.2018    source источник


Ответы (1)


Проблема заключалась в том, что я вычислял желаемое время, добавляя только 10 минут, тогда как необходимо отложить выставление счетов на несколько дней. Когда я отложил выставление счетов на 30 дней, это сработало.

person Kriti Sharma    schedule 13.05.2018