7

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

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

谢谢

4

2 回答 2

6

谷歌的文档最初似乎使这不可能实现,但深入挖掘,我发现了以下内容......

在 Google Play API 2.0 版中,您可以创建所谓的“非托管”产品类型,允许用户多次购买相同的东西。这似乎在 API 3.0 中部分消失了,尽管 Google 开发者控制台明确支持这一点。我认为它仍然受支持,因为使用 2.0 API 的应用程序仍然存在,而 Google 不能放弃对它的支持。

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

如果您使用的是版本 3 API,您还可以在应用程序中使用托管项目。您通常会为可以多次购买的物品(例如游戏内货币、燃料或魔法)实施消耗。购买后,在您通过向 Google Play 发送消费请求消费该项目之前,无法再次购买受管理的项目。要了解有关应用内产品消费的更多信息,请参阅消费项目

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

重要提示:不能使用订阅,这意味着如果您希望客户定期更新他们的许可证,您必须联系他们并告诉他们必须再次购买许可证。如果您的服务需要定期更新,那将是不利的。

要获得您想要的东西,您将需要一个后端服务器来处理设备注册并存储应用程序在购买时从 Google Play 收到的令牌。当用户想要从另一台设备购买您的许可、功能、服务(或其他)时,另一台设备必须首先通过称为“消费”的过程向 Google Play 释放其对产品的“所有权”。它或多或少会像这样工作:

  1. 第一台设备进行购买并从 Google Play 接收 purchaseToken 字符串。
  2. purchaseToken 与设备 ID 一起从应用程序发送到您的服务器并存储。
  3. 用户转到第二台设备并希望为该设备购买许可证。该应用程序首先需要访问您的服务器并获取purchaseToken(第一台设备上传的),然后使用consumePurchase 调用Google Play,从而释放用户对产品的“所有权”。
  4. 然后,该应用程序从 Google Play 购买新许可证(或其他),获取新的 purchaseToken 并将其与设备 ID 一起存储在您的服务器上。

从本质上讲,Google Play 不会跟踪哪个设备拥有该产品。它仅将 Google 帐户与所购买的产品相关联。由您的应用程序和服务器来管理许可证。

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

于 2013-08-03T16:24:47.267 回答
1

您将需要像对任何其他应用内商品一样实施应用内购买。

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

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

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

这仅在您需要一次性付款时才有效。如果您需要订阅,则必须一次性支付多次,因为订阅类似于托管购买,并且只能由任何帐户支付一次。

于 2013-04-08T20:59:42.513 回答