这个文档讲解了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. GitHub与Git指令入门

    GitHub入门 创建账户 之前做代码版本控制都是在bitbucket上面的私有仓库.现在开源社区挺火的,想在github找些开源的工程学习一下,于是加入了github,这里记录一下入门的经历. 首先 ...

  2. 【Qt开发】QTime类

    QTime类为用户提供一系列时间的函数,封装的很全面,几乎满足了各种时间的需求. 常用方法介绍 1.QTime addMSecs(int ms) const 当前时间增加毫秒,ms可为负 2.QTim ...

  3. PHP之mb_strstr使用

    mb_strstr (PHP 5 >= 5.2.0, PHP 7) mb_strstr - Finds first occurrence of a string within another 查 ...

  4. mongodb-脏数据问题

    采用多线程后, 发现最大的问题是redis和mongodb的脏数据问题 1, upsert 的脏数据问题 多线程对同一个collect进行upsert操作时, 会引发并发脏数据问题, 最开始的解决方案 ...

  5. 查询各分类中最大自增ID

    假如现在有表结构: CREATE TABLE `msg_detail` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT 'id', `title` ) NOT NUL ...

  6. angular2自学笔记(三)---ng2选项卡

    学习了这些概念就能简单的描述一个选项功能的选项卡按钮: 数据:1.数组:实例化一个数组的类,如果想要使用这个类中的数据,需要在组件中 使用一个公共属性来暴漏这个类如 heroes=HEROES;con ...

  7. IOS Core Image之二

    在上篇博客IOS Core Image之一中了解了下CIImage.CIFilter.CIContext三个类的使用,这篇了解下滤镜链(多滤镜)和人脸检测(不是人脸识别). 一.多滤镜 1.有些效果不 ...

  8. sublime text3 破解及常用插件

    sublime text3 下载 破解 submelime Text > About sublime Text //看是否注册并 查看当前的版本 然后百度或google搜索 'sublime t ...

  9. linux改目录权限和宿主。

    改宿主. [sudo chown 用户名:用户组 ./目录/*] 改权限 [ sudo chmod -R 775 ./目录]

  10. 四、curator recipes之共享重入互斥锁

    简介 curator的recipes实现了可重入互斥锁,允许你在分布式场景下多个进程之间实现锁的互斥以协调多进程执行. 相关类:InterProcessMutex 官方文档:http://curato ...