page.title=管理应用内结算 parent.title=In-app Billing parent.link=index.html @jd:body

本文内容

  1. 创建商品列表
  2. 选择商品类型
  3. 设置测试帐户
  4. 处理退款
  5. 使用订单号
  6. 获取相关支持

另请参见

  1. 应用内结算概述

如果您使用应用内结算,您就无需处理任何财务交易。不过,您仍需执行一些管理任务,包括在 Google Play 开发者控制台上创建和维护您的商品列表、注册测试帐户以及在需要时处理退款。

您必须有 Google Play 发布商帐户才能注册测试帐户。而且,您必须有 Google 电子钱包商家帐户才能创建商品列表以及向用户发放退款。如果您已有 Google Play 发布商帐户,则可以使用您的现有帐户,无需注册新帐户就能使用应用内结算。

如果您没有发布商帐户,可以在 Google Play 开发者控制台中以 Google Play 开发者的身份注册设置一个发布商帐户。如果您没有 Google 电子钱包商家帐户,也可以通过开发者控制台注册一个。

创建商品列表

Google Play 开发者控制台为您发布的每个应用都提供一份商品列表。您可以使用 Google Play 的应用内结算功能销售商品,但前提是该商品已在应用的商品列表中列出。每个应用都有自己的商品列表,您不能在某个应用中销售其他应用的商品列表中列出的商品。

您可以点击开发者帐户中列出的应用内的应用内商品链接,访问该应用的商品列表(参见图 1)。只有当您拥有 Google 电子钱包商家帐户且该应用的清单中包含 com.android.vending.BILLING 权限时,应用内商品链接才会显示。

商品列表列出了您在应用内销售的商品(应用内商品、订阅内容或两者的组合)。对于每件商品,商品列表中都会包含商品 ID、商品说明和价格等信息。商品列表只存储应用内所售商品的相关元数据,而不会存储任何数字内容。应用内销售的数字内容的存储和发送是由您负责的。

图 1. 您可以点击“应用”主导航面板中的应用内商品链接,访问应用的商品列表。

您可以为所有已发布的应用或者 Alpha 或 Beta 渠道中的所有应用(这些应用上传并保存到开发者控制台)创建商品列表。不过,您必须有 Google 电子钱包商家帐户且该应用的清单中必须包含 com.android.vending.BILLING 权限。如果应用的清单中未包含此权限,您只能在商品列表中修改现有商品但不能向该列表添加新商品。要详细了解此权限,请参阅更新您应用的清单

注意:过去,您可以通过上传未发布的“草稿”版本来测试应用,但现在系统已不再支持此功能。因此,您必须将应用发布到 Alpha 或 Beta 分发渠道,才能进行测试。有关详情,请参阅草稿应用不再受支持

此外,一个应用包只能有一个商品列表。如果您为某个应用创建商品列表且使用多 APK 功能为该应用分发多个 APK,那么此商品列表将应用到与该应用商品详情相关联的所有 APK 版本。如果您使用的是多 APK 功能,则无法为各个 APK 创建单独的商品列表。

您可以通过两种方式向商品列表添加商品:通过应用内商品界面逐一添加商品(参见图 2);通过导入逗号分隔值 (CSV) 文件中的商品批量添加商品。如果您的应用只有几件应用内商品或您只是向商品列表添加几件测试商品,那么逐一添加商品这种方法就非常实用。如果您的应用有大量应用内商品,使用 CSV 文件的方法就较为实用。

注意:目前系统尚不支持批量上传包含订阅内容的商品列表。

向商品列表逐一添加商品

要通过应用内商品界面向商品列表添加一件商品,请按以下步骤操作:

  1. 登录到您的发布商帐户。
  2. 所有应用面板中,点击相应的应用名称,然后选择应用内商品
  3. 点击添加新商品(参见图 2),提供所售商品的详细信息,然后点击保存发布

图 2. 通过“添加新商品”页面,您可以向应用的商品列表添加商品。

对于商品列表中的每件商品,您都必须输入以下信息:

图 3. 为应用内商品指定其他货币。

要详细了解商品 ID 和商品列表,请参阅创建应用内商品 ID。要详细了解定价,请参阅应用内结算定价

注意:请务必规划好您的商品 ID 命名空间。商品 ID 保存后就无法再重复使用或更改。

向商品列表批量添加商品

要使用 CSV 文件向商品列表批量添加商品,您需要先创建 CSV 文件。您在 CSV 文件中指定的数据值与您通过应用内商品界面手动指定的数据值相同(请参阅向商品列表逐一添加商品)。

如果您通过 CSV 文件导入和导出应用内商品,请记得提供含税价格。如果您使用自动填充,请提供不含税的默认价格,系统会自动填充含税的价格。如果您不使用自动填充,您提供的价格必须是含税价格。

注意:目前系统尚不支持批量上传包含订阅内容的商品列表。

CSV 文件使用逗号 (,) 和分号 (;) 来分隔数据值。逗号用来分隔主要数据值,分号用来分隔次要数据值。例如,CSV 文件的语法如下所示:

"product_id","publish_state","purchase_type","autotranslate ","locale; title; description","autofill","country; price"

相关说明和使用详情如下所示。

表 1. 您可以在“locale”字段中使用的语言代码。

语言 代码 语言 代码
中文 zh_TW 意大利语 it_IT
捷克语 cs_CZ 日语 ja_JP
丹麦语 da_DK 韩语 ko_KR
荷兰语 nl_NL 挪威语 no_NO
英语 en_US 波兰语 pl_PL
法语 fr_FR 葡萄牙语 pt_PT
芬兰语 fi_FI 俄语 ru_RU
德语 de_DE 西班牙语 es_ES
希伯来语 iw_IL 瑞典语 sv_SE
印地语 hi_IN -- --

