Google支付接入

本文章僅作為個(gè)人筆記

官方文檔

Google支付接入前提:

  • 開(kāi)發(fā)者:
    • 擁有g(shù)oogle開(kāi)發(fā)者賬號(hào)

    • 設(shè)置定價(jià)模板

      • 打開(kāi)定價(jià)模板頁(yè)面


        設(shè)置模板
      • 填寫相應(yīng)信息創(chuàng)建模板


        image.png
      • 如果出現(xiàn)此頁(yè)面表示沒(méi)有在應(yīng)用內(nèi)添加billing權(quán)限,在將應(yīng)用AndroidManifest.xml文件內(nèi)添加 <uses-permission android:name="com.android.vending.BILLING" /> 權(quán)限,重新打包上傳到googlePlay測(cè)試或者正式環(huán)境(一般此時(shí)測(cè)試環(huán)境就好)即可。


        image.png
      • 添加好權(quán)限后會(huì)出現(xiàn)創(chuàng)建受管理的商品,此時(shí)可以開(kāi)始創(chuàng)建商品信息。


      • 依次填寫好信息后點(diǎn)擊保存即可(商品id一定要唯一切能表達(dá)商品意思,后面會(huì)用到)


        image.png
    • 等所有信息都創(chuàng)建好后,開(kāi)始準(zhǔn)備代碼。

    • 添加必要jar包

          implementation 'com.android.billingclient:billing:1.1'
      
為防止小白特貼上位置
  • 開(kāi)始部分示例代碼(在開(kāi)始調(diào)用前先說(shuō)明幾點(diǎn),1.代碼先按照以下邏輯寫好,只有當(dāng)打包好并將應(yīng)用上傳至GooglePlay(測(cè)試或正式皆可)并通過(guò)后支付相關(guān)才可真正生效,如果需要測(cè)試支付需要將用戶添加至測(cè)試用戶。)

        //初始化支付實(shí)例
        BillingClient mBillingClient = BillingClient.newBuilder(context).setListener(new PurchasesUpdatedListener() {
            @Override
            public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
                //當(dāng)支付狀態(tài)改變時(shí)調(diào)用,ok為支付成功,否則為支付失敗
                if (responseCode == BillingClient.BillingResponse.OK) {
                      
                } else {
                    
                }
          }
        }).build();
        //開(kāi)始連接google服務(wù)并判斷當(dāng)前Google支付是否可用
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
                //billingResponseCode == BillingClient.BillingResponse.OK說(shuō)明可用,否則說(shuō)明連接不上google
            }
    
            @Override
            public void onBillingServiceDisconnected() {
                  //斷開(kāi)連接,當(dāng)收到此回調(diào)時(shí)可以重新連接google否則會(huì)出現(xiàn)服務(wù)無(wú)法使用問(wèn)題
            }
        });
        //調(diào)用google支付時(shí)執(zhí)行此代碼,其中activity為頁(yè)面activity。sdk為商品id(上面說(shuō)到的要保證唯一的那個(gè)id)。BillingClient.SkuType.INAPP為一次性支付,如果是訂閱改為BillingClient.SkuType.SUBS即可。當(dāng)支付完成后調(diào)用初始化實(shí)例時(shí)傳入的監(jiān)聽(tīng),在監(jiān)聽(tīng)里做相應(yīng)處理便可。
        mBillingClient.launchBillingFlow(activity, BillingFlowParams
            .newBuilder().setSku(sku).setType(BillingClient.SkuType.INAPP).build());
        //消耗商品代碼(如果出售的商品為消耗型商品記得調(diào)用此代碼,否則會(huì)出現(xiàn)無(wú)法重復(fù)購(gòu)買的情況。)
        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服務(wù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容