本文章仅作为个人笔记
官方文档
Google支付接入前提:
- 开发者:
拥有google开发者账号
-
设置定价模板
-
打开定价模板页面
-
填写相应信息创建模板
-
如果出现此页面表示没有在应用内添加billing权限,在将应用AndroidManifest.xml文件内添加 <uses-permission android:name="com.android.vending.BILLING" /> 权限,重新打包上传到googlePlay测试或者正式环境(一般此时测试环境就好)即可。
-
添加好权限后会出现创建受管理的商品,此时可以开始创建商品信息。
-
依次填写好信息后点击保存即可(商品id一定要唯一切能表达商品意思,后面会用到)
-
等所有信息都创建好后,开始准备代码。
-
添加必要jar包
implementation 'com.android.billingclient:billing:1.1'
-
开始部分示例代码(在开始调用前先说明几点,1.代码先按照以下逻辑写好,只有当打包好并将应用上传至GooglePlay(测试或正式皆可)并通过后支付相关才可真正生效,如果需要测试支付需要将用户添加至测试用户。)
//初始化支付实例 BillingClient mBillingClient = BillingClient.newBuilder(context).setListener(new PurchasesUpdatedListener() { @Override public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) { //当支付状态改变时调用,ok为支付成功,否则为支付失败 if (responseCode == BillingClient.BillingResponse.OK) { } else { } } }).build(); //开始连接google服务并判断当前Google支付是否可用 mBillingClient.startConnection(new BillingClientStateListener() { @Override public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) { //billingResponseCode == BillingClient.BillingResponse.OK说明可用,否则说明连接不上google } @Override public void onBillingServiceDisconnected() { //断开连接,当收到此回调时可以重新连接google否则会出现服务无法使用问题 } }); //调用google支付时执行此代码,其中activity为页面activity。sdk为商品id(上面说到的要保证唯一的那个id)。BillingClient.SkuType.INAPP为一次性支付,如果是订阅改为BillingClient.SkuType.SUBS即可。当支付完成后调用初始化实例时传入的监听,在监听里做相应处理便可。 mBillingClient.launchBillingFlow(activity, BillingFlowParams .newBuilder().setSku(sku).setType(BillingClient.SkuType.INAPP).build()); //消耗商品代码(如果出售的商品为消耗型商品记得调用此代码,否则会出现无法重复购买的情况。) mBillingClient.consumeAsync(purchase.getPurchaseToken(), new ConsumeResponseListener() { @Override public void onConsumeResponse(int responseCode, String purchaseToken) { if (responseCode == BillingClient.BillingResponse.OK) { //消耗商品成功 } else { //消耗商品失败 } } });
-
最后记得添加混淆代码(proguard-rules.pro)
-keep class com.android.vending.billing.**
-
客户端:
- 客户端需要可以连接至google
- 客户端需要安装googlePlay服务