博客 / 詳情

返回

Google Play 結算系統入門指南

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 結算系統

優勢:

  1. 安全可靠 - Google 處理所有支付細節,符合 PCI 安全標準
  2. 全球覆蓋 - 支持 130+ 個國家和地區,多種支付方式
  3. 用户信任 - 用户熟悉 Google Play 的支付流程
  4. 自動化 - 訂閲自動續費,退款自動處理
  5. 統一管理 - 在 Google Play 管理中心統一管理商品和訂單

適用場景:

  • 遊戲內購買(金幣、道具、皮膚等)
  • 應用內會員訂閲(VIP、高級功能)
  • 數字內容(電子書、音樂、視頻)
  • 去廣告服務
  • 雲存儲空間

1.3 系統架構

graph TB
    User[用户] --> App[您的應用]
    App --> BillingLib[Google Play 結算庫]
    BillingLib --> PlayStore[Google Play 商店]
    PlayStore --> Payment[支付處理]
    Payment --> User
    
    App --> Backend[您的後端服務器]
    Backend --> PlayAPI[Google Play Developer API]
    PlayAPI --> Backend
    Backend --> App
    
    style User fill:#e1f5ff
    style App fill:#fff4e1
    style BillingLib fill:#e8f5e9
    style PlayStore fill:#f3e5f5
    style Backend fill:#fff9c4

主要組成部分:

  1. 您的應用 - 展示商品,發起購買請求
  2. Google Play 結算庫 - 應用中集成的 SDK,處理支付流程
  3. Google Play 商店 - 處理實際的支付交易
  4. 您的後端服務器 - 驗證購買,發放商品(強烈推薦)
  5. 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)

特點:

  • ✅ 可以重複購買
  • ✅ 使用後會"消耗"掉
  • ✅ 消耗後可以再次購買

典型例子:

  • 遊戲金幣、鑽石
  • 遊戲道具(血瓶、復活卡)
  • 應用內貨幣
  • 一次性增益道具

購買流程:

sequenceDiagram
    participant User as 用户
    participant App as 應用
    participant Play as Google Play
    
    User->>App: 1. 點擊購買 100 金幣
    App->>Play: 2. 發起購買請求
    Play->>User: 3. 顯示支付界面
    User->>Play: 4. 完成支付
    Play->>App: 5. 返回購買成功
    App->>App: 6. 驗證購買
    App->>User: 7. 發放 100 金幣
    App->>Play: 8. 消耗商品
    Note over App,Play: 消耗後,用户可以再次購買

重要概念 - 消耗(Consume):

消耗型商品購買後必須"消耗",否則用户無法再次購買。

  • 未消耗:用户已購買但未消耗,無法再次購買
  • 已消耗:商品已使用,用户可以再次購買

類比: 就像買飲料,喝完(消耗)後才能再買一瓶。

3.1.2 非消耗型商品(Non-consumable)

特點:

  • ✅ 只能購買一次
  • ✅ 永久擁有
  • ❌ 不需要消耗
  • ❌ 不能重複購買

典型例子:

  • 遊戲關卡解鎖
  • 應用高級版升級
  • 去廣告功能
  • 永久性功能解鎖

購買流程:

sequenceDiagram
    participant User as 用户
    participant App as 應用
    participant Play as Google Play
    
    User->>App: 1. 點擊購買"去廣告"
    App->>Play: 2. 發起購買請求
    Play->>User: 3. 顯示支付界面
    User->>Play: 4. 完成支付
    Play->>App: 5. 返回購買成功
    App->>App: 6. 驗證購買
    App->>User: 7. 激活去廣告功能
    App->>Play: 8. 確認購買
    Note over App,Play: 用户永久擁有,不能再次購買

重要概念 - 確認(Acknowledge):

非消耗型商品購買後必須"確認",告訴 Google Play 商品已成功交付。

  • 如果 3 天內不確認,Google 會自動退款
  • 確認後,購買才算完成

