您剛在 Android 應用程式或漸進式網頁應用程式中導入 Play 結帳系統,使用者現在可以購買數位商品。現在,您可以在後端伺服器中實作一些重要的 Play 結帳元件。
Google Play Developer API
Google Play Developer API 包含兩個元件:Subscriptions and In-app Purchases API 和 Publishing API。Subscriptions and In-app Purchases API 包含下列 REST 資源,可協助管理產品和購買交易:
inappproducts:管理應用程式內商品和訂閱目錄purchases.products:應用程式內商品購買狀態purchases.subscriptions:訂閱項目購買狀態和管理
您可以直接使用 Google Play Developer API 做為 REST API,也可以使用用戶端程式庫快速開始開發。如要查看所有支援語言的用戶端程式庫,請按這裡。請按照 Google Play Developer API 的入門指南,連結 API 專案並設定 API 存取用戶端。
列出所有應用程式內商品
在前端 (Android 應用程式或漸進式網頁應用程式) 查詢可用的產品詳細資料時,您必須指定產品 ID 清單。您可以使用 Play Developer API inappproducts.list 方法,在後端伺服器中實作這項功能,列出您在 Play 管理中心建立的所有應用程式內商品和訂閱項目。請務必檢查每項產品的 status,並只將 active 傳送至應用程式用戶端。
授權前請先驗證購買交易
在 Android 應用程式或漸進式網頁應用程式中導入 Google Play 結帳系統時,請務必先驗證購買交易,再將權限授予使用者。授予使用者授權時,您會提供與所購項目相關的福利或內容存取權。由於這項作業需要處理私密資料,因此應在後端伺服器上進行。
Google Play Developer API 提供 purchases.products:get 和 purchases.subscriptions:get 方法。搭配在應用程式內擷取或儲存在後端伺服器上的購買憑證,驗證購買交易是否符合規定。您應在後端伺服器上追蹤購買交易權杖,以便驗證額外購買交易和使用者權利。如要進一步瞭解應採取的步驟,請參閱 Google Play 結帳系統說明文件的購買交易驗證一節。
應用程式內購
後端收到用戶端傳送的購買憑證後,應呼叫 Google Play Developer API,確認憑證尚未消耗。有效購買交易的 purchaseState 欄位為 1。
如果購買交易有效,用戶端應在收到伺服器的回應後確認交易並授予授權。
訂閱購買交易
與驗證應用程式內購交易類似,後端伺服器應在收到用戶端傳送的購買憑證後,呼叫 Google Play Developer API,並驗證訂閱項目是否仍有效。
如果訂閱項目的 expiryTimeMillis 欄位大於目前時間,用戶端應授予權利。
此外,您也可以趁這個機會檢查 linkedPurchaseToken 欄位,並適當更新訂閱資料庫,以處理升級、降級和其他訂閱流程。本頁面其餘部分會進一步說明。
隨時更新後端狀態
如果您的應用程式在不同平台提供服務 (可能也使用不同的付款方式),請務必在後端伺服器上追蹤使用者及其購買項目,確保使用者在不同裝置和平台上使用應用程式時,都能享有相同的權益。
舉例來說,您可以建立資料庫,記錄使用者及其目前的權利。然後在使用者購買或使用權益時,相應更新該物件。下次使用者從其他平台存取應用程式時,您可以從後端擷取適當的權利,讓使用者存取應用程式。
處理訂閱狀態變更
訂閱項目會在生命週期中經歷各種狀態變更,您應確保對每項變更做出適當回應。進一步瞭解如何處理訂閱生命週期,確保後端一律為最新狀態。
Subscription linkedPurchaseToken
如訂閱項目文件所述,每項新的 Google Play 購買流程 (首次購買、升級或降級) 都會產生新的購買憑證。透過 linkedPurchaseToken 欄位,您可以辨識多個購買憑證是否屬於同一個訂閱項目。
每次驗證訂閱項目時,後端都應檢查是否已設定 linkedPurchaseToken 欄位。如果是,該欄位中的值代表先前已遭取代的權杖。您應立即將先前的權杖標示為無效,以免使用者用來存取您的內容。
舉例來說,當後端收到初始購買交易的購買憑證 A 時,如果 linkedPurchaseToken 欄位空白,系統就會啟用該憑證的授權。稍後,當後端在升級後收到新的購買憑證 B 時,會檢查 linkedPurchaseToken 欄位,發現該欄位設為 A,並停用購買憑證 A 的授權。

如要詳細瞭解如何實作 linkedPurchaseToken,請參閱「正確執行 linkedPurchaseToken 以避免重複訂閱」。
即時開發人員通知
Google Play Developer API 的 purchases.subscriptions:get 方法是管理使用者訂閱項目的事實來源。如果您在安全的後端伺服器上管理訂閱者的狀態,請確保該狀態與 Google 伺服器保持同步。不過,如果頻繁輪詢 Google Play Developer API,可能會導致 API 配額受到限制,並延遲接收重要使用者動作 (例如取消或升級訂閱) 的通知。
即時開發人員通知 (RTDN) 是 Google Play 結帳服務的功能,可在訂閱者授權狀態變更時 (例如購買、取消或暫停訂閱),向您的伺服器傳送即時通知。有了 RTDN,您只需回應這些通知,即可讓訂閱者資料庫保持同步,不必定期輪詢 Google Play Developer API。
系統會針對影響訂閱狀態的事件 (例如續訂和取消訂閱) 傳送 SubscriptionNotification 至後端伺服器。然後使用通知中的購買憑證呼叫 Google Play Developer API,取得完整狀態並更新自己的後端狀態。
如要為應用程式設定 RTDN,請按照這些操作說明進行。接著,請設定後端伺服器來使用這些訊息。
詳情請參閱完整的 RTDN 參考資料。