google iab 充值开发流程!
以下是google iab的交互流程
在开发开始之前,首先要确定的是你是否已经在google player的里发布了商品,并确定是否通过!
第二,确定是否已经开放了该区域的应用或游戏下载(比如在台湾区,把google player设为台湾区,如果可以直接在市场上搜到即可!)
第三,这是要注意的,在和谐社会里的应用或游戏是不能用google player的,但在国内使用其它地区的就可以付费。所以如果我们要测试的话,要准备好一张非大陆地区的信用卡或银行卡!
确定上面的条件后,我们就可以正式开发啦!
首先,下载google iab;
如果已经下载过了,那就可以跳过此步骤!
下载完成以后,你在<sdk>/extras/google/market_billing/目录下会找到以下的文件夹,该目录下有v2和v3两个version,两个是有区别,并不是说v3就比v2好,这要视情况而定,具体可以参考官方文档http://developer.android.com/google/play/billing/billing_overview.html
第二步:配置google iab环境。
添加 IMarketBillingService.aidl
文件到你的工程,操作如下:
- 在你的程序的
/src
目录下创建以下目录,最好是通过包的形势创建:com/android/vending/billing/
- 把
IMarketBillingService.aidl
文件复制到你的工程 <project>/src/com/android/vending/billing/目录下
. - 重新build一下你的工程.
当你build完成以后,你会发现一个
IMarketBillingService.java
在你的工程的 gen
目录下!当代码配置上去后,我们开始添加一些权限之类的东西到Manifest
<uses-permission android:name="com.android.vending.BILLING" /><!-- google iab 购买权限-->
在<application>标签里添加
<serviceandroid:name="BillingService"/>
<receiverandroid:name="BillingReceiver"]] >
<intent-filter>
<actionandroid:name="com.android.vending.billing.IN_APP_NOTIFY"/>
<actionandroid:name="com.android.vending.billing.RESPONSE_CODE"/>
<actionandroid:name="com.android.vending.billing.PURCHASE_STATE_CHANGED"/>
</intent-filter>
</receiver>
当然,还有一些网络之类的权限,我就不一一说明了!
第三步:使用;
全面点的使用方法,在官方文档里有很详细的说明,我就不多此一举了!我直接说快速使用吧!我也是被公司逼的!具体如下!
先来看一下官方给的v2的demo结构吧(我现在主要是以v2为主,关于v3的话,要使用就更为简单了,这个以后再说!)
File | Description |
---|---|
IMarketBillingService.aidl | Android Interface Definition Library (AIDL) 文件定义了有关google iab服务相关的 IPC (MarketBillingService ). |
Dungeons.java | 这个是官方给的demo mainActivity,(我们要改动的地方啦) |
PurchaseDatabase.java | 保存本地的购买数据!(我现在没有使用这个东西) |
BillingReceiver.java | BroadcastReceiver 这个是用来接收购买广播的,与其相关的是BillingService . |
BillingService.java | Service 这个是用来绑定到MarketBillingService的 .只有绑定后,我们才能发起购买,所以我们手机里必须要安装google player和能正常运行google Player. |
ResponseHandler.java | Handler 这个类包含了许多购买相关的数据,和用来更新ui的方法; |
PurchaseObserver.java | 购买状态更改后的相关 |
Security.java | 购买发起后,对数据的较验,最好是放在服务器端进行,这样更为安全 |
Consts.java | 定义了一些宏,具体就自己去看文档去! |
Base64.java and Base64DecoderException.java | google 给出的加密类! |
现在可以开始coding了!我们先把Dungeons.java里的代码考贝一份到你工程的其中一个activity里,我是放到了第一个avtivity里,因为我是用c++开发的,所以我可能和你们有点不同!,在合并两个activity时,记得要注意一些重复的方法哦,我们只需要把重复的方法代码合并就行!去除或更改一些ui更新相关的的error后,项目基本是能运行起来的了!(注意:代码里的几个方法是我们在做测试时要去掉的!比如要我们填入key呀之类的,这些最好是放到服务器去处理,我们在代码里就乱填就行了!还要就是一些check检查,在大陆这个和谐社会里,你懂的!)
第四步:这也是最重要的一步了;
如果前面的都搞定那些error的话,能运行起来,那就行了!不信的话,你可以别期它地区的人来测一下!
每当我们发起购买后,拿到google player里的我们商品的数据时,我们在Security.java里的publicstatic ArrayList<VerifiedPurchase> verifyPurchase(String signedData,
String signature) 方法里获取到相关的数据,就是其中的signedData和signature,signedData是json格式的数据,里面有的是一些商品信息,signature就是我们要用公钥去较验的,匹配的话,我们才发起付费,如果不匹配还发起付费,后果我还真的不知道。
所以我们要在该方法的if (!TextUtils.isEmpty(signature))在域里添加我们的验证,要发服务器呀之类的神马!
第五步:已经完了,没有啦!去测试去吧!