3.2 訂閲商品(Subscriptions)

訂閲商品是按週期(如每月、每年)自動續費的商品。

特點:

  • 🔄 自動續訂,直到用户取消
  • ⏰ 按固定週期收費
  • ✅ 需要確認購買
  • 📊 有多種狀態(有效、已取消、寬限期等)

典型例子:

  • VIP 會員
  • 音樂/視頻訂閲
  • 新聞訂閲
  • 雲存儲空間
  • 高級功能訂閲

訂閲週期:

  • 每週
  • 每月
  • 每季度(3 個月)
  • 每半年(6 個月)
  • 每年

4. 購買流程

4.1 完整購買流程

無論是一次性商品還是訂閲,購買流程都包含以下關鍵步驟:

graph TD
    A[1. 展示商品] --> B[2. 用户選擇購買]
    B --> C[3. 發起支付流程]
    C --> D[4. 用户完成支付]
    D --> E[5. 驗證購買]
    E --> F{商品類型?}
    F -->|消耗型| G[6a. 發放商品 + 消耗]
    F -->|非消耗型/訂閲| H[6b. 發放商品 + 確認]
    G --> I[完成]
    H --> I
    
    style A fill:#e3f2fd
    style D fill:#fff9c4
    style E fill:#ffebee
    style I fill:#e8f5e9

4.2 步驟詳解

步驟 1: 展示商品

應用查詢並展示可購買的商品列表,包括:

  • 商品名稱
  • 商品描述
  • 價格(自動本地化)
步驟 2: 用户選擇購買

用户點擊購買按鈕,應用準備發起購買請求。

步驟 3: 發起支付流程

應用調用 Google Play 結算庫,啓動支付界面。

此時會發生:

  • Google Play 接管界面
  • 顯示商品詳情和價格
  • 顯示支付方式選擇
步驟 4: 用户完成支付

用户在 Google Play 界面中:

  • 確認購買
  • 選擇支付方式
  • 完成支付

支付方式可能包括:

  • 信用卡/借記卡
  • Google Play 餘額
  • 運營商代扣
  • PayPal
  • 其他本地支付方式
步驟 5: 驗證購買

非常重要! 應用(最好是後端服務器)必須驗證購買的真實性。

為什麼要驗證?

  • 防止欺詐
  • 確保購買合法
  • 避免被破解應用騙取商品

如何驗證?

  • 使用 Google Play Developer API
  • 驗證購買令牌的有效性
  • 檢查訂單狀態
步驟 6: 發放商品並處理

消耗型商品:

  1. 發放商品給用户(如增加金幣)
  2. 調用"消耗"接口
  3. 用户可以再次購買

非消耗型商品/訂閲:

  1. 發放商品給用户(如激活 VIP)
  2. 調用"確認"接口
  3. 購買完成

4.3 購買狀態

購買可能處於不同的狀態:

狀態 説明 應用操作
待處理 支付尚未完成(如等待銀行確認) 等待,不發放商品
已購買 支付成功,但未確認/消耗 驗證後發放商品
已確認 非消耗型商品已確認 無需操作
已消耗 消耗型商品已消耗 可以再次購買

5. 訂閲系統

訂閲是 Google Play 結算系統中較為複雜的部分,需要理解更多概念。

5.1 訂閲配置

一個訂閲商品可以有多種配置:

基礎方案(Base Plan)

基礎方案定義了訂閲的基本屬性:

  • 計費週期(每月、每年等)
  • 價格
  • 續訂類型(自動續訂或預付費)

一個訂閲可以有多個基礎方案,例如:

  • 月度訂閲:每月 $9.99
  • 年度訂閲:每年 $99.99(相當於每月 $8.33)
優惠(Offer)

優惠是在基礎方案上的促銷活動:

