安卓订阅状态

3
今天,谷歌宣布了新功能——“拒绝付款的账户暂停”https://developer.android.com/google/play/billing/billing_subscriptions.html
开发者需要实现支持此功能。在这种情况下,我有一个问题:如何确定这是宽限期(谷歌尝试收取费用的3或7天)还是“拒绝付款的账户暂停”状态?
我在文档中找不到这些信息。
谷歌提供以下订阅信息:
{
  "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

你解决了宽限期组合的问题吗?我也面临着同样的情况。 - jmichas
@jmichas 不,我暂停了这个任务的工作,直到我能找到关于这个问题的信息。 - Nik
1个回答

0
根据我从这里收集到的信息,我假设我的应用程序如下。我们假设宽限期为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

简而言之:对于宽限期,到期时间始终在未来;对于保留期,到期时间始终在过去。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接