簡單 3 步配置 Google Play Billing

2020-09-05 雲上馬可君

作者 / Caren Chang, android Engineer

Google Play Billing 系列內容是專門為中文開發者開闢的系列分享,著重講解中國開發者對 Play Billing 最容易感到疑惑的地方。如果您有任何問題,也歡迎在留言區提出,我們會收集大家的反饋並在後續文章中做出解答。


銷售數字內容是許多 Android 應用的主要營收渠道。具體形式包括銷售應用內的特定商品 (如遊戲金幣) 以及訂閱計劃 (比如允許用戶在限定時間內訪問高級功能)。google Play Billing 作為一個數字內容銷售的工具和服務的集合,可以幫助開發者在 Android 應用中銷售線上商品。


本文將從基礎知識開始,帶大家逐步深入,詳細了解 Google Play Billing 3,及其用例和最佳實踐。


首先,我們來熟悉一下 Google Play Billing 的一些關鍵組件。

  • Google Play 管理中心 (Google Play Console) - Google Play 管理中心既是 Android 應用發布平臺,也可以用於設置應用中銷售的各種內容。在 Play 管理中心可以配置待出售的商品,包括價格點,以及針對每個產品進行高級配置,如提供訂閱的免費試用期;
  • Google Play Billing Library - 這是您集成到 Android 應用中的開發庫。使用此庫連接 Google Play 就可以執行各種與銷售相關的任務,例如在用戶購買商品時處理購買流程;
  • Google Play Developer API - 一組 REST API,可用於與 Google Play 通信。使用這些 API 可以查詢和管理應用銷售的商品。這些 API 還可以驗證用戶的購買中是否存在欺詐行為,或者檢查訂閱是否仍處於有效狀態。

Google Play 管理中心https://developer.android.google.cn/distribute/consoleGoogle Play Billing Libraryhttps://developer.android.google.cn/google/play/billing/billing_library_overviewGoogle Play Developer APIhttps://developers.google.cn/android-publisher


了解了 Google Play Billing 的關鍵組件之後,我們將從頭介紹如何設置環境並開始在 Android 應用中銷售商品。

1. 設置 Android 應用使用 Google Play Billing 開發庫

第一步,也是最重要的一步,是設置 Android 應用以使用 Google Play Billing 開發庫。

向 app/build.gradle 文件中添加以下依賴關係,在應用中實現 Google Play Billing:

implementation 『com.android.billingclient:billing:3.0.0』

添加庫依賴關係後,為應用構建一個發布版 APK,並將其上傳到 Google Play 管理中心。


2. 添加應用內產品


上傳 APK 後,可以使用 Google Play 管理中心開始添加要在應用中銷售的應用內產品。在 &34; 下,有一個設置應用內產品的部分。在這裡可以設置兩種類型的商品:

  • 託管產品 (或一次性購買)
  • 訂閱

創建新的託管產品和訂閱時,需要輸入商品的產品 ID (Product ID) 或 SKU。這個產品 ID 後續將在應用代碼中使用,我們稍後會講到。在創建託管產品之前,應慎重規劃產品 ID。產品 ID 在應用中必須唯一,並且在創建後無法更改或重複使用。

為了使測試更快、更簡單,您可以將您的 Google 帳號添加到 Google Play 開發者帳號的 &34; 中。這樣,只要軟體包名稱與 Play Store 中的 APK 匹配,就可以使用調試版本和調試籤名進行測試。

將 Google 帳號添加到 Google Play 開發者帳號的 &34;  中https://developer.android.google.cn/google/play/billing/billing_testing34;Billing client successfully set up&34;Billing service disconnected&34;coins_5&39;managed products&34;onSkuDetailsResponse ${result?.responseCode}&34;No skus found from query&startconnection


在實際環境中連接是有可能中斷的,所以您的應用還必須重寫 onBillingServiceDisconnected() 回調來處理重新連接,確保應用在發出任何進一步請求之前已與 Google Play 連接。

onBillingServiceDisconnected()https://developer.android.google.cn/reference/com/android/billingclient/api/BillingClientStateListeneronBillingServiceDisconnected()


2. 獲取用戶的既有購買記錄 - 成功設置 BillingClient 後,您的應用現在可以調用queryPurchases() 來查詢用戶先前的購買記錄。