優惠類型:

  1. 免費試用 - 用户免費使用一段時間

    • 例如:7 天免費試用,然後每月 $9.99
  2. 介紹價格 - 首次訂閲享受優惠價

    • 例如:首月 $0.99,之後每月 $9.99
  3. 促銷價格 - 限時優惠

    • 例如:前 3 個月每月 $4.99,之後每月 $9.99

優惠示例:

gantt
    title 訂閲優惠示例
    dateFormat X
    axisFormat %s
    
    section 免費試用
    免費試用 7 天 :0, 7
    正常價格 $9.99/月 :7, 37
    
    section 介紹價格
    首月 $0.99 :0, 30
    正常價格 $9.99/月 :30, 60

5.2 訂閲生命週期

訂閲在其生命週期中會經歷多種狀態:

stateDiagram-v2
    [*] --> 未訂閲
    
    未訂閲 --> 試用期: 開始免費試用
    未訂閲 --> 有效訂閲: 直接訂閲
    
    試用期 --> 有效訂閲: 試用結束,開始付費
    試用期 --> 已取消: 試用期內取消
    
    有效訂閲 --> 有效訂閲: 自動續訂成功
    有效訂閲 --> 已取消: 用户取消訂閲
    有效訂閲 --> 寬限期: 支付失敗
    
    寬限期 --> 有效訂閲: 支付成功
    寬限期 --> 賬號保留期: 寬限期結束仍未支付
    
    賬號保留期 --> 有效訂閲: 用户更新支付方式
    賬號保留期 --> 已過期: 保留期結束
    
    已取消 --> 已過期: 到期
    已過期 --> [*]
狀態説明
狀態 説明 用户權益 自動續訂
有效訂閲 訂閲正常,用户已付費 ✅ 可使用 ✅ 會續訂
試用期 免費試用階段 ✅ 可使用 ✅ 會續訂
已取消 用户已取消,但未到期 ✅ 可使用 ❌ 不續訂
寬限期 支付失敗,Google 重試中 ✅ 可使用 ⏳ 嘗試續訂
賬號保留期 支付失敗,等待用户更新 ❌ 不可使用 ⏳ 等待恢復
已暫停 用户主動暫停訂閲 ❌ 不可使用 ⏸️ 已暫停
已過期 訂閲已結束 ❌ 不可使用 ❌ 已結束
重要狀態詳解

1. 寬限期(Grace Period)

當用户的支付方式出現問題時(如信用卡過期),Google Play 會:

  • 繼續讓用户使用訂閲內容
  • 在後台嘗試重新扣款
  • 給用户時間更新支付方式

寬限期通常為 3-7 天

2. 賬號保留期(Account Hold)

如果寬限期結束仍未支付成功:

  • 暫停用户的訂閲權益
  • 保留用户的訂閲數據
  • 繼續嘗試扣款

保留期通常為 30 天

3. 已取消 vs 已過期

  • 已取消:用户主動取消,但當前週期未結束,仍可使用
  • 已過期:訂閲週期已結束,不能再使用

5.3 訂閲管理

升級和降級

用户可以在訂閲期間更改訂閲計劃:

升級示例:

  • 從"月度會員"升級到"年度會員"
  • 從"基礎版"升級到"高級版"

降級示例:

  • 從"年度會員"降級到"月度會員"
  • 從"高級版"降級到"基礎版"

處理方式:

操作 生效時間 費用處理
升級 立即生效 按比例退款舊訂閲,收取新訂閲費用
降級 當前週期結束後生效 不退款,下個週期按新價格收費
取消訂閲

用户可以隨時取消訂閲:

  1. 用户在 Google Play 中取消訂閲
  2. 訂閲狀態變為"已取消"
  3. 當前週期結束前,用户仍可使用
  4. 週期結束後,訂閲過期

重要: 應用無法代替用户取消訂閲,只能引導用户到 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 驗證流程

