使用 Google Play 结算系统,分为线上gp后台配置和代码billing集成,以下都以应用内产品为例。我做的是小说,应用内购买的是书币。
- 后台配置:前提能科学上网
- 设定定价,就是商品的定价:
按图所示建立价格, 我这里有4个价格。具体建立很简单
- 建立产品:一个产品对应一个定价,比如我这里7港币对应700书币。创建完后,如果没问题,一定要启用,不然app那边取不到数据,另外产品ID就是唯一,后面用在代码里取数据用的。
这里插入一个比较重要的点:需要为以后的测试分配测试员,因为测试的时候需要测试购买产品,不能用真实的钱去买,要扣税的,作者踩过。。。
要上传测试员的csv,新建csv,里面输入分配测试员的gmail邮箱,然后上传
重要的来了:找到授权测试的入口,输入免费测试的测试员gmail,回车就可以了
授权回应可以模拟购买中各种特殊情况。
测试的时候,用测试卡一键购买。
另外:gp配置好任何东西,app端都需要等的,不会马上有效果,所以app端如果配置后没效果需要耐心等,1个小时内应该会有反应,作者操作的时候app端一直没效果,以为哪里有问题,过了段时间后就有了。
- 代码集成:
将 Google Play 结算库依赖项添加到应用的 build.gradle文件中
implementation 'com.android.billingclient:billing:4.0.0'
初始化 BillingClient,与 Google Play 建立连接
mBillingClient.startConnection()
展示可供购买的商品:
在回调onBillingClientSetupFinished里获取应用内产品列表
List<String> skuList = new ArrayList<>();skus.add(YueduConstant.COIN700); skus.add(YueduConstant.COIN4000);skus.add(YueduConstant.COIN10000);skus.add(YueduConstant.COIN18000);
params.setSkusList(skuList).setType(skuType);mBillingClient.querySkuDetailsAsync()
回调onSkuDetailsResponse中刷新app中的产品列表
notifyDataSetChanged
启动购买流程:点击某个产品购买
mBillingClient.launchBillingFlow
成功调用 launchBillingFlow()
后,系统会显示 Google Play 购买屏幕,就上图测试员购买弹出框
一键购买后回调onPurchasesUpdated,如果支付成功,app内操作充值部分代码。
用户还会收到包含交易收据的电子邮件,其中包含订单 ID 或交易的唯一 ID。用户每次购买一次性商品时,都会收到包含唯一订单 ID 的电子邮件。
最后有个重点:看你产品是什么类型的:非消耗型商品、消耗型商品,还是订阅
作者这里是消耗型商品:书币
所以购买后必须要通知gp我已经消耗了这次交易。
mBillingClient.consumeAsync(ConsumeParams,ConsumeResponseListener)
如需表明某件一次性商品已被消耗,请调用 consumeAsync() 并添加 Google Play 应在用户重新购买时提供的购买令牌purchaseToken。您还必须传递一个实现 ConsumeResponseListener 接口的对象。该对象用于处理消耗操作的结果。您可以替换 onConsumeResponse() 方法,Google Play 结算库会在消耗操作完成时调用该方法.
如需确认非消耗型商品的购买交易,请使用结算库中的 BillingClient.acknowledgePurchase() 或 Google Play Developer API 中的 Product.Purchases.Acknowledge。在确认购买交易之前,您的应用应使用 Google Play 结算库中的 isAcknowledged() 方法或 Google Play Developer API 中的 acknowledgementState 字段检查该购买交易是否已经过确认。
非消耗的调用mBillingClient.acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)
订阅的处理方式与非消耗型商品类似
以上都配置以及集成好后,建一个测试版本,作者只做了内部测试:
建立新发布版本,把打包后的aab上传,然后去测试员界面,复制链接发给测试员。
然后去测试员手机(必须是之前分配的测试员gmail),登陆了gmail。把上面的链接去下载测试版本,多次发布的话,要记得版本号,有时候手机端没有那么快更新。要去下载最新版本号的版本。
详细说明见官方文档:https://developer.android.com/google/play/billing/integrate
另外附带部分购买的代码:主要是BillingManager.java
PurchaseActivity 中调用各种购买查询接口。
https://download.csdn.net/download/stone20011983/33605848