如何在开源应用中实现google play计费订阅?

the*_*ani 1 android in-app-billing google-play google-play-services

我正在研究开发一个开源应用程序,它将在未来获得同步功能。

这将通过 Firebase Firestore 实现。此功能仅适用于通过 Google Play Billing 订阅 abonnement 的用户。

现在,如果我将我的google-services.json代码上传到我的开源存储库,任何人都可以编译应用程序并删除检查,无论是否有有效订阅。

但是如果我不上传我的google-services.json.CircleCI 无法构建我的项目,因为文件丢失了。

有没有人有这方面的经验,或一些提示?

谢谢!

Too*_*dos 6

你应该有一个服务器。firebase 或 custom 无关紧要,但购买、订阅和续订业务规则不应在您的应用程序中根据订阅状态提供服务。

如果所有逻辑都在您的应用程序中,而没有服务器,那么您肯定会遇到此问题。没有办法解决这个问题。您还应该假设有人破坏您的订阅逻辑(以提供免费访问),并且该 apk 将永远列在 apkmirror 之类的东西上,供任何人获取。

这是建议的适当流程。

服务器:

  • 用户需要登录
  • 在您的应用的产品下有一个用户可以订阅的产品列表,其中包含 Google Play 商店中存在的 SKU

应用程序:

  • 应用程序调用您的服务器以获取该用户可用的产品列表。您真的很关心为此获得 SKU。
  • 向谷歌的计费客户发出请求以获取 SKU 列表的定价
  • 当客户使用 google 的 billing sdk 购买东西时,你会得到一个购买收据对象
  • 将您的购买收据发送到您的服务器

服务器:

  • 服务器将与谷歌验证购买收据,服务器本身向谷歌发出 API 调用以验证收据的真实性
  • 如果接收成功,服务器返回一个成功码

应用程序:

  • 如果发送收据的响应成功,则您向计费SDK发出新请求,这次完成购买(关闭交易)
  • 当履行成功时,调用您的服务器以通知履行已完成。发送订阅的长度(每月,每年...)

服务器:

  • 授予对用户刚购买的订阅内容的访问权限
  • 当续订时间到了(来自执行调用),您的服务器会唤醒并调用 google 来续订订阅
  • 如果续订成功,用户可以继续访问订阅内容

是的,这需要做更多的工作,但与在您的应用程序中设置真/假标志相比,它也更具弹性和未来证明。

话虽如此,如果您的订阅费用为每年 1 美元,并且您希望拥有的用户不超过 10 名……那么请使用快速简便的方法。