实现google内支付In-app Billing开发经验
来源:互联网 发布:qq飞车王国战神数据 编辑:程序博客网 时间:2024/05/21 09:57
上个月google play内支付这个功能,这功能我是花了很长时间才完成的。从官方下载回来Demo是一个充汽油的例子,,我自己整理下了,说说我的看法,可能不一定都对,但希望能给你们提供帮助。
开发前的准备,如果没,就向你们公司申请吧:
1、root过的android手机一部
2、翻墙工具(VPN)
3、Google帐号一个 (需绑定visa等信用卡) 用做测试帐号
4、开通一个google平台帐号(能把sdk发布上去)
首先说下base64EncodedPublicKey的作用的吧,这个是每个app发布到google play后台时,google会生成的一个非常长key ,这个key是用在google交易中的安全验证,建议
把它放在服务端,通过请求服务端时获取;
接下来是productid,它是你在后台设置的一个产品id,当你发布你的app上去并设置好产品id时,你就可以通过这个id来获取该商品的相关信息,如:价格、产品名、详细说明等,这个也是连接google play内支付的第一个步骤;
当你获取到以上信息时,就证明你的后台设置正确了,并且可以进入google的支付界面了,用户在上面的操作,会通过onActivityResult返回数据,你只需要判断requestCode 和resultCode 是否正常,(返回相关参数,请参看api吧,正常是requestCode == 1001,resultCode == RESULT_OK)以上操作完成后,还需一个“消耗”(consumePurchase)的步骤,官网也提到过,因为这些交易不一定都是只交易一次而已,像游戏币这些的话,是一种虚拟的货币,是可多次购买的,所有消耗这一步其实就是为了告诉google,这件商品是可被买家多次购买的,“消耗”这一步骤可调用多次,Demo上在各个环节上也调用过的。
注意事项:
1、 在上传app时,为了前期开发方便 ,可随意上传,但必须要加上权限<uses-permission android:name="com.android.vending.BILLING" />
2、如果app没正式发布,那么测试时,需要在后台添加测试人员,该测试人员就是以上讲的第三点,而且需要正式打包出来测试(keystore一定要保持好)
代码简单说明:
mHelper :是一个帮助类,可在demo上查看
SKU_GAS:商品的名字(后台定义的)
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
// 这是连接的第一步,通常是初始化和检查设备是否符合购买要求 TODO...
mHelper.queryInventoryAsync(mGotInventoryListener, list);
}
//查询商品
IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(final IabResult result,
final Inventory inventory) {
// 这是查询其商品的相关信息,如价格,商品说明等。 TODO...
mHelper.launchPurchaseFlow(activity, SKU_GAS, RC_REQUEST,
mPurchaseFinishedListener, payload);
}
//购买商品
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(final IabResult result,
final Purchase purchase) {
// 是否购买成功。 TODO...
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
}
//通知google消耗商品
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(final Purchase purchase,
final IabResult result) {
// 查询该商品是否以消耗成功,为下一次购买做准备。 TODO...
}
demo地址: http://download.csdn.net/detail/a2855090/5686369
- 实现google内支付In-app Billing开发经验
- Google in app billing 应用内支付
- google应用内支付 in-app billing(二)
- Google In-App Billing 实现(内含Unity 实现经验)
- Android支付接入:Google In-app-Billing
- Google支付(In-app Billing)接入
- Google In-app Billing 支付接入小结
- Google In-app Billing 支付接入笔记
- google内购In-App Billing
- google内购In-App Billing
- google内购In-App Billing
- coco2d-x游戏开发google play Google In-app-Billing 支付接入
- Google In App Billing
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- Window7—64位:Ruby on Rails - “Add 'gem sqlite3'' to your Gemfile”
- ubuntu12.04 qt连接mysql
- IOS的变量前加extern和static字段
- 第三方支付业务浅析
- 一个函数锁住相同类型的多个对象造成的死锁
- 实现google内支付In-app Billing开发经验
- windows7 安装VS2005和wince6.0
- 单元测试
- 性能测试指标及常用的监控工具
- 解决IOS开发使用Lumberjack库时出现的Use of undeclared identifier 'ddLogLevel'问题
- linux 小问题&解决办法集锦
- 第一次发,多指点
- 复习基础知识1
- struts2中的valuestack和ActionContextStack