当用户使用其他帐户登录时,如何防止激活应用内订阅?

Kyl*_*uan 2 android in-app-purchase ios ionic-framework

我正在开发一个 Android/iOS 应用程序,该应用程序使用 Ionic 和应用内购买 2来允许用户购买按月或按年订阅。然后,使用购买令牌以及到期日期将该订阅与他们的帐户(他们从应用程序注册的帐户)绑定在一起。

我面临的问题是,当用户 A使用手机 A购买订阅时,与手机 A用户 A关联的 Google/Apple 帐户都与购买关联,因此当用户 A注销而用户 B登录时同一手机上的应用程序,用户 B尚未购买订阅,因此当他们尝试购买时,应用内购买 2 自动将状态设置为“已批准/已拥有”,因为与手机A关联的 Google/Apple 帐户已经购买了该应用程序订阅,这会欺骗应用程序认为用户 B也购买了订阅,因此激活用户 B的订阅。

如何防止多个用户登录应用程序并重复使用与 Google/Apple 帐户关联的订阅?我将非常感谢任何与此相关的提示或技巧。

这可能是一个令人困惑的问题,如果是这样的话,我深表歉意。

如果有任何帮助,我将不胜感激。先感谢您!

enc*_*ife 5

应用内购买的一个经典问题!为此,您真正需要的是一个服务器来管理您的用户 ID 的订阅状态,并且在首次购买后不要依赖设备收据。在您提供的示例中,当用户 B 登录并尝试购买时,他们会收到来自 Apple 的一条消息,表明该订阅已被拥有,并且您不执行任何操作,用户 B 将无法访问。

当用户 B 尝试进行恢复时,真正的乐趣就开始了 - 因为您的应用程序中应该有一些恢复功能。对于恢复,您仍应将收据发送到服务器,但在授予用户 B 访问权限之前,您需要检查相同的收据是否已与其他用户关联。如果您看到用户 A 已具有相同的收据,则您可以可以向用户 B 返回错误,或者将收据从用户 A 转移到用户 B - 授予用户 B 访问权限并撤销用户 A 的访问权限。

构建这个的细节将是一篇更大的文章,但希望这能为您指明正确的方向。还有像RevenueCat这样的第三方工具就是为此类事情而构建的(免责声明:我在那里工作)。

有关构建 IAP 服务器的更多信息:https ://www.revenuecat.com/blog/altconf-subscriptions-are-hard