Android订阅状态

时间:2017-10-05 11:54:42

标签: android in-app-billing subscription

今天谷歌宣布推出新功能 - “帐户适用于已拒付的付款”https://developer.android.com/google/play/billing/billing_subscriptions.html

要使用此功能,开发人员需要实现对它的支持。在这种情况下,我有一个问题,如何确定它是宽限期(谷歌试图收钱3天或7天)还是“账户持有拒付款”状态?

我在doc中找不到这些信息。

Google提供下一个订阅信息:

{
  "kind": "androidpublisher#subscriptionPurchase",
  "startTimeMillis": long,
  "expiryTimeMillis": long,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": long,
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer,
  "userCancellationTimeMillis": long,
  "orderId": string
}

根据文件,“账户持有拒付款”状态是:

expiryTimeMillis < current_time &&
autoRenewing = true    &&
paymentState = 0

但是哪种状态会决定宽限期?

我正在使用此值来确定宽限期,但现在看起来错了:

expiryTimeMillis < current_time && 
paymentState = 0

1 个答案:

答案 0 :(得分:0)

根据我从here收集的信息,我为我的应用假设以下内容。我们假设宽限期为7天,保留期为30天。

用户处于宽限期时

expiryTimeMillis > current_time &&
autoRenewing = true    &&
paymentState = 0

当用户在宽限期内确定其付款后,订阅将恢复,并且应如下所示

expiryTimeMillis > current_time &&
autoRenewing = true    &&
paymentState = 1

如果用户在宽限期7天后仍未确定付款方式,则该情况如下

expiryTimeMillis < current_time &&
autoRenewing = true    &&
paymentState = 0

如果用户在保留期后仍未确定其付款方式(此处不确定宽限期的前7天是否已计入保留期,那么30天的保留期或30-7 =保留期的23天),则看起来像这样

expiryTimeMillis < current_time &&
autoRenewing = false    &&
paymentState = 0    &&
cancelReason = 1  # The system canceled the subscription

但是,如果用户确定了付款方式,则订阅将恢复正常,外观如下

expiryTimeMillis > current_time &&
autoRenewing = true    &&
paymentState = 1
简而言之:在宽限期内,到期时间总是在将来;在保持期内,到期时间始终是