验证应用内购买

时间:2014-02-04 20:40:35

标签: in-app-purchase windows-store-apps licensing windows-store receipt

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

以下摘自Using receipts to verify purchases

  

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

还来自Protecting your Windows Store app from unauthorized use

  

防止用户使用此策略非法使用您的   应用程序,我们有一个收据功能,允许您验证用户的   访问您的应用和服务。您的应用可以获得签名   通过Windows进行的任何与应用相关的交易的收据   存储,例如最初购买应用和任何应用内   购买。然后,您的应用可以使用此信息来确定哪些服务   或者可以为该用户访问的功能。 [...]每张收据的ID   每个用户(和设备)都是唯一的元素,您可以对其进行验证   您的服务器确认该交易是合法的   用户而不是欺诈性交易。这特别有价值   当你的应用程序有自己的身份验证机制,因为它允许   您要验证看似购买了您的应用的每个用户   事实上,它是一个独特的客户。

我的问题是:

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

1 个答案:

答案 0 :(得分:0)

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

    1. 在应用程序中获取收据。
    2. 将收据发送到后端。
    3. 检查后端收据并允许用户下载付费内容(如果收据无效)。