每台设备订阅通过Google Play购物

时间:2013-04-08 20:23:08

标签: android in-app-billing android-billing

我想为将通过Google Play销售的应用设置基于订阅的结算。是否可以将同一订阅出售给同一用户但在不同的设备上?那么用户尝试使用该应用程序的每个设备都需要有效订阅吗?

我以为我可以将设备ID和用户ID存储在我自己的服务器上并以这种方式进行身份验证,但是用户不能多次购买相同的订阅是正确的吗?如果用户希望购买多个“许可证”,我是否需要一个基本相同的订阅池? Google Play Billing可以原生处理这些内容吗?

由于

2 个答案:

答案 0 :(得分:4)

Google最初的文档似乎无法实现这一目标,但深入挖掘,我发现了以下内容......

在Google Play API 2.0版中,您可以创建所谓的“非托管”产品类型,允许用户多次购买相同的内容。虽然Gooogle Developer Console明显支持这一点,但在API 3.0中似乎已经部分消失了。我认为它仍然受支持,因为使用2.0 API的应用程序仍在那里,谷歌不能放弃对此的支持。

但是,在3.0中,API文档中未列出“非托管”产品类型,但文档中说明了针对同一产品类型(一次性购买或订阅)进行多次购买的以下内容:

  

如果您使用的是版本3 API,则还可以使用托管项目   在您的申请中。您通常会实现消费   可以多次购买的商品(例如游戏币,   燃料,或魔法咒语)。购买后,托管商品不能   再次购买,直到您通过发送消费消费该项目   请求Google Play。要了解有关应用内商品消费的更多信息,   见消费物品

http://developer.android.com/google/play/billing/api.html#consume

重要提示:不能使用订阅,这意味着如果您希望客户定期续订许可证,则必须与他们联系并告知他们必须再次购买许可证。如果您的服务需要定期续订,这是一个缺点。

要获得您所追求的目标,您需要一个后端服务器来处理设备的注册并存储应用程序在购买时从Google Play收到的令牌。当用户想要从其他设备购买许可证,功能,服务(或其他)时,其他设备必须首先通过称为“消费”的过程通过Google Play发布其产品的“所有权”。它会或多或少地起作用:

  1. 第一个设备进行购买并收到purchaseToken 来自Google Play的字符串。
  2. purchaseToken与设备ID一起从应用程序发送到您的服务器并存储。
  3. 用户转到第二台设备,并希望购买该设备的许可证。该应用首先需要转到您的服务器并获取purchaseToken(第一个设备已上传),然后使用consumePurchase调用Google Play,该消费者会从用户那里释放该产品的“所有权”。
  4. 该应用随后从Google Play购买新许可证(或其他),获取新的purchaseToken并将其与设备ID一起存储在您的服务器上。
  5. 从本质上讲,Google Play不会跟踪哪个设备有该产品。它仅将Google帐户与所购买的产品相关联。由您的应用和服务器来管理许可证。

    我发现有一个潜在的问题需要解决。如果由于某种原因,应用程序无法将purchaseToken发送回您的服务器(您的服务器已关闭,用户丢弃了设备并将其中断,您的应用程序在将令牌保存在设备上之前崩溃等),那么您可能不会知道用户是否为该服务付费。 Google确实提供了一个服务器API,可让您的后端服务器在Google服务器上查询Google Play以获取有关购买的信息,但我不熟悉它或其局限性。

答案 1 :(得分:1)

您需要像在应用商品中的任何其他商品一​​样在应用内购买。

确保在开发者控制台中创建项目时,它是不受管理的,因为每个帐户只能购买一次托管项目。

当您收到购买非托管商品的确认信息时,请将详细信息(例如唯一ID)发送到您的服务器并存储在那里。

现在,只要您的应用启动,请检查您的服务器是否为授权设备。如果不是,请提示用户购买。如果是,请让他们继续使用该应用程序。

这仅适用于您需要一次性付款的情况。如果您需要订阅,则必须支付多次一次性付款,因为订阅类似于托管购买,并且只能通过任何帐户支付一次。