这个文档讲解了In-app Billing的基础构成和功能,为了能够把In-app Billing功能添加到你的程序中,你需要很好的理解这些内容。
注意: 保证你的应用遵从发布地国家的相关法律. 举例说, 在欧盟这些国家, 依据 Unfair Commercial Practices Directive 法律法规禁止直接向儿童推荐购买广告商品,还有劝说他们的父母或者其他成年人给儿童购买这些广告商品。 想了解更多这个以及其他方面的东西可以参考 position of the EU consumer protection authorities 。
In-app Billing API
你的应用通过安装在设备上的Google Play程序提供的API来接入In-app Billing服务。Google Play程序传递你的应用与Google Play 服务器之间的购买请求和回应。 实际上,你的应用从来都不会直接和Google Play服务器通信。你的应用程序不需要管理它与Google Play 服务器之间任何网络连接,而是通过进程间通信(IPC)来向Google Play程序发送billing请求以及收到回应。
只有通过Google Play发布的应用才可以实现In-app Billing。为了完成in-app购买请求,Google Play程序必须能够通过网络来接入Google Play服务器。
In-app billing 版本3是最新的版本并且对许多Android设备保持了广泛的兼容。运行Android 2.2及以上版本系统并且装有最新Google Play 商店的设备(a vast majority 激活设备)都支持 In-app Billing Version 3 。
版本3功能特点
- 通过简化的API来发送请求,可以让你容易地从Google Play获取商品详细信息,in-app商品订单,还可以根据用户拥有的商品快速存储物品。注1
- 在购买完成后订单信息会同步传送到设备。
- 所有的购买都是“受管理的”(即,Google Play保持追踪in-app商品的用户所有权). 用户不可以拥有多个同样的in-app物品;在任何时候用户只能拥有一个商品。注2
- 购买的物品可以被消耗。 当消耗后,这个物品恢复到“未拥有”状态并且可以再次从Google Play购买。
- 提供对订阅商品 subscriptions 的支持。
关于其他版本In-app Billing的详细情况,可以参考 Version Notes.
In-app 商品
In-app商品是你程序内部提供来卖给用户的数字商品。举例来说,数字商品包括游戏内流通的货币,增强用户体验的应用功能升级以及你应用的新内容。
你用In-app Billing只能卖数字内容,不能卖其他实体物品,个人服务,或者其他任何需要物理运输的东西。不像收费应用,一旦用户购买了in-app 商品,程序内不会出现退款窗口。
Google Play不提供任何形式的内容交付,你负责来交付你应用内售卖的数字内容。In-app商品通常明确关联一个且只有一个应用。换句话说,就是一个应用程序不可以购买发布在其他应用程序上的In-app商品,即使他们都来自同一个开发者。
商品类型
支持多种商品类型,对于你程序如何赚钱方面提供了很大灵活。在任何情况下,你都需要在Google Play 开发者控制台(Google Play Developer Console)设置你的商品。
对于你的In-app Billing程序,你可以指定一下类型的商品 — 受管理的 in-app 商品和订阅商品(managed in-app products and subscriptions)。Google Play 处理和跟踪每个用户账号对于你程序上的in-app商品和订阅商品的所有权. 了解更多In-app Billing Version 3 支持的商品类型.
Google Play开发者控制台
你可以在开发者控制台发布你的In-app Billing应用,还可以管理你程序中各种可购买的商品。
你可以创建一个关联你应用的商品列表,包括可一次性购买的物品以及可多次购买的订阅商品。 对于每个物品,你都可以定义像物品唯一的商品ID(也称为SKU),商品类型,价格,描述以及Google Play如何处理和追踪商品的购买等此类的信息。
你也可以创建一个测试账号,可以授权这个测试账号进入你未发布的应用。
想知道如何使用开发者控制台配置你的in-app商品和商品列表,参见 Administering In-app Billing.
Google Play 购买流程
Google Play 使用的结算后端服务和应用购买一样,所以在购买流程上会保持一致和熟悉的用户体验。
重要: 在Google Play上使用In-app Billing服务,需要谷歌支付账户(Google payments merchant account).
在初始化购买时,你的应用会为一个指定的in-app商品发送一个billing请求。 Google Play 随后会处理交易的所有结算细节,包括请求和确认支付的方式,金融交易的处理。
When the checkout process is complete, 当结算处理完毕,Google Play 会向你的应用发送购买详情,例如订单号码,订单日期和时间以及支付价格。你的应用程序完全不需要去处理任何金融交易,这些事Google Play都帮你做了。
例子
为了帮助你集成In-app到你的应用中,Android SDK 提供了一个示例程序,演示了如何在一个应用里卖in-app商品和订阅商品。
TrivialDrive sample for the Version 3 API 例子演示了如何使用In-app Billing Version 3为一个开车游戏实现了in-app商品和订阅商品的购买。这个应用展示了如何发送In-app Billing请求以及处理来自Google Play的同步回应。这个应用也演示了如何使用API来记录物品的消耗。这个使用版本3的例子包括方便好用的类用来处理In-app Billing操作,还写了自动签名认证。注3
推荐: 发布应用前最好混淆你的代码. 更多信息参考 Security and Design.
迁移考虑
In-app Billing Version 2 API 不推荐使用了并且将在2015年一月终止运行。(译者注:现在已经7月,很早就停了,官方这个教程还没更新) 如果目前有使用V2版本实现In-app或者更早版本的,必须要迁移到V3 In-app Billing Version 3.
如果已经发布了销售内购商品的应用,请注意:
- 你先前在开发者控制台设置的受管理的物品和订阅商品,在使用V3支付后会和先前一样,无需改变。
- 当你使用V3支付在现有程序中购买不受管理物品时,这些商品会被当做受管理商品,你不必为这些商品在开发者控制台创建新的商品,你还是可以使用同样的商品ID来购买这些物品。如果你使用V2或者更早的支付来购买这些商品,他们还是会被当做不受管理的商品。
注1:原文 Requests are sent through a streamlined API that allows you to easily request product details from Google Play, order in-app products, and quickly restore items based on users‘ product ownership 这句翻译的感觉很不好,请指导。
注2:原文 The user cannot own multiple copies of an in-app item; only one copy can be owned at any point in time 如何翻译
注3:原文 The Version 3 sample includes convenience classes for processing In-app Billing operations as well as perform automatic signature verification.
先翻译两篇试试,重头戏在后面~~~~~