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

How to realize a google play billing subscription in an open source app?

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

这将通过 Firebase Firestore 实现。只有通过 Google Play Billing 订阅 abonnement 的用户才能使用此功能。

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

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

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

谢谢!

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

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

这是建议的正确流程。

服务器:

  • 用户需要登录
  • 拥有用户可以订阅的产品列表,以及 SKU 存在于 google Play 商店中,在您应用的产品下

应用程序:

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

服务器:

  • 服务器将使用 Google 验证购买收据,其中服务器本身对 google 进行 API 调用以验证收据的真实性
  • 如果收货成功,服务器returns一个成功码

应用程序:

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

服务器:

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

是的,这需要做更多的工作,但与在您的应用中使用 true/false 标志相比,它也更具弹性和面向未来。

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