这个文档讲解了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.

先翻译两篇试试,重头戏在后面~~~~~

In-app Billing 概述的更多相关文章

  1. 移动 APP 网络优化概述

    一般开发一个 APP,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用AFNetworking/OKHttp这样的网络库,管理好请求线程和队列,再自动做一些数据 ...

  2. SharePoint 2013 App 开发—App开发概述

    基于安全性的考虑,SharePoint App 不能像其它两种方式一样,直接使用安全性更高的服务端代码的API.Javascript 扮演极为重要的角色,在SharePoint App中与ShareP ...

  3. [App Store Connect帮助]八、维护您的 App(1)App 维护概述

    您在 App Store 上发行 App 后,需要执行一些任务来回复顾客反馈并在整个产品周期内维护您的 App.您可以按任何顺序执行这些任务. 监控顾客评论.销售情况和分析 您可以在 App 页面的“ ...

  4. [App Store Connect帮助]三、管理 App 和版本(6.1)转让 App:App 转让概述

    当您将某个 App 出售给其他开发者,或想要将其移至其他 App Store Connect 帐户或组织时,您需要转让该 App. 您无需将 App 从 App Store 下架,即可将其所有权转让给 ...

  5. iOS APP开发概述----学习笔记001

    之前开发过一些Android APP,如今開始学习iOS开发,未来实际工作应该会用到.未雨绸缪. 一.了解其系统层次架构 其系统分层四层,其具体例如以下: 第一层:Core OS watermark/ ...

  6. iOS开发之 xcode6 APP 打包提交审核详细步骤

    一. 在xcode6.1和ios10.10.1环境下实现app发布 http://blog.csdn.net/mad1989/article/details/8167529 http://jingya ...

  7. 快速构建Windows 8风格应用23-App Bar概述及使用规范

    原文:快速构建Windows 8风格应用23-App Bar概述及使用规范 本篇博文主要介绍App Bar概述.App Bar命令组织步骤.App Bar最佳实践.   App Bar概述 Windo ...

  8. Hybrid APP基础篇(一)->什么是Hybrid App

    最新更新 一个开源的快速混合开发框架:https://github.com/quickhybrid/quickhybrid Android.iOS.JS三端内容初步都已经完成,有完善的设计思路.教程以 ...

  9. Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较

    说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...

随机推荐

  1. Install NDK in Eclipse/Android Studio

    1. Download NDK https://developer.android.com/tools/sdk/ndk/index.html 2.Install NDK $ tar xvf andro ...

  2. ubuntu关闭时间同步与centos更改时间

    环境:ubuntu 源于一次项目需要修改系统时间,但是每次修改后又被同步回网络时间,找了好久发现是这个原因: NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于 ...

  3. JMS、AMQP和MQTT主要特性

    今天无意中看到mq的原理,才发现activeMq与ribbMq的原理是不一样的.前者是JMS的实现,后者是AMQP的实现... 原理简介:https://www.cnblogs.com/zhangyu ...

  4. MYSQL数据库的日志文件

    日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...

  5. *2.2.3 加入objection机制

    在上一节中,虽然输出了“main_phase is called”,但是“data is drived”并没有输出.而main_phase是一个完整的任务,没有理由只执行第一句,而后面的代码不执行.看 ...

  6. 数据库索引--------B/B+树、聚集、非聚集、符合索引

    摘录自博客:http://www.cnblogs.com/morvenhuang/archive/2009/03/30/1425534.html 一.引言 对数据库索引的关注从未淡出我的们的讨论,那么 ...

  7. i.mx6 Android5.1.1 System server

    1. 概述: 1. Zygote进程是Android Java世界的开创者,所有的Java应用程序进程都由Zygote进程创建: 2. Zygote创建应用程序进程过程其实就是复制自身进程地址空间作为 ...

  8. JS数组和函数 小记

    数组 JS中的数组来自window,是一个全局的对象,typeof的值是'object'. 创建数组: 1.Array(3):当只传一个值的时候,会生成一个长度为该数值的空数组. 2.Array(3, ...

  9. Package.json中dependencies依赖包中^符号和~符号前缀的区别

    刚git了webpack的包发现package.json里面dependencies依赖包的版本号前面的符号有两种,一种是~,一种是^,如下图标记: 然后搜了下在stackoverflow上找到一个比 ...

  10. SQL Serever学习9——基础查询语句

    SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...