这个文档讲解了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. js关闭当前页面

    <a href="javascript:window.opener=null;window.open('','_self');window.close();">关闭&l ...

  2. Kibana插件sentinl实现邮件报警

    为什么会突然想用到对日志的异常内容进行邮件报警,是因为在上周公司的线上业务多次出现锁表,开发在优化sql的同时,我也在想是不是可以对日志的异常内容进行检测并实现邮件预警. 在网上查询了一些资料后,决定 ...

  3. linux ssh 免密码登录的配置过程

    # ssh-keygen -t rsa -C "自定义描述" -f ~/.ssh/自定义生成的rsa文件 # cd ./.ssh # touch config # 粘贴  Host ...

  4. nginx timeout 配置 全局timeout 局部timeout web timeout

    nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响 ...

  5. 【angular5项目积累总结】http请求服务封装

    http.provider.ts import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/co ...

  6. TCP/IP提供网络传输速率

    丢包(超时)->减少超时时间->ECN(有网络设备通知终端,有丢包发生)->DCTCP(优化快恢复) 丢包是超时的充分条件,但不是必要条件,因此也可通过其他方式获得丢包是否发生,比如 ...

  7. D3基础--数轴

    转载请注明出处! 概述: 与比例尺类似,D3的数轴实际上也使用来定义参数的函数.但与比例尺不同的是,调用数轴函数并不会返回值,而是会生成数轴相关的可见元素.包括:轴线,标签和刻度. 但是要注意数轴函数 ...

  8. 七、spark核心数据集RDD

    简介 spark RDD操作具体参考官网:http://spark.apache.org/docs/latest/rdd-programming-guide.html#overview RDD全称叫做 ...

  9. spring源码学习(一)

    由于本人水平有限,本文内容较为简单,仅供个人学习笔记,或者大家参考,如果能够帮助大家,荣幸之至!本文主要分析AnnotationConfigApplicationContext实例化之后,到底干了那些 ...

  10. 撩课-Java每天5道面试题第26天

    161.简述一下springMVC当中的视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法 S ...