11

我正在研究使用 google play 在应用计费中实现自动续订订阅的方法。我阅读了https://developer.android.com/google/play/billing/billing_subscriptions.html并查看

计费按为订阅指定的时间间隔和价格无限期地继续。每次续订时,Google Play 都会自动向用户帐户收费,然后通过电子邮件通知用户收费情况。对于月度和年度订阅,计费周期将始终与订阅周期匹配,具体取决于购买日期。(季节性订阅按年收费,在季节的第一天。)

订阅付款获得批准后,Google Play 会通过 In-app Billing API 将购买令牌返回给购买应用。您的应用可以在本地存储令牌或将其传递到后端服务器,然后后端服务器可以使用它通过 Google Play Developer API 远程验证或取消订阅。

那么有什么方法可以让我的服务器知道用户的订阅何时更新?在那个 android 应用程序将这个新账单发送到我的服务器只是为了验证之后,而不是谷歌播放发送新的账单订阅到 android 应用程序。

当用户的订阅续订时,谷歌播放可以向我的服务器发送通知,例如通过电子邮件通知用户吗?我想通过 Google Play 向我发送通知,告知用户的订阅已自动续订,以便我的后端将在应用增加时更新他们的订阅。每次用户打开商店以检查是否有来自 goole play 收费自动化的新账单时,不需要 android 应用程序都必须检查账单。执行吗?

我的工作

  1. Google 收取新的周期订阅费用并通知我的服务器{正文,例如 bundId、bill、product_id 或订阅包名称、到期日期...),还向用户发送有关其订阅自动化续订的邮件。
  2. 我的服务器确定用户的更改订阅并通过 google play api 在应用程序购买中进行验证,如果验证有效,则在您的应用程序中更改过期包订阅。
  3. 在我的数据库中存储最新的账单

那可能吗?

[更新] goolge play api doc推荐

建议:在您的应用程序中包含业务逻辑,以通知您的后端服务器订阅购买、令牌和任何可能发生的计费错误。如果需要,您的后端服务器可以使用服务器端 API 来查询和更新您的记录并直接跟进客户。

如何实施来自 google api、任何文档或教程的推荐?

4

3 回答 3

8

我目前有完全相同的问题。谷歌的概念并不完善。有可能通知您的后端服务器有关金融交易的信息(请参阅此处),但我不建议这样做。您的业​​务交易依赖于许多 Google 服务和服务器正常运行时间。如果出现任何问题或出现故障或其他情况,您将不会收到通知,并且您的后端业务逻辑不再起作用。

你提到的谷歌的这个推荐也很糟糕。如果存在自动更新(向您的应用程序提供新的 purchaseToken)并且用户从未打开您的应用程序会发生什么情况。那么新的订阅数据将永远不会传输到您的服务器。如果您从未获得新令牌,您如何检查用户是否仍然是订阅者,因为这个有限的 Google Play 开发人员 API 愚蠢地需要一个 purchaseToken 作为参数(请参见此处),只要用户不这样做,您就永远不会得到自动续订后至少打开一次您的应用程序(以将其提交到您的服务器)。

我考虑以这种方式实现这一点:
1.)我通过cron作业不断检查购买记录。购买记录是一个数据库条目,其中包含来自初始订阅的所有数据(orderId、purchaseToken 等,服务器上安全验证过程所需的所有数据)。每条购买记录都连接到我的后端系统中的用户帐户(一些用户 ID)。只要 purchaseRecord 的autoRenewing属性不为 false,订阅就有效。即使expiryTimeMillis超过,这个用户仍然可以有一个有效的订阅,因为我上面描述的用例:订阅将由谷歌自动更新,但用户永远不会打开应用程序,所以没有传输令牌发送到您的服务器和您仍然没有收到有关订阅更新的通知。

2.) 如果用户在任何时候取消他的订阅,自动更新在任何时候都会是错误的。这意味着订阅确实会在expiryTimeMillis结束。

3.) 当用户打开您的应用程序并将新的purchaseToken 传输到您的后端时,您将获得一条新的购买记录,该记录再次与他的用户ID 连接到用户帐户。用户现在可能有 2 条购买记录。旧的和新的。如果是这样,您可以删除旧的,并在步骤 1 对新的购买记录重复相同的过程。

到目前为止我还没有实现这个概念,所以我不知道这是否真的像这样工作。也许这可以以不同的方式工作,但也许这是朝着正确方向迈出的一步。

于 2017-11-14T20:26:57.493 回答
1

我不认为,依靠每天的 cronjob 是解决这个问题的可行方法,它很混乱,你还必须考虑当你的应用程序处理太多请求时的情况,你有使用的事务限制安卓开发者的api。实现它的更好方法是使用谷歌的推荐。哪些统计:

... 注意:由于配额限制,不建议通过定期轮询 Google Play 开发人员 API 来检查状态,而不是利用实时开发人员通知。 ...

于 2021-02-22T07:11:24.333 回答
0

在这里,您可以按照以下 url How to get expiry date for Subscription with client side in Android? 并实现自动续订订阅。

于 2021-05-07T07:44:47.457 回答