sequenceDiagram
    participant App as 應用
    participant Play as Google Play
    participant Server as 您的服務器
    participant API as Google Play API
    
    App->>Play: 1. 發起購買
    Play->>App: 2. 返回購買令牌
    App->>Server: 3. 提交購買令牌
    Server->>API: 4. 驗證購買令牌
    API->>Server: 5. 返回驗證結果
    Server->>Server: 6. 檢查訂單狀態
    Server->>App: 7. 發放商品
    App->>Play: 8. 消耗/確認

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 開發建議

  1. 始終在服務器端驗證 - 不要僅依賴客户端驗證
  2. 處理所有狀態 - 包括待處理、失敗、取消等狀態
  3. 實現冪等性 - 防止重複發放商品
  4. 監聽實時通知 - 及時處理訂閲狀態變化
  5. 提供清晰的用户界面 - 讓用户瞭解購買內容和價格
  6. 測試所有場景 - 包括網絡錯誤、支付失敗等

8.2 用户體驗

  1. 清晰的商品描述 - 讓用户知道買的是什麼
  2. 本地化價格 - Google Play 自動處理貨幣轉換
  3. 訂閲管理 - 提供訂閲狀態查詢和管理入口
  4. 恢復購買 - 允許用户恢復之前的購買
  5. 友好的錯誤提示 - 支付失敗時給出明確的提示

8.3 合規要求

  1. 遵守 Google Play 政策 - 不得銷售違禁商品
  2. 明確的訂閲條款 - 告知用户續費規則
  3. 提供退款支持 - 按 Google Play 政策處理退款
  4. 保護用户隱私 - 妥善處理購買數據

9. 常見問題

Q1: 消耗和確認有什麼區別?

A:

  • 消耗(Consume):用於消耗型商品,消耗後可以再次購買
  • 確認(Acknowledge):用於非消耗型商品和訂閲,確認商品已交付

Q2: 為什麼必須在 3 天內確認購買?

A: Google 的政策規定,如果 3 天內不確認,會自動退款給用户。這是為了保護消費者權益。

Q3: 訂閲和一次性購買哪個更好?

A: 取決於您的業務模式:

  • 訂閲:適合持續提供服務(如會員、內容訂閲)
  • 一次性購買:適合一次性商品(如遊戲道具、功能解鎖)

Q4: 如何測試購買流程?

A:

  1. 在 Google Play 管理中心添加測試賬號
  2. 使用測試賬號登錄設備
  3. 測試購買不會真實扣費
  4. 測試訂閲會加速到期(如月訂閲變為 5 分鐘)

Q5: 用户換設備後如何恢復購買?

A:

  • 非消耗型商品和訂閲:自動恢復,只需查詢購買記錄
  • 消耗型商品:無法恢復(因為已消耗)

Q6: 如何處理退款?

A:

  • 用户在 Google Play 申請退款
  • Google 處理退款請求
  • 您會收到實時通知
  • 應用應撤銷用户的使用權

10. 下一步

現在您已經瞭解了 Google Play 結算系統的基本概念,可以:

  1. 📖 閲讀技術集成文檔,瞭解如何在應用中實現
  2. 🎮 查看示例代碼,學習最佳實踐
  3. 🧪 創建測試商品,進行實際測試
  4. 🚀 發佈您的第一個付費商品

相關資源:

  • Google Play 結算官方文檔
  • Google Play 管理中心
  • Google Play Developer API

總結

Google Play 結算系統是一個強大而完善的支付解決方案:

  • 🛡️ 安全可靠 - Google 級別的安全保障
  • 🌍 全球覆蓋 - 支持全球用户和多種支付方式
  • 🔄 自動化 - 訂閲自動續費,減少管理成本
  • 💰 靈活定價 - 支持多種商品類型和優惠策略

理解這些核心概念後,您就可以開始在應用中集成 Google Play 結算系統,為用户提供優質的付費體驗!

更多

  • GooglePay 支付庫
  • GooglePay 消耗商品購買流程
  • GooglePay 訂閲商品購買流程
  • GooglePay: API 文檔
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.