1

我正在尝试在我的应用中推迟应用内购买的计费。但每次我收到以下错误

    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 等变量是正确的,因为 purchase.get 调用有效。变量过期时间是从先前的 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) {
    }
}
4

1 回答 1

2

问题是我通过仅添加 10 分钟来计算desiredTime,而有必要将计费推迟几天。当我将账单推迟 30 天时,它奏效了。

于 2018-05-13T15:35:55.500 回答