Android 如何在开源应用程序中实现google play付费订阅?

Android 如何在开源应用程序中实现google play付费订阅?,android,google-play,google-play-services,in-app-billing,Android,Google Play,Google Play Services,In App Billing,我正在研究开发一个开源应用程序,它将在将来获得同步功能 这将通过Firebase Firestore实现。此功能仅适用于通过Google Play付费订阅abonnement的用户 现在,如果我将我的google-services.json上传到我的开源repo,任何人都可以编译应用程序并删除检查,无论是否有活动订阅 但是如果我不上传我的google-services.json,CircleCI就无法构建我的项目,因为文件丢失了 有没有人有这方面的经验,或者有什么建议 谢谢 您应该为此设置一个服

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

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

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

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

有没有人有这方面的经验,或者有什么建议


谢谢

您应该为此设置一个服务器。firebase或custom并不重要,但根据订阅状态提供服务的应用程序中不应包含购买、订阅和续订业务规则

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

这里有一个建议的适当流程

服务器:

用户需要有一个登录名 有一个用户可以订阅的产品列表,包括SKU 存在于google play商店中,在您的应用程序产品下 应用程序:

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

服务器将通过Google验证购买收据,服务器本身会向Google发出API调用,以验证收据的真实性 如果接收成功,服务器将返回成功代码 应用程序:

如果发送收据的响应成功,那么您将向billing SDK发出新请求,这一次是为了完成购买并关闭交易 当履行成功时,请致电服务器通知履行已完成。每月、每年发送订阅的长度。。。 服务器:

授予对用户刚购买的订阅内容的访问权限 当完成呼叫的续订时间结束时,您的服务器将唤醒并呼叫google续订 如果续订成功,用户将继续访问订阅内容 是的,这是一个更多的工作,但它也显着更具弹性和未来的证据比有一个真/假标志在您的应用程序


话虽如此,如果你的订阅费是每年1美元,而且你希望用户不超过10个……那么就用简单快捷的方法。你应该有一个服务器来完成这项工作。firebase或custom并不重要,但根据订阅状态提供服务的应用程序中不应包含购买、订阅和续订业务规则

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

这里有一个建议的适当流程

服务器:

用户需要有一个登录名 有一个用户可以订阅的产品列表,包括SKU 存在于google play商店中,在您的应用程序产品下 应用程序:

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

服务器将通过Google验证购买收据,服务器本身会向Google发出API调用,以验证收据的真实性 如果接收成功,服务器将返回成功代码 应用程序:

如果发送收据的响应成功,那么您将向billing SDK发出新请求,这一次是为了完成购买并关闭交易 当履行成功时,请致电服务器通知履行已完成。每月、每年发送订阅的长度。。。 服务器:

授予对用户刚购买的订阅内容的访问权限 当完成呼叫的续订时间结束时,您的服务器将唤醒并呼叫google续订 如果续订成功,用户将继续访问订阅内容 是的,这是一个更多的工作,但它也显着更具弹性和未来的证据比有一个真/假标志在您的应用程序

话虽如此,如果你的订阅费是每年1美元,而你的费用
ct的用户数不超过10个……然后采取快速简便的方法。

不要使用公共回购/公共构建服务器来获取私有信息,如google-services.json。使用虚假数据进行公开回购。请参阅:不要将公共repo/public build服务器用于私有信息,如google-services.json。使用虚假数据进行公开回购。请看:谢谢您的全面回答!我将尝试了解客户机-服务器体系结构,因为我没有这方面的经验。我理解你解释的概念,但我不知道如何实现它。如果你有一些我可以看的例子,我将非常感谢!总而言之,您还建议只将mock-google-services.json上传到我的公共repo?Mmm计费/商务通常是您组织特有的事情,因此共享一些代码既是一个安全问题,甚至可能对您毫无用处。此外,你必须真正理解整个商业流程,而不仅仅是复制别人的设置。为什么?它将中断或必须在某个截止日期内更新。如果你不知道怎么做,你将处于一个比没有更糟糕的境地。我个人的建议是你在两个团队/人之间委派流程。一个拥有后端,一个拥有Android/前端。让它工作起来既辛苦又乏味,但却是可行的。调试它、维护它、研究问题和修复它是一件非常困难的事情——特别是对于一个由1人组成的完整团队来说。示例:如果一位客户在3个月内告诉你,他们一直在向你付款,但没有收到内容,你会怎么做?问题在哪里?谁研究什么?这是真的问题还是客户在撒谎?有多少其他客户有此问题?为了解决这个问题,您做了哪些更改?谢谢您的全面回答!我将尝试了解客户机-服务器体系结构,因为我没有这方面的经验。我理解你解释的概念,但我不知道如何实现它。如果你有一些我可以看的例子,我将非常感谢!总而言之,您还建议只将mock-google-services.json上传到我的公共repo?Mmm计费/商务通常是您组织特有的事情,因此共享一些代码既是一个安全问题,甚至可能对您毫无用处。此外,你必须真正理解整个商业流程,而不仅仅是复制别人的设置。为什么?它将中断或必须在某个截止日期内更新。如果你不知道怎么做,你将处于一个比没有更糟糕的境地。我个人的建议是你在两个团队/人之间委派流程。一个拥有后端,一个拥有Android/前端。让它工作起来既辛苦又乏味,但却是可行的。调试它、维护它、研究问题和修复它是一件非常困难的事情——特别是对于一个由1人组成的完整团队来说。示例:如果一位客户在3个月内告诉你,他们一直在向你付款,但没有收到内容,你会怎么做?问题在哪里?谁研究什么?问题是真的还是在撒谎?有多少其他客户有此问题?要解决此问题,您需要做哪些更改?