google内购In-App Billing
本帖地址:http://blog.csdn.net/jinjian2009/article/details/9140891
这周做了google的内购,没搞过google的内购还是觉得比较繁琐的
google官方教程:http://developer.android.com/training/in-app-billing/index.html
这个教程主要写了四节:
第一节:Preparing Your In-app Billing Application(准备你的内购应用)
内容如下:
1.下载例子程序,按照提示的做OK的,可以把项目trivialdrivesample配置到Eclipse里看看
2.添加你的应用到开发者后台。搞定之后会得到个Base64 Key,这个在代码里会用到,主要是用于google来识别你的应用
3.添加In-app Billing(后面简称iab)库。其实就是IInAppBillingService.aidl 这个文件,从例子工程里找到它,copy到自己工程下的src下的包com.android.vending.billing里面,再把例子工程里的src下的包com.example.android.trivialdrivesample.util下面的程序copy到自己工程的src下,自己创建个包名就好,本人偷懒直接用了它的包名
4.添加权限,AndroidManifest.xml里面添加
<uses-permission android:name="com.android.vending.BILLING" />
5.发起和google play的连接
在activity里添加变量mHelper,以及初始化之,这里的base64EncodedPublicKey需要赋值为之前第2步申请到的base64 Key
IabHelper mHelper;@Override public void onCreate(Bundle savedInstanceState) {// ...String base64EncodedPublicKey;// compute your public key and store it in base64EncodedPublicKeymHelper = new IabHelper(this, base64EncodedPublicKey); }
然后需要调用mHelper的startSetup方法,这是个异步方法,主要是连接google play用的,看看能不能付费什么的。我学习例子工程把这个方法写到了OnCreate里,在mHelper new出来之后。
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {public void onIabSetupFinished(IabResult result) {if (!result.isSuccess()) {// Oh noes, there was a problem.Log.d(TAG, "Problem setting up In-app Billing: " + result);} // Hooray, IAB is fully set up! } });
然后还需要在Activity里面将mHelper移除掉
public void onDestroy() {super.onDestroy();if (mHelper != null) mHelper.dispose();mHelper = null; }
PS:上面的代码可以copy例子工程里的,那里面写的可能全一点。
第二节:创建用于出售的iab商品
1.在google play里面添加iab商品。
1)这个是在后台做的,需要说明的是,这里需要添加APK文件,并且这个APK文件需要签名,必须保证这个APK是你最终的APK,意思是签名啊包名啊证书啊什么的,后面都不改了。还有不要发布该应用
2)添加商品的时候需要指定商品的信息,包括唯一标识ID,描述,价格等信息。唯一标识ID,也被称为SKU,通过SKU可以查询商品的信息
3)上传之后可能需要一段时间才能查询到信息
2.查询可购买物品
通过上面的SKU进行查询,可参照原帖子代码,或者例子工程代码
添加代码后可以运行APP,看能不能查询到商品信息。需要注意如下几点:
1)如果在google play里面添加商品的话,现在查询会出错。
2)如果在国内(大陆地区)查询也是会出错的~解决办法参考了帖子:http://zengrong.net/post/1801.htm
说下本人的解决办法:
---------------------------------------------------------------国内IAB测试方法-------------------------------------------------------------------
<1>先去找个国外VPN,我在https://www.vcupmars.com注册的,免费的20分钟会断,500M的流量~当然这网站也有没有限制的,不过需要收费,记住账号密码,以及在我的帐户里面的域名地址
<2>然后在手机上打开wifi,再设置好VPN,主要是新建个VPN,服务器为上面的域名地址,然后登陆VPN,账号密码为上面网站注册的账号密码
<3>再去卸载google play的更新,并清除数据(在 设置--》应用程序找到google play)
<4>再打开google play,进去看下,有没有付费应用可以下载,如果有说明可以了
<5>进入自己的应用,看看能不能查询到商品(如果不能的话,应该还是google play里面的问题,可以退出应用再进google,然后再进应用。我发现一般等google play商店更新完之后会OK的)
--------------------------------------------------------------------------------------------------------------------------------------------------
第三节:购买应用内计费商品
看google官方教程,或者例子工程,应该都可以
不过本人做的时候,以为出了点问题,主要是购买之后没有消耗商品~什么意思呢,google play上买东西是这样子的,他是买了之后相当于放到了仓库里,这个时候你还要去消耗它变成你应用里的东西~
如果没有消费掉的话,就会出错哦~
第四节:测试应用程序
这个也没什么说的,照着google官方帖子看看~
比较麻烦的是需要绑定信用卡~这个大家自己搜搜帖子吧~貌似开发者账号不能用于测试,可以添加其他的账号测试
PS:下面说说过程中遇到的其他比较棘手的问题:
1.如果在大陆地区,不使用VPN的话,点击购买商品是会闪退的
主要的原因是第一节里面IabHelper mHelper 调用startSetup方法的时候连接google play出错,后面再调用的时候有些东西没有设置好
解决办法是通过mHelper的变量mSetupDone来判断购买按钮的事件是否触发。当然源代码里的mSetupDone是私有的,可以将其设置为public或者写个调用方法
2.如果在大陆地区,不使用VPN的话,进入应用后,退出应用的时候会报应用发生意外
这个主要的原因是,在第一节里面写的在Activity的onDestroy方法里面需要调用IabHelper mHelper 的dispose方法,而在dispose方法里有这样一句
if (mContext != null) mContext.unbindService(mServiceConn);
这里出错了~虽然mContext mServiceConn都不为空,但是因为在大陆地区,所以在IabHelper mHelper 的startSetup方法里没有bindService
解决办法,写个变量boolean mBindedService = false;然后在startSetup方法里bindService的时候赋值给mBindedService,代码如下:
mBindedService = mContext.bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
然后再dispose里面加上mBindedService作为判断条件
if (mContext != null && mBindedService) mContext.unbindService(mServiceConn);
通过上面设置应该就OK了,还有一条是我自己的原因
3.因为我对代码做了一些特殊处理,然后呢发现居然找不到一个类了~
后来发现是断言做的怪~Base64.java有个断言assert (e == outBuff.length);
改成抛异常,OK了~
google内购In-App Billing相关推荐
- google内购-订阅模式
1.订单有变化接收google推送的接口,据此可以实现续订订单 /*** 接收google推送接口* @param body* @param request* @param response* @re ...
- Python Google内购服务端验证
Google内购完成后,服务端需要校验订单的状态是否正确(是否已经成功付款). 一.申请认证 参考https://developers.google.cn/android-publisher/gett ...
- Google 内购总结
Google 内购坑之总结 最近项目中增加了 Google 内购的内容,接入并不难,在这里总结下接入过程中的细节和坑的地方. 内购接入过程 如何接入官方的教程写的很详细(传送门),并且官方也提供了一个 ...
- 【Unity】Google内购
目录 一.创建空安卓库工程 二.Unity配置 三.注意事项 版本更新注意事项 服务器相关(相关文章如下) 支付相关错误码 https://developer.android.com/google/p ...
- Google内购--封装版
最近老大提出了一个需求,在应用里面加一个内购.由于之前没做过这块,所以百度一番.网上都是讲的使用一大堆的utils.还要加一个aidl文件.感觉挺麻烦的.最终让我找到了:com.android.bil ...
- Google 内购 - Android
1. 添加依赖 implementation "com.android.billingclient:billing:5.0.0" 2.支付相关的代码 /*** 连接**/publi ...
- java集成Google Pay内购
挺简单的直接上代码: api入参 @Data @ApiModel("google支付表单信息") public class GooglePayForm {/*** 包名*/@Api ...
- 解决某APP游戏内购
对某APP内的道具购买进行破解 学习笔记三:对一款存在道具.关卡内购的APP进行破解使其道具.关卡购买免费化 一.将该未进行处理的APP通过模拟器安装使用 通过安装后的使用(购买其中的道具)发现该AP ...
- 苹果app商品定价_iOS 开发_2017苹果内购价格表
[作者前言]:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进! 1.应用场景: 使用苹果内购的APP/游戏 2.实现目标: 了解 ...
最新文章
- 550 万华人在美人才现状:7 诺奖、300 院士,320 八大常春藤高校终身正教授......
- Idea+Maven+Jersey2+Tomcat配置Web服务
- router-link-active 和 router-link-exact-active router-link-active
- python中continue用法案例_Python continue语句实例用法
- 【转】做好性能测试的6个关注点
- python图像识别代码_用Python进行简单图像识别(验证码)
- LeetCode题解
- 【Python】Turtle绘制科赫雪花
- 正弦定理和余弦定理_高三 | 数学必修五正弦定理和余弦定理应用举例考点梳理...
- ASR开发工作笔记0001---Eclipse DS-5-报错Cannot checkout an uncounted license withini a Windows Terminal Servi
- Asp.Net超时问题汇总
- 自己封装的一个模拟下拉列表的插件
- 基于图像识别的火灾检测系统设计思路流程
- 计算机网络实验-----常用网络命令操作
- 【Flutter小记3】Android打开前置或广角摄像头的同时打开闪光灯方案
- Windows XP 系统故障终极排查大全
- openFOAM动量方程中张量的处理
- 专利地图制作及解析研究
- html游戏寻宝源码,阅途方法丨No.8: Compare and Contrast,来一次原版阅读的'寻宝游戏'!...
- pythonhtml生成word_html转word