应用程序如何将账户与应用内购买订阅绑定?

5

我正在开发一个iOS应用程序,用户必须登录/注册我的应用帐户才能使用。为了能够使用我的服务,我希望用户通过应用内购买来支付(在我的情况下是自动续订)。这将使他们的应用内购买与他们的帐户(他们与我们创建的帐户)相关联,以便在任何其他iOS设备上使用。

情况1: 例如,如果在手机A上为一个帐户购买了订阅服务,则在使用相同帐户登录到手机B时,不应再向用户收费。

情况2: 或者,如果在手机上为帐户A购买了订阅服务,在使用同一手机注册帐户B时,应该要求用户为帐户B付费。

基本上,我想让应用内购买与我的帐户关联(而不是与苹果设备/苹果账户关联,这是我理解的方式)。

我知道有收据这个东西,那么这可能是我问题的一部分答案。或者,如果这是应用内购买的限制,除了使用苹果的IAP之外,还有什么其他方法可以实现呢?


我计划在应用程序中验证收据并将其上传到我的数据库。如果这是正确的方法,我不确定。 - Matt Bart
苹果只知道苹果ID,而不知道您的账户系统。您需要使用收据上的原始交易细节来确定该订阅已经与另一个账户关联,并且要么不为此账户激活订阅,要么在其他账户上删除订阅的活动状态。强烈建议您在服务器上验证收据,而不是在应用程序中进行验证,以防止攻击您的验证代码。 - Paulw11
你有没有针对第二种情况的解决方案?基本上,我想为两个用户购买订阅,即使IOS设备相同。谢谢! - Mohit Ratanpara
1个回答

4
问题标题的答案:
当购买完成后,应用程序会在下次启动时接收到更新,其中包含交易ID(续订的原始交易ID),您应该将此交易ID与您的应用程序用户ID关联起来。
情况1:苹果提供了一个“恢复购买”选项。由于使用相同的帐户,您的应用程序服务器已经知道用户已经付款,因此应用程序不应提示用户再次付款。但是,为了在B手机上接收即将到来的续订更新,您必须“恢复购买”,这将使苹果也将先前在此设备上的购买链接起来。恢复完成后,用户的购买收据将可在设备上使用,并且所有后续操作都应基于收据的内容验证进行。
以下几点需要注意: 1. 如果应用程序没有向用户提供此选项,则苹果将拒绝您的应用程序。 2. 即使您的应用程序存在错误,而您未能恢复购买,用户也不会被再次收费。购买将失败,显示您已经购买了此商品。
以上情况完全基于假设用户在两个设备上使用相同的Apple ID(相同的应用程序用户ID并不重要)。 案例2:我不确定这是否有可能。由于是同一设备,用户使用相同的AppleId(除非他在App Store中退出并更改apple id),而且苹果将限制重新购买。最好的情况是,您可以使用订阅内容限制帐户B,但如果您的应用程序允许在同一设备上使用多个帐户(例如Instagram)的用例,我不确定是否有相应的规定。

我为我使用的音乐服务应用程序测试了相同的场景。拥有活动订阅,注销并使用其他电子邮件(应用程序)进行注册,但购买被拒绝,提示我已经购买过。但是,它允许我升级和降级选项。我没有选择测试它们,以免弄乱我的帐户。

Here's the screenshot

P.S:还有很多其他需要注意的地方。以下是其中一些:

  1. 在情况2中,苹果限制了重新购买,但如果用户选择与当前活动订阅不同的选项(将升级/降级订阅),则不会进行限制。根据您实现的方式,它甚至可能立即或在下次用户登录或续订后更改用户A的订阅。
  2. 在这里讨论的两种情况中,用户使用相同的Apple ID,但考虑到以下情况-相同的Apple ID不同的应用程序ID和不同的Apple ID相同的应用程序ID。(请参见此处
  3. 对于情况2,您应始终刷新收据或恢复购买(如果没有可用的收据)以进行新用户登录。收据具有原始交易ID,您应该已经将其与用户A首次购买时关联起来。根据收据,您可以选择让用户B访问内容或限制访问。但是,您不能让用户为新帐户付款(我想是这样)。

有用的链接:

恢复购买

收据验证


1
你好,根据你提供的截图,这个应用程序上有恢复购买按钮吗?如果在第二种情况下选择它会发生什么? - otakuProgrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接