【问题标题】:Invalid expire date after subscription purchase订阅购买后过期日期无效
【发布时间】:2013-07-29 08:31:56
【问题描述】:

我有一个带有应用内订阅的 Android 应用。 用户购买订阅后,我通过 Google API 通过我们的后端请求“validUntilTimestampMsec”和“initiationTimestampMsec”。

返回的时间戳“initiationTimestamp”是正确的,表示用户进行购买的时间,但返回的时间戳“validUntilTimestamp”与我需要的实际有效时间始终相差 +12 小时。我用来检索日期的函数与两个时间戳相似。

12 小时从何而来,我如何才能获得正确的时间。对于 Google Play 中的用户,过期日期也会显示错误。

每月订阅示例:

是:
启动时间戳:1374433559436(晚上 7:05)
validUntilTimestamp: 1377155159436 (7:05am) -> 初始时间 + 1 个月 + 12 小时

需要:
启动时间戳:1374433559436(晚上 7:05)
validUntilTimestamp: 1377111959 (7:05pm) -> init-time + 1 个月没有 12 小时

【问题讨论】:

  • 你从哪里得到validUntil?我似乎无法找到重新运行它的 api 调用。这说它非常令人费解,因为谷歌只支持每月和每年。
  • developers.google.com/android-publisher/v1_1/purchases#resource。如您所见,谷歌返回自纪元以来的过期时间,但对我来说延迟了 12 小时
  • 有趣的是在这里被问到:stackoverflow.com/questions/15354249/… 但被关闭为题外话,但他提到了 6 小时,所以你可以尝试询问他是否得到答案,但我认为额外的时间是取消、重试请求等的宽限期。
  • 感谢您的提示 Slartibarfast。我对 Google 支持感到非常恼火。我向相应的 Google Group 发布了 3 次相同的问题,但没有被版主解锁。 Android Bugtracker 将我引导至 Google Play 服务支持,支持人员回答:这是开发人员问题,请咨询 Google 群组。

标签: android google-play in-app-billing subscriptions


【解决方案1】:

我没有在任何地方看到这一点,但我认为谷歌在 Shrinath 的例子中保持了 6 小时 v1 和现在在 v1_1 中的 12 小时(看起来像你的例子)基本上是为了保持时间缓冲来提取资金来自客户的帐户(谷歌负责的一项非常重要的交易),以及取消和重试请求。除了显示警告说可能需要长达 12 小时才能看到新的东西或类似的东西,我看不到它的解决方法。

【讨论】:

  • 我最近将版本从 v1 更改为 v1_1。差异对我来说是一样的。我只是想知道没有关于这种行为的官方声明。
  • 你也和 6 小时一样吗?还是改成12了?是的,我在任何谷歌网站/论坛上都没有看到它
  • 如果您愿意,我认为这确实是一个超时时间,由于系统的固有性质,大型公司通常会在涉及付款责任时保留它。只是另一个想法,也许在某个地方可能存在一些时区差异,这可能会导致这种情况:) 但我认为在不幸的赏金用完之前你不会得到官方答案。
  • 感谢您对 Slartibarfast 的承诺! 1)v1 和 v1_1 都获得了 +12 小时 2)我检索到了正确的启动时间戳,所以我暗示我这边没有对话问题 3)Apple 也是一家大公司,并且返回过期时间,没有额外的订阅。我宁愿自己选择:/
  • 哦。有趣的是,我环顾四周,看到很多其他国家的开发人员说 v1 需要 6 小时(有一个俄罗斯 android 开发人员论坛的链接,在翻译时,开发人员抱怨说他找到了 6小时差异),所以也许有一些差异。苹果确实如此,但我认为 Android/google 播放问题会随着 android 实现的惊人碎片化、不同版本和实现不同版本的设备成倍增加,并且与 iphone、ipad 和 ipad mini 完全不同:D。如果您找到解决方案,请在此处更新答案:)
【解决方案2】:

编写一个计算“正确”的有效时间的函数。如果 Google 的回复不匹配,请使用您计算的回复,否则,请使用 Google 提供的回复。

另外,请注意 Google 总是增加额外的时间,而不是其他方式。因此,如果您的函数返回“大于”Google 的,则考虑 Google 的时间,否则您的函数的时间。

这就是我在应用程序后端解决它的方法。

【讨论】:

  • 手动计算过期日期不是问题,但不能解决问题。该项目在后端过期后,它仍会在 Play 商店中保留几个小时(在我的情况下是 +12 小时)。用户将无法延长订阅(他会收到消息:“已购买”),因此无法使用相应的内容。
  • 检测到到期后立即取消订阅? :) 我们也构建了一个 CRON,它每 15 分钟运行一次,并重置即将过期的用户的订阅。这样一来,您最多会延迟用户的购买时间 15 分钟。
  • 你确定吗?我认为,取消订阅并不意味着订阅不再立即可用。取消意味着:订阅将一直可用,直到达到常规过期时间,但不会自动延长。
  • 它确实允许您在取消订阅后进行另一个订阅。这是我们想要的效果,所以我们选择了它。
猜你喜欢
  • 1970-01-01
  • 2021-06-17
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多