直接从服务器访问StoreKit收据

时间:2012-03-04 05:46:48

标签: ios storekit

我正在构建一个iOS应用,它提供了我们网站已经提供的服务。这是一项基于订阅的服务,您订阅时会启用所有功能。为了让人们在应用程序上注册定期付款,似乎我必须通过Apple的应用程序购买API,以及自动续订订阅。这没关系,但问题是用户通过应用程序购买的服务也必须在网站上可用。但阅读演练和开发人员指南,看起来处理事务的唯一方法是通过应用程序本身,然后可以设置为将信息传递给服务器。但后来我想象这个场景:

用户在iOS应用程序上购买订阅,在使用该网站和iOS应用程序之间来回切换。在用户被收费的那一天,以及之后的几天,无论出于何种原因,他们只使用网站。服务器不知道他们已经收费,因此功能被禁用。为了让服务器找出用户已经被Apple收费,用户必须在他们的iphone或ipad上打开应用程序并将其与Apple和我的服务器同步。

我的服务器有没有办法直接ping Apple并获取有关为给定用户购买应用的信息?我找不到任何东西;两个建议的布局,有或没有服务器,都使用iOS应用程序作为Apple的唯一通信器,除了让服务器验证信息是有效的。如果服务器无法直接获取此信息,那么还有其他可能的解决方案吗?

  1. 尽量不要使用Apple的内置支付系统,并且有被拒绝的风险(应用程序复制了多年在线可用的服务,我们不再需要使用他们的应用内购买系统吗?)
  2. 如果用户通过Apple付款,请让服务器在预期付款日期和功能被禁用之间给予他们大量缓冲(使问题发生的频率降低但不解决)
  3. 当他们的帐户似乎已过期到服务器但却没有预料到时,请向用户发送一条消息,说明他们必须打开应用程序,否则他们的帐户将不会被记入购买的时间(看起来很奇怪,而不是真的为了使用该服务,必须要求用户做的好事)
  4. 这是我到目前为止所能想到的一切。任何人对这些解决方案有任何建议,或了解他人,或知道我可以与谁交谈以试图解决这个问题?

1 个答案:

答案 0 :(得分:4)

是的,您可以从服务器查看用户帐户的状态。有几点需要注意:

  • 首先,自动续订订阅仅限于杂志和报纸等期刊。如果您的应用程序与那些应用程序不相似,Apple可能会拒绝它(就像他们的那样)并请求您使用非续订订阅(阅读:手动更新订阅)。
  • 第二:此方案要求您在服务器上存储您在应用上收到的所有收据。
  • 最后:我不知道您的用户名/密码系统是如何运作的,但用户必须使用与您网站上相同的凭据登录。

以下是检查用户帐户状态的方法:在服务器上为每个用户至少存储一个收据。如果要查看状态,请按照Apple Verifying App Store Receipts的程序操作。向他们发送一张收据,他们将回复最新收据和到期日期。现在你知道,在任何特定时刻,一个人的账户是否是最新的。