GooglePlay内购总结In-app Billing集成测试流程
来源:互联网 发布:电脑vpn软件 编辑:程序博客网 时间:2024/05/21 09:47
APP内购开发工作流程:
一,GooglePlay后台相关操作:
1,提供apk的Google Play的接入公钥(Base64编码的RSA公共密钥),即Public Key。
2,设置商品购买属性:
受管理的商品:每个帐号只能购买一次,不能重复购买的商品。例如:激活码、解锁关卡等。
不受管理的商品:该商品可重复购买。包含支付完须消费,没消费的不可能重复购买,这步对消费者是透明的。例如:金币、钻石等。
订阅:通过按月或按年结算的方式在应用内向用户销售内容、服务或功能。
3,添加Alpha版测试人员。(必须提交Alpha版进行测试)
4,测试账号需有国际支付能力。(测试并不会扣除费用)
二,开发流程:
1,在AndroidManifest中添加如下权限:
<uses-permission android:name="com.android.vending.BILLING" />
2,添加In-app Billing(后面简称iab)库。其实就是IInAppBillingService.aidl这个文件,
从例子工程里找到它,copy到自己工程下的src下的包com.android.vending.billing里面,再把例子工程里的src下的包com.example.android.trivialdrivesample.util下面的程序copy到自己工程.
(如报错先clean项目)
3,初始化in-app Billing api。
IabHelper是一个封装了购买-消耗的个工具类,queryInventoryAsync是订单查询方法。注意替换实际的公钥(Google Play后台创建应用里,在服务和API这项可以找到,一串Base64编码的字符串)。
在次方法中得到商品状态及用户购买信息(如购买过则提供恢复购买),订阅类商品时限等。
startSetup 的操作是检查是否有权限和连接到Google Billing service是否成功;这里回调的操作是如果成功,调用queryInventoryAsync查看产品id是否可以使用;
查询完成后会调用IabHelper.QueryInventoryFinishedListener 这个回调接口进行通知,在这个接口中可以获取商品的详细信息SkuDetails和Purchase信息。
4,支付。在发起购买请求的时候,调用以下代码。sku参数为对应Google Play后台配置的商品品项id。
受管理商品: mHelper.launchPurchaseFlow(this, SKU_GAS, RC_REQUEST,mPurchaseFinishedListener, payload);
mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST,mPurchaseFinishedListener, payload);
订阅商品:mHelper.launchPurchaseFlow(this, mSelectedSubscriptionPeriod, IabHelper.ITEM_TYPE_SUBS,oldSkus, RC_REQUEST, mPurchaseFinishedListener, payload);
5,消耗。一般是在支付成功或查询成功的回调里调用消费方法。
注意:不受管理的商品,在支付完需要调用消费。不然,没法重复购买。IabHelper.consumeAsync(Purchase purchase, OnConsumeFinishedListener listener)
6, 查询。在查询回调里,检测如果存在支付但没消费的商品,继续调用消费。可用于漏单处理。直接放在IapHelper初始化中即可。
IabHelper.queryInventoryAsync(QueryInventoryFinishedListener listener)
7,销毁。一般是在主Activity的onDestory里执行。
public void onDestroy() {
super.onDestroy();
// very important:
Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
三,内购过程中安全类加密验证:
1,APK签名的自身验证。
2,Public Key存到服务器端,每次请求(加密)。
3,购买成功后向服务器发送订单信息。
4,用于是否购买的本地验证。(广告展示前判断)。
5,apk打包后再加固。
{"orderId":"GPA.3365-7352-0446-58529","packageName":"com.callerid.block","productId":"free_ad_plan","purchaseTime":1495008953203,"purchaseState":0,"developerPayload":"73d7effc686f670c89679128f239064f","purchaseToken":"kpiaipjanpkdgnjdakjofcgk.AO-J1OyfnUDifBnHoFUYzkPzpXyUfANFGlJuhZcqIelPw44PTC4-l9PT144MALqN1ndfJQP3ck-vDCQv_If77BElevgbYEYvXzPGICJuLEIWcfu0s4a4gVA","autoRenewing":true}
一,GooglePlay后台相关操作:
1,提供apk的Google Play的接入公钥(Base64编码的RSA公共密钥),即Public Key。
2,设置商品购买属性:
受管理的商品:每个帐号只能购买一次,不能重复购买的商品。例如:激活码、解锁关卡等。
不受管理的商品:该商品可重复购买。包含支付完须消费,没消费的不可能重复购买,这步对消费者是透明的。例如:金币、钻石等。
订阅:通过按月或按年结算的方式在应用内向用户销售内容、服务或功能。
3,添加Alpha版测试人员。(必须提交Alpha版进行测试)
4,测试账号需有国际支付能力。(测试并不会扣除费用)
二,开发流程:
1,在AndroidManifest中添加如下权限:
<uses-permission android:name="com.android.vending.BILLING" />
2,添加In-app Billing(后面简称iab)库。其实就是IInAppBillingService.aidl这个文件,
从例子工程里找到它,copy到自己工程下的src下的包com.android.vending.billing里面,再把例子工程里的src下的包com.example.android.trivialdrivesample.util下面的程序copy到自己工程.
(如报错先clean项目)
3,初始化in-app Billing api。
IabHelper是一个封装了购买-消耗的个工具类,queryInventoryAsync是订单查询方法。注意替换实际的公钥(Google Play后台创建应用里,在服务和API这项可以找到,一串Base64编码的字符串)。
在次方法中得到商品状态及用户购买信息(如购买过则提供恢复购买),订阅类商品时限等。
startSetup 的操作是检查是否有权限和连接到Google Billing service是否成功;这里回调的操作是如果成功,调用queryInventoryAsync查看产品id是否可以使用;
查询完成后会调用IabHelper.QueryInventoryFinishedListener 这个回调接口进行通知,在这个接口中可以获取商品的详细信息SkuDetails和Purchase信息。
4,支付。在发起购买请求的时候,调用以下代码。sku参数为对应Google Play后台配置的商品品项id。
受管理商品: mHelper.launchPurchaseFlow(this, SKU_GAS, RC_REQUEST,mPurchaseFinishedListener, payload);
mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST,mPurchaseFinishedListener, payload);
订阅商品:mHelper.launchPurchaseFlow(this, mSelectedSubscriptionPeriod, IabHelper.ITEM_TYPE_SUBS,oldSkus, RC_REQUEST, mPurchaseFinishedListener, payload);
5,消耗。一般是在支付成功或查询成功的回调里调用消费方法。
注意:不受管理的商品,在支付完需要调用消费。不然,没法重复购买。IabHelper.consumeAsync(Purchase purchase, OnConsumeFinishedListener listener)
6, 查询。在查询回调里,检测如果存在支付但没消费的商品,继续调用消费。可用于漏单处理。直接放在IapHelper初始化中即可。
IabHelper.queryInventoryAsync(QueryInventoryFinishedListener listener)
7,销毁。一般是在主Activity的onDestory里执行。
public void onDestroy() {
super.onDestroy();
// very important:
Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
三,内购过程中安全类加密验证:
1,APK签名的自身验证。
2,Public Key存到服务器端,每次请求(加密)。
3,购买成功后向服务器发送订单信息。
4,用于是否购买的本地验证。(广告展示前判断)。
5,apk打包后再加固。
{"orderId":"GPA.3365-7352-0446-58529","packageName":"com.callerid.block","productId":"free_ad_plan","purchaseTime":1495008953203,"purchaseState":0,"developerPayload":"73d7effc686f670c89679128f239064f","purchaseToken":"kpiaipjanpkdgnjdakjofcgk.AO-J1OyfnUDifBnHoFUYzkPzpXyUfANFGlJuhZcqIelPw44PTC4-l9PT144MALqN1ndfJQP3ck-vDCQv_If77BElevgbYEYvXzPGICJuLEIWcfu0s4a4gVA","autoRenewing":true}
阅读全文
0 0
- GooglePlay内购总结In-app Billing集成测试流程
- GooglePlay内购In-app Billing 总结~
- GooglePlay内购In-app Billing 总结
- GooglePlay内购In-app Billing 总结~
- GooglePlay内购In-app Billing 总结~
- googleplay 内购 In-app Billing php代码
- google内购In-App Billing
- google内购In-App Billing
- google内购In-App Billing
- googlePlay 内购测试
- U3D 接GooglePlay in-app-billing支付注意事项
- cocos2d-x接入GooglePlay IAB(In-app Billing)和iOS IAP(In-App Purchase)
- Google in app billing 应用内支付
- 测试你的 In-app Billing 程序
- 集成Google Play In-app Billing(Version 3)操作文档
- 实现google内支付In-app Billing开发经验
- google应用内支付 in-app billing(二)
- Google In App Billing
- Mybatis系列之动态SQL
- 客户端资源加密
- JavaScript学习总结(四)——逻辑OR运算符详解
- iOS中[super class]为何会输出子类类型?
- View[6] inflate()、addView()removeView() 及 LayoutParams
- GooglePlay内购总结In-app Billing集成测试流程
- 线程池与连接池
- 电话号码校验
- 常见面试手写算法
- <foreach>在mysql 数据库中的应用
- 五大常用算法之二:动态规划算法
- 理解javascript中的闭包
- 技术文章 |【DeepMind最新Nature论文】探索人类行为中的强化学习机制
- Spring对JDBC的支持JdbcTemplate模板类