要导入您在 CSV 文件中指定的商品,请执行以下操作:

  1. 登录到您的发布商帐户。
  2. 所有应用面板中,点击相应的应用名称,然后选择应用内商品
  3. 在“应用内商品列表”页面上,点击导入/导出 > 从 CSV 文件中导入应用内商品,然后选择 CSV 文件。

    CSV 文件必须位于您的本地计算机上或连接到您计算机的本地磁盘上。

  4. 如果您想覆盖商品列表中的现有商品,请选中覆盖复选框。

    只有当 CSV 文件中的“product_id”值与商品列表中现有商品的应用内商品 ID 一致时,此选项才会覆盖现有商品的值。覆盖功能不会删除商品列表中已列出但不包含在 CSV 文件中的商品。

您还可以点击“应用内商品列表”页面上的导出为 CSV,将现有商品列表导出为 CSV 文件。如果您已将商品手动添加到商品列表,但现在想开始通过 CSV 文件管理该商品列表,此功能就非常有用。

选择商品类型

商品的商品类型用来控制 Google Play 如何管理该商品的购买流程。商品类型有以下三种:“按用户帐户管理的商品”、“不受管理的商品”和“订阅内容”。但请注意,不同版本的应用内结算服务支持的商品类型不同,因此务必根据您的应用所用的应用内结算版本,选择合适的商品类型。

有关详情,请参阅应用内结算第 3 版应用内结算第 2 版的相关文档。

处理退款

应用内结算不允许用户向 Google Play 发送退款申请。应用内购买的退款事宜必须直接发送给您(应用开发者)。然后,您可以通过您的 Google 电子钱包商家帐户处理这笔退款。当您处理退款时,Google Play 会收到 Google 电子钱包发来的退款通知,并且 Google Play 会向您的应用发送退款消息。有关详情,请参阅处理 IN_APP_NOTIFY 消息应用内结算定价

重要提示:您不能使用 Google Wallet API 发放退款或取消应用内结算交易,而是必须通过您的 Google 电子钱包商家帐户手动执行此类操作。不过,您可以使用 Google Wallet API 检索订单信息。

使用订单号

当用户购买应用内商品时,Google 电子钱包会为此次交易分配一个永久有效且独一无二的订单号。Google Play 在购买流程结束时会向您提供该订单号,作为 PURCHASE_STATE_CHANGED Intent 中的 orderId 字段的值。

在您的应用中,您可以使用该订单号作为此次应用内购买交易的通用标识符。购买后,您可以利用该订单号在对帐报表中跟踪此次交易,以及在提供客户支持时使用该订单号。

订单号是完全由数字构成的字符串,格式由 Google 电子钱包指定和管理。

对于发生在 2012 年 12 月 5 日及以后的交易,Google 电子钱包会分配一个商家订单号(而非 Google 订单号)并将该商家订单号报告为 orderID 的值。示例如下:

"orderId" : "12999556515565155651.5565135565155651"

对于发生在 2012 年 12 月 5 日之前的交易,Google Checkout 分配的是 Google 订单号并已将该编号报告为 orderID 的值。下面是使用 Google 订单号的 orderID 的示例:

"orderId" : "556515565155651"

设置测试帐户

通过 Google Play 开发者控制台,您可以设置一个或多个测试帐户。测试帐户是您在开发者控制台上注册为测试帐户的常规 Google 帐户。测试帐户已获得授权,可从您已上传到 Google Play 开发者控制台但尚未发布的应用中进行应用内购买。

您可以使用任意 Google 帐户作为测试帐户。如果您想让多位用户在应用上测试应用内结算但又不想让他们获得您的发布商帐户的登录凭据,测试帐户就非常有用。如果您想拥有并控制测试帐户,可以自行创建帐户,然后将凭据分发给您的开发者或测试者。

测试帐户有三条限制:

要向您的发布商帐户添加测试帐户,请按以下步骤操作:

  1. 登录到您的发布商帐户。
  2. 点击设置图标。
  3. 找到“许可测试”面板。
  4. 添加您要注册为测试帐户的电子邮件地址,各帐户之间用英文逗号分隔。
  5. 点击保存,保存您的个人资料更改。

获取应用的许可密钥

Google Play 开发者控制台为每个应用都提供一个公用的许可密钥。要获取应用的密钥,请按以下步骤操作:

  1. 打开所有应用面板。
  2. 点击相应的应用名称,然后选择服务和 API
  3. 向下滚动到此应用的许可密钥字段,找到应用的密钥,如下图所示。

过去,开发者控制台为每个开发者帐户都提供一个公钥。为了将应用迁移到按应用分配的新公钥,开发者控制台将应用专用密钥设置为之前的开发者密钥。这样做可确保依赖于(之前的)开发者密钥的应用能与新公钥兼容。

图 4. 您可以在服务和 API 面板中找到各个应用的许可密钥。

获取相关支持

如果您在实施应用内结算时有疑问或遇到问题,请与下表列出的支持资源联系(参见表 2)。将您的问题发布到正确的论坛上,可以更快获得所需支持。

表 2. 适用于 Google Play 应用内结算的开发者支持资源

支持类型 资源 主题范围
开发与测试问题 Google 网上论坛:android-developers 应用内结算集成问题、有关用户体验的提示、对响应的处理、混淆代码、进程间通信 (IPC)、测试环境设置。
堆栈溢出:http://stackoverflow.com/questions/tagged/ android
结算问题跟踪器 结算项目问题跟踪器 与应用内结算示例代码直接相关的错误和问题报告。

要了解如何向上述所列论坛发帖的一般信息,请参阅“资源”标签中的开发者论坛一文。