Google Play 結算系統入門指南
本文檔面向完全不瞭解 Google Play 支付的開發者,主要介紹概念性知識,幫助您快速理解 Google Play 結算系統的核心概念和工作原理。
目錄
- 1. 什麼是 Google Play 結算系統
- 2. 核心概念
- 3. 商品類型
- 4. 購買流程
- 5. 訂閲系統
- 6. 重要術語
- 7. 安全與驗證
1. 什麼是 Google Play 結算系統
1.1 簡介
Google Play 結算系統(Google Play Billing)是 Google 提供的一項服務,允許開發者在 Android 應用中銷售數字商品和內容。
簡單來説,就是:
- 📱 用户在您的應用中購買虛擬商品
- 💳 通過 Google Play 完成支付
- ✅ Google 處理支付流程並分成
- 🎁 您的應用向用户提供商品或服務
1.2 為什麼使用 Google Play 結算系統
優勢:
- 安全可靠 - Google 處理所有支付細節,符合 PCI 安全標準
- 全球覆蓋 - 支持 130+ 個國家和地區,多種支付方式
- 用户信任 - 用户熟悉 Google Play 的支付流程
- 自動化 - 訂閲自動續費,退款自動處理
- 統一管理 - 在 Google Play 管理中心統一管理商品和訂單
適用場景:
- 遊戲內購買(金幣、道具、皮膚等)
- 應用內會員訂閲(VIP、高級功能)
- 數字內容(電子書、音樂、視頻)
- 去廣告服務
- 雲存儲空間
1.3 系統架構
主要組成部分:
- 您的應用 - 展示商品,發起購買請求
- Google Play 結算庫 - 應用中集成的 SDK,處理支付流程
- Google Play 商店 - 處理實際的支付交易
- 您的後端服務器 - 驗證購買,發放商品(強烈推薦)
- Google Play Developer API - 服務器端驗證和管理訂單的接口
2. 核心概念
2.1 商品(Product)
商品是您在應用中銷售的數字內容或服務。每個商品都有:
- 商品 ID(Product ID):唯一標識符,如
com.example.coin_100 - 名稱:用户看到的商品名稱,如 "100 金幣"
- 描述:商品的詳細説明
- 價格:各個國家/地區的定價
2.2 購買令牌(Purchase Token)
購買令牌是一個字符串,代表用户對某個商品的所有權。
- 每次購買都會生成一個唯一的購買令牌
- 用於驗證用户是否真的購買了商品
- 服務器端驗證時必須使用購買令牌
類比: 就像電影票,憑票入場。購買令牌就是用户的"購買憑證"。
2.3 訂單 ID(Order ID)
訂單 ID 是 Google Play 生成的交易編號。
- 每次支付都會生成一個訂單 ID
- 用於財務對賬和退款管理
- 用户的購買收據中會顯示訂單 ID
類比: 就像網購的訂單號,用於追蹤和管理交易。
2.4 使用權(Entitlement)
使用權表示用户有權使用某個商品或服務。
- 一次性商品:購買後永久擁有使用權
- 訂閲商品:訂閲期內擁有使用權,到期後失效
3. 商品類型
Google Play 支持兩大類商品:一次性商品和訂閲商品。
3.1 一次性商品(One-time Products)
一次性商品是用户購買一次就擁有的商品,又分為兩種:
3.1.1 消耗型商品(Consumable)
特點:
- ✅ 可以重複購買
- ✅ 使用後會"消耗"掉
- ✅ 消耗後可以再次購買
典型例子:
- 遊戲金幣、鑽石
- 遊戲道具(血瓶、復活卡)
- 應用內貨幣
- 一次性增益道具
購買流程:
重要概念 - 消耗(Consume):
消耗型商品購買後必須"消耗",否則用户無法再次購買。
- 未消耗:用户已購買但未消耗,無法再次購買
- 已消耗:商品已使用,用户可以再次購買
類比: 就像買飲料,喝完(消耗)後才能再買一瓶。
3.1.2 非消耗型商品(Non-consumable)
特點:
- ✅ 只能購買一次
- ✅ 永久擁有
- ❌ 不需要消耗
- ❌ 不能重複購買
典型例子:
- 遊戲關卡解鎖
- 應用高級版升級
- 去廣告功能
- 永久性功能解鎖
購買流程:
重要概念 - 確認(Acknowledge):
非消耗型商品購買後必須"確認",告訴 Google Play 商品已成功交付。
- 如果 3 天內不確認,Google 會自動退款
- 確認後,購買才算完成
3.2 訂閲商品(Subscriptions)
訂閲商品是按週期(如每月、每年)自動續費的商品。
特點:
- 🔄 自動續訂,直到用户取消
- ⏰ 按固定週期收費
- ✅ 需要確認購買
- 📊 有多種狀態(有效、已取消、寬限期等)
典型例子:
- VIP 會員
- 音樂/視頻訂閲
- 新聞訂閲
- 雲存儲空間
- 高級功能訂閲
訂閲週期:
- 每週
- 每月
- 每季度(3 個月)
- 每半年(6 個月)
- 每年
4. 購買流程
4.1 完整購買流程
無論是一次性商品還是訂閲,購買流程都包含以下關鍵步驟:
4.2 步驟詳解
步驟 1: 展示商品
應用查詢並展示可購買的商品列表,包括:
- 商品名稱
- 商品描述
- 價格(自動本地化)
步驟 2: 用户選擇購買
用户點擊購買按鈕,應用準備發起購買請求。
步驟 3: 發起支付流程
應用調用 Google Play 結算庫,啓動支付界面。
此時會發生:
- Google Play 接管界面
- 顯示商品詳情和價格
- 顯示支付方式選擇
步驟 4: 用户完成支付
用户在 Google Play 界面中:
- 確認購買
- 選擇支付方式
- 完成支付
支付方式可能包括:
- 信用卡/借記卡
- Google Play 餘額
- 運營商代扣
- PayPal
- 其他本地支付方式
步驟 5: 驗證購買
非常重要! 應用(最好是後端服務器)必須驗證購買的真實性。
為什麼要驗證?
- 防止欺詐
- 確保購買合法
- 避免被破解應用騙取商品
如何驗證?
- 使用 Google Play Developer API
- 驗證購買令牌的有效性
- 檢查訂單狀態
步驟 6: 發放商品並處理
消耗型商品:
- 發放商品給用户(如增加金幣)
- 調用"消耗"接口
- 用户可以再次購買
非消耗型商品/訂閲:
- 發放商品給用户(如激活 VIP)
- 調用"確認"接口
- 購買完成
4.3 購買狀態
購買可能處於不同的狀態:
| 狀態 | 説明 | 應用操作 |
|---|---|---|
| 待處理 | 支付尚未完成(如等待銀行確認) | 等待,不發放商品 |
| 已購買 | 支付成功,但未確認/消耗 | 驗證後發放商品 |
| 已確認 | 非消耗型商品已確認 | 無需操作 |
| 已消耗 | 消耗型商品已消耗 | 可以再次購買 |
5. 訂閲系統
訂閲是 Google Play 結算系統中較為複雜的部分,需要理解更多概念。
5.1 訂閲配置
一個訂閲商品可以有多種配置:
基礎方案(Base Plan)
基礎方案定義了訂閲的基本屬性:
- 計費週期(每月、每年等)
- 價格
- 續訂類型(自動續訂或預付費)
一個訂閲可以有多個基礎方案,例如:
- 月度訂閲:每月 $9.99
- 年度訂閲:每年 $99.99(相當於每月 $8.33)
優惠(Offer)
優惠是在基礎方案上的促銷活動:
優惠類型:
-
免費試用 - 用户免費使用一段時間
- 例如:7 天免費試用,然後每月 $9.99
-
介紹價格 - 首次訂閲享受優惠價
- 例如:首月 $0.99,之後每月 $9.99
-
促銷價格 - 限時優惠
- 例如:前 3 個月每月 $4.99,之後每月 $9.99
優惠示例:
5.2 訂閲生命週期
訂閲在其生命週期中會經歷多種狀態:
狀態説明
| 狀態 | 説明 | 用户權益 | 自動續訂 |
|---|---|---|---|
| 有效訂閲 | 訂閲正常,用户已付費 | ✅ 可使用 | ✅ 會續訂 |
| 試用期 | 免費試用階段 | ✅ 可使用 | ✅ 會續訂 |
| 已取消 | 用户已取消,但未到期 | ✅ 可使用 | ❌ 不續訂 |
| 寬限期 | 支付失敗,Google 重試中 | ✅ 可使用 | ⏳ 嘗試續訂 |
| 賬號保留期 | 支付失敗,等待用户更新 | ❌ 不可使用 | ⏳ 等待恢復 |
| 已暫停 | 用户主動暫停訂閲 | ❌ 不可使用 | ⏸️ 已暫停 |
| 已過期 | 訂閲已結束 | ❌ 不可使用 | ❌ 已結束 |
重要狀態詳解
1. 寬限期(Grace Period)
當用户的支付方式出現問題時(如信用卡過期),Google Play 會:
- 繼續讓用户使用訂閲內容
- 在後台嘗試重新扣款
- 給用户時間更新支付方式
寬限期通常為 3-7 天
2. 賬號保留期(Account Hold)
如果寬限期結束仍未支付成功:
- 暫停用户的訂閲權益
- 保留用户的訂閲數據
- 繼續嘗試扣款
保留期通常為 30 天
3. 已取消 vs 已過期
- 已取消:用户主動取消,但當前週期未結束,仍可使用
- 已過期:訂閲週期已結束,不能再使用
5.3 訂閲管理
升級和降級
用户可以在訂閲期間更改訂閲計劃:
升級示例:
- 從"月度會員"升級到"年度會員"
- 從"基礎版"升級到"高級版"
降級示例:
- 從"年度會員"降級到"月度會員"
- 從"高級版"降級到"基礎版"
處理方式:
| 操作 | 生效時間 | 費用處理 |
|---|---|---|
| 升級 | 立即生效 | 按比例退款舊訂閲,收取新訂閲費用 |
| 降級 | 當前週期結束後生效 | 不退款,下個週期按新價格收費 |
取消訂閲
用户可以隨時取消訂閲:
- 用户在 Google Play 中取消訂閲
- 訂閲狀態變為"已取消"
- 當前週期結束前,用户仍可使用
- 週期結束後,訂閲過期
重要: 應用無法代替用户取消訂閲,只能引導用户到 Google Play 管理頁面。
6. 重要術語
6.1 技術術語
| 術語 | 英文 | 説明 |
|---|---|---|
| Google Play 結算庫 | Play Billing Library | 集成到應用中的 SDK,處理支付流程 |
| Google Play 管理中心 | Play Console | 開發者管理應用和商品的後台 |
| Google Play Developer API | - | 服務器端驗證和管理訂單的 API |
| 實時開發者通知 | Real-time Developer Notifications | Google 推送的訂閲狀態變化通知 |
6.2 業務術語
| 術語 | 英文 | 説明 |
|---|---|---|
| 商品 ID | Product ID | 商品的唯一標識符 |
| 購買令牌 | Purchase Token | 代表用户購買權的憑證 |
| 訂單 ID | Order ID | 財務交易的唯一編號 |
| 使用權 | Entitlement | 用户使用商品的權利 |
| 消耗 | Consume | 消耗型商品使用後的操作 |
| 確認 | Acknowledge | 非消耗型商品/訂閲交付後的確認 |
6.3 訂閲術語
| 術語 | 英文 | 説明 |
|---|---|---|
| 基礎方案 | Base Plan | 訂閲的基本配置(週期、價格) |
| 優惠 | Offer | 促銷活動(試用、折扣等) |
| 寬限期 | Grace Period | 支付失敗後的寬限時間 |
| 賬號保留期 | Account Hold | 寬限期後的數據保留期 |
| 升級 | Upgrade | 更換到更高級的訂閲 |
| 降級 | Downgrade | 更換到更低級的訂閲 |
7. 安全與驗證
7.1 為什麼需要驗證
風險:
- 黑客可能破解應用,偽造購買
- 用户可能使用修改版應用騙取商品
- 惡意用户可能重複使用購買憑證
解決方案: 在服務器端驗證所有購買
7.2 驗證流程
7.3 驗證要點
必須驗證:
- ✅ 購買令牌是否有效
- ✅ 購買狀態是否為"已購買"
- ✅ 商品 ID 是否匹配
- ✅ 訂單是否已經處理過(防止重複發放)
服務器端驗證的優勢:
- 🔒 更安全,客户端無法繞過
- 📊 便於記錄和審計
- 🔄 支持跨平台(iOS、Web 等)
- 💾 統一的數據管理
7.4 防止重複發放
問題: 同一個購買可能被多次提交
解決方案: 使用訂單 ID 或購買令牌做冪等性檢查
偽代碼示例:
function handlePurchase(purchaseToken) {
// 1. 檢查是否已處理
if (database.exists(purchaseToken)) {
return "已處理過"
}
// 2. 驗證購買
if (!verifyWithGoogle(purchaseToken)) {
return "驗證失敗"
}
// 3. 發放商品
grantProduct(user, product)
// 4. 記錄已處理
database.save(purchaseToken)
return "成功"
}
8. 最佳實踐
8.1 開發建議
- 始終在服務器端驗證 - 不要僅依賴客户端驗證
- 處理所有狀態 - 包括待處理、失敗、取消等狀態
- 實現冪等性 - 防止重複發放商品
- 監聽實時通知 - 及時處理訂閲狀態變化
- 提供清晰的用户界面 - 讓用户瞭解購買內容和價格
- 測試所有場景 - 包括網絡錯誤、支付失敗等
8.2 用户體驗
- 清晰的商品描述 - 讓用户知道買的是什麼
- 本地化價格 - Google Play 自動處理貨幣轉換
- 訂閲管理 - 提供訂閲狀態查詢和管理入口
- 恢復購買 - 允許用户恢復之前的購買
- 友好的錯誤提示 - 支付失敗時給出明確的提示
8.3 合規要求
- 遵守 Google Play 政策 - 不得銷售違禁商品
- 明確的訂閲條款 - 告知用户續費規則
- 提供退款支持 - 按 Google Play 政策處理退款
- 保護用户隱私 - 妥善處理購買數據
9. 常見問題
Q1: 消耗和確認有什麼區別?
A:
- 消耗(Consume):用於消耗型商品,消耗後可以再次購買
- 確認(Acknowledge):用於非消耗型商品和訂閲,確認商品已交付
Q2: 為什麼必須在 3 天內確認購買?
A: Google 的政策規定,如果 3 天內不確認,會自動退款給用户。這是為了保護消費者權益。
Q3: 訂閲和一次性購買哪個更好?
A: 取決於您的業務模式:
- 訂閲:適合持續提供服務(如會員、內容訂閲)
- 一次性購買:適合一次性商品(如遊戲道具、功能解鎖)
Q4: 如何測試購買流程?
A:
- 在 Google Play 管理中心添加測試賬號
- 使用測試賬號登錄設備
- 測試購買不會真實扣費
- 測試訂閲會加速到期(如月訂閲變為 5 分鐘)
Q5: 用户換設備後如何恢復購買?
A:
- 非消耗型商品和訂閲:自動恢復,只需查詢購買記錄
- 消耗型商品:無法恢復(因為已消耗)
Q6: 如何處理退款?
A:
- 用户在 Google Play 申請退款
- Google 處理退款請求
- 您會收到實時通知
- 應用應撤銷用户的使用權
10. 下一步
現在您已經瞭解了 Google Play 結算系統的基本概念,可以:
- 📖 閲讀技術集成文檔,瞭解如何在應用中實現
- 🎮 查看示例代碼,學習最佳實踐
- 🧪 創建測試商品,進行實際測試
- 🚀 發佈您的第一個付費商品
相關資源:
- Google Play 結算官方文檔
- Google Play 管理中心
- Google Play Developer API
總結
Google Play 結算系統是一個強大而完善的支付解決方案:
- 🛡️ 安全可靠 - Google 級別的安全保障
- 🌍 全球覆蓋 - 支持全球用户和多種支付方式
- 🔄 自動化 - 訂閲自動續費,減少管理成本
- 💰 靈活定價 - 支持多種商品類型和優惠策略
理解這些核心概念後,您就可以開始在應用中集成 Google Play 結算系統,為用户提供優質的付費體驗!
更多
- GooglePay 支付庫
- GooglePay 消耗商品購買流程
- GooglePay 訂閲商品購買流程
- GooglePay: API 文檔