/** * Query Google Play Billing for existing purchases. * * New purchases will be provided to PurchasesUpdatedListener. */fun queryPurchases() { if (!billingClient.isReady) { Log.e(TAG, &34;) } // Query for existing in app products that have been purchased. This does NOT include subscriptions. val result = billingClient.queryPurchases(BillingClient.SkuType.INAPP) if (result.purchasesList == null) { Log.i(TAG, &34;) } else { Log.i(TAG, &34;) }}


3. 呈現待售產品 - 在本文的前半部分我們談到了如何在 Google Play 管理中心中設置產品以及如何在應用中查詢這些產品。在調用 querySkuDetailsAsync() 獲取每個產品的 SkuDetails 後,即可使用這些信息設置對應的界面。

private fun queryOneTimeProducts() { val skuListToQuery = ArrayList<String>() // sku refers to the product ID that was set in the Play Console skuListToQuery.add(&34;) val params = SkuDetailsParams.newBuilder() params .setSkusList(skuListToQuery) .setType(BillingClient.SkuType.INAPP) // SkuType.INAPP refers to &39; or one time purchases // To query for subscription products, you would use SkuType.SUBS billingClient.querySkuDetailsAsync( params.build(), object : SkuDetailsResponseListener { override fun onSkuDetailsResponse( result: BillingResult, skuDetails: MutableList<SkuDetails>? ) { if (skuDetails != null) { // Store sku and skuDetail to be used later } else { Log.i(TAG, &34;) } } })}


querySkuDetailsAsync()https://developer.android.google.cn/reference/com/android/billingclient/api/BillingClient34;launchPurchaseFlow result ${responseCode}&launchbillingflow


5. 處理購買結果 - 在用戶退出 Google Play 購買界面時 (點擊 &34; 按鈕完成購買,或者點擊 &34; 按鈕取消購買),onPurchaseUpdated() 回調會將購買流程的結果發送回您的應用。然後,根據 BillingResult.responseCode 即可確定用戶是否成功購買產品。如果 responseCode == OK,則表示購買已成功完成。


  • onPurchaseUpdated()

https://developer.android.google.cn/reference/com/android/billingclient/api/PurchasesUpdatedListener34;User cancelled purchase flow.&34;onPurchaseUpdated error: ${billingResult?.responseCode}&verify


在對購買進行驗證之後,您還需要對其進行確認。

  • 非消耗品必須通過調用 acknowledgePurchase() 進行確認;
  • 消耗品必須通過調用 consumeAsync() 來標記為 &34;,使得用戶可以再次購買。調用 consumeAsync() 還會將購買設置為已確認,因此只要調用了consumeAsync(),就無需再對消耗品調用 acknowledgePurchase()。

fun handlePurchase(purchase: Purchase) { // If your app has a server component, first verify the purchase by checking that the // purchaseToken hasn&acknowledgepurchaseconsumeAsync()https://developer.android.google.cn/reference/com/android/billingclient/api/BillingClient#consumeasync


7. 授予用戶產品 - 完成上述步驟後,您的應用就可以向用戶授予他們購買的應用內產品了!

如果您想查看 Google Play Billing 開發庫的資源,可以在此處訪問官方文檔。我們還提供了一些示例,演示了實現 Billing 庫的最佳實踐。本文中的代碼示例可以在 GitHub 上獲取。


官方文檔: Google Play Billing 服務概覽https://developer.android.google.cn/google/play/billing/billing_overviewPlay Billing 開發庫示例https://github.com/android/play-billing-samples本文中的代碼示例http://github.com/calren


如果您的應用目前尚未使用 Play Billing Library 3,務必查看我們的遷移指南,將您的應用遷移到最新的 Play Billing Library。

從 AIDL 遷移到 Google Play Billing 開發庫的遷移指南https://developer.android.google.cn/google/play/billing/migrate



文章轉載自:谷歌開發者公眾號原創文章

相關焦點

  • Google Play Billing 系列分享: 訂閱取消後的那些事兒——恢復...
    恢復訂閱(Restore)的重點是恢復,它有幾個關鍵條件:1)用戶取消的訂閱;2)雖然取消了,但訂閱並未過期;3)只能在Play訂閱中心裡去操作。這三要素缺一不可。由於是恢復,所以它實際上還是原來的訂閱,purchaseToken不會變。
  • Google Play 小錦囊: 助力開發者應對特殊時期
    延遲結算https://developer.android.google.cn/google/play/billing/billing_subions#Deferhttps://developer.android.google.cn/google/play/billing/billing_subions#pause價格變更https://developer.android.google.cn
  • Google訂閱配置教程
    能夠發起消息給Google有任何問題或者疑問歡迎評論或者私信:先解決收到Google消息的問題:Google Developer:開發者帳戶登陸/註冊 https://play.google.com/apps/publish/signup/Google 訂閱文檔:https://developer.android.com/google/play/billing/realtime_developer_notifications一、新建App項目:添加應用
  • 11月起執行,有關 Google Play 上訂閱功能的最新政策
    實時開發者通知參考指南https://developer.android.google.cn/google/play/billing/rtdn-reference您可以在官方文檔中查看更多關於帳號保留的內容,也可以進一步了解如何正確處理這種狀態
  • 安卓手機裝谷歌商店google play store
    安卓手機想要安裝google play需要安裝谷歌三件套:google服務框架、google play服務和google paly商店。下面分享兩種獲取谷歌三件套方法:第一種、通過下載OurPlay(原谷歌空間)1、去手機應用商城下載OurPlay2、出現圖中提示的時候點擊"下載",自動安裝谷歌三件套。
  • Google Play(中國地區)開發者帳號註冊、GoogleWallet解封及收款教程
    【流程篇】:  第一步:創建Google帳戶(即通俗意義上的Gmai),Google帳戶連結地址:https://accounts.google.com/SignUp?  第二步:登入開發者後臺,連結地址:https://play.google.com/apps/publish/signup/,並點擊「繼續付款」。
  • Google Play 帳號註冊教程
    安卓手機很多都會內置google的服務,比如如果你要在google play上下載東西,就需要一個帳號去登陸。比如你要使用比較好玩的google now,你也需要一個帳號去登陸。 安卓手機很多都會內置google的服務,比如如果你要在google play上下載東西,就需要一個帳號去登陸。比如你要使用比較好玩的google now,你也需要一個帳號去登陸。
  • 不安裝google play下載play版應用的方法
    play版的應用一般比國內版純淨一些,因為谷歌的管控同時權限申請也會嚴格一些,但是要使用google play需要安裝谷歌全家桶,至少需要Google服務框架、Google play商店和Google Play服務。
  • google谷歌服務框架及google play的添加方法
    google谷歌服務框架及google play的添加方法 來源:www.18183.com作者:jinwei1990時間:2014-09-24 安裝谷歌地圖與谷歌商城之類的官方軟體,使用時候會出現閃退黑屏等情況,讓軟體無法正常運行,下面18183小編就為大家帶來谷歌服務框架及
  • Google Play 支付更新了 | 開發者說·DTalk
    v=N4004Set4F8Use the Google Play Billing Libraryhttps://developer.android.google.cn/google/play/billing/billing_library_overviewGoogle Play Billing Library更新
  • 在 Google Play 上保護您的遊戲與用戶
    https://play.google.com/store/apps/dev?id=9133452689932095671&hl=en_GBhttps://play.google.com/store/apps/dev?
  • Google Play公布2013年最佳Android應用
    下載:https://play.google.com/store/apps/details?  下載:https://play.google.com/store/apps/details?  下載:https://play.google.com/store/apps/details?
  • Google Play開始「清掃」日本區商店成人App
    但隨著今年4月google在日本對google play採取類似中國主管部門的「淨網行動」,日本成人手遊遭到重創,雖然有日本成人手遊開發者並不打算就此屈服,但今後直接的成人APP將在google play很難存活。不過事實上在如此嚴酷的環境中仍然有幾款倖存的APP,但一旦被google發現,下場可以預料。
  • 開發者須知Google Play平臺的8個注意事項
    接下來,備份密鑰存儲在某處,但不要使用發布google play app帳號的google drive來儲存。3、檢查電子郵件地址作為開發者應該注意兩個郵箱:Play帳號的郵箱:最好定期檢查一下,google 會通過這個郵箱跟開發者聯繫,比如消息的通知等等。
  • 華為Mate30/P30 Pro如何安裝Google GMS\Google Play?
    中美大戰,網民遭殃,華為Mate 30 Pro等新款旗艦手機無法安裝google play 和google gms三件套,這對國內影響不大,對國外人群或出國、用國外一些app是有影響的。當然,華為正在推出自己的移動服務套件HMS,並在大力推廣huawei appgallery,推動國外應用加入到華為應用商店的生態裡,這樣就無需google play的應用認證,可以暢享各種APP了。現階段,在華為Mate30 pro上安裝google三件套,有一些方案。
  • 17款Android App被強制刪除,Google Play商店發現惡意軟體已感染數百萬設備
    據調查發現,這批病毒軟體從3月份開始活躍,已經成功感染了數百萬臺設備。 這些被感染的應用程式採用的是一種叫做「滴管(dropper)」的技術。這種技術能讓受感染的應用程式繞過Google的安全防禦系統,直達Play Store,並分多個階段感染受害者的設備。從谷歌的角度來看,這項技術非常簡單,但卻很難防禦。
  • Google Play中國版開啟內測了,但是卻還存在4個致命問題
    那麼假如手機廠商不預裝google play、採取對google不配合的態度會發生什麼?2012年發生的阿里雲OS手機被google喊停事件值得參考,google之所以對阿里雲OS憤怒有3點:阿里對Android改動,且不承認是Android;對安卓應用不能完全很好兼容,將可能導致安卓陣營分裂;阿里雲應用商店中有很多盜版應用。說穿了,就是「阿里不聽google的話」。
  • google play 查看對應國家-語言的評論
    注: Google play 的評論顯示只分語言, 不分國家; 比如 英語-英國 與 英語-美國都是一樣的, 但是 印地語-印度 與 英語-印度 顯示的是不一樣的1 用網頁端查看, 手機google play應用商店需要對應國家的ip 比較麻煩, 網頁跟手機端是一樣的
  • 教你直接下載google play商店apk
    在電腦登錄:https://play.google.com/store   可直接推送程序,安裝到手機。這個功能相當方便,但Google Play商店會有地區與設備限制,至於是什麼原因,大家都懂的。    但作為谷粉,程序基本都是從Google Play下載的。下面就讓小編教大家一種直接從谷歌商店下載apk的方法。
  • google play商店閃退解決辦法教程
    google play商店閃退解決辦法教程 來源:www.18183.com作者:jinwei1990時間:2014-10-16 很多玩家在使用google play商店的時候都會發生閃退之類的問題,下面小編就來為大家帶來解決辦法!