Google支付接入

作者: 草丛里的黄盖 | 来源:发表于2018-10-02 12:34 被阅读263次

本文章仅作为个人笔记

官方文档

Google支付接入前提:

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

    • 设置定价模板

      • 打开定价模板页面


        设置模板
      • 填写相应信息创建模板


        image.png
      • 如果出现此页面表示没有在应用内添加billing权限,在将应用AndroidManifest.xml文件内添加 <uses-permission android:name="com.android.vending.BILLING" /> 权限,重新打包上传到googlePlay测试或者正式环境(一般此时测试环境就好)即可。


        image.png
      • 添加好权限后会出现创建受管理的商品,此时可以开始创建商品信息。


      • 依次填写好信息后点击保存即可(商品id一定要唯一切能表达商品意思,后面会用到)


        image.png
    • 等所有信息都创建好后,开始准备代码。

    • 添加必要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服务

相关文章

网友评论

  • Secret_97d2:你好,请问一下setSku方法和setType过时了,有影响吗
    Secret_97d2:@makai 你好,方便加下你的QQ吗,卡住了。。。
    Secret_97d2:@makai 刚接入谷歌支付,有一些不懂的地方,方便加一下你的QQ或者微信吗,有偿提问,谢谢
    草丛里的黄盖:我的1.1版本好像还没有过时,但如果不影响支付(可以内测测试)可以忽略吧,实在看着不舒服只能对着看官方文档改了。

本文标题:Google支付接入

本文链接:https://www.haomeiwen.com/subject/vmuuoftx.html