本文章僅作為個(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ù)




