Google支付接入

本文章仅作为个人笔记

官方文档

Google支付接入前提:

  • 开发者:
    • 拥有google开发者账号

    • 设置定价模板

      • 打开定价模板页面
      • 填写相应信息创建模板
      • 如果出现此页面表示没有在应用内添加billing权限,在将应用AndroidManifest.xml文件内添加 权限,重新打包上传到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 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服务

你可能感兴趣的:(支付相关)