0

我正在构建一个提供应用内购买的 Windows 应用商店应用。从可用的文档中我不明白这如何与多个安装或设备一起工作。我希望我的用户能够在不同设备上使用多个安装的 IAP(购买一次,在任何设备上使用)。

以下是使用收据验证购买的摘录:

在某些情况下,您可能需要验证用户是否购买了您的应用,或者是否购买了应用内内容。例如,想象一个提供下载内容的游戏。如果购买游戏内容的用户想要在不同的 Windows 8 设备上玩游戏,您需要验证用户是否已经拥有该内容。

并且还可以保护您的 Windows 应用商店应用程序免遭未经授权的使用

为防止用户采用此策略非法使用您的应用程序,我们提供了收据功能,可让您验证用户对您的应用程序和服务的访问权限。您的应用能够获得通过 Windows 应用商店进行的任何与应用相关的交易的签名收据,例如应用的初始购买和任何应用内购买。然后,您的应用可以使用此信息来确定该用户可以访问哪些服务或功能。[...] 每个收据元素的 ID 对于每个用户(和设备)都是唯一的,您可以在服务器上对其进行验证,以确认该交易对该用户而言是合法的,而不是欺诈性交易。当您的应用程序有自己的身份验证机制时,这尤其有价值,因为它允许您验证似乎购买了您的应用程序的每个用户实际上是

我的问题是:

  1. 什么时候需要有一个后端来存储收据?
  2. 我何时检查后端的收据(应用程序启动时)?
  3. 每个设备的收据都是唯一的。这对多个设备有何帮助?如果我的用户购买了一次,我希望我的用户能够在多个设备上使用 IAP。
  4. 如果收据用于验证合法交易,这是否意味着CurrentApp组件提供的信息可能不是真实的,而是受到黑客攻击?如果是这样,我为什么要首先信任原始收据?
4

1 回答 1

0
  1. XML签名可以在设备上毫无问题地检查,但设备可能会受到损害(理论上),最好在您的服务器上检查它(我认为这个例子是关于一些可以购买的在线游戏或杂志应用程序带有可下载的内容)。
  2. 当用户尝试使用它或获取可用的东西时。在开始时,如果它对应用程序工作很重要。没有限制,但这需要一些时间,用户应该知道应用程序正在做某事而不仅仅是挂起。
  3. ID 看起来像一个值,您应该存储在后端(在用户帐户中)并根据每个 DeviceId 对其进行验证。然而,还有 ProductId 和签名足以检查一致性。
  4. 当然也可以妥协。黑客可以替换证书检查 URL,您将通过检查。这就是为什么他们建议使用后端并在您自己的服务器上检查证书的原因(但是,理论上,您的服务器也可能受到损害;)

检查收据的最佳方法:

  1. 在应用程序中获取收据。
  2. 将收据发送到后端。
  3. 在后端检查收据并允许用户下载付费内容(如果收据无效)。
于 2014-02-04T23:14:43.717 回答