Google Play Voided Purchases API 提供與使用者作廢的購買交易相關的訂單清單。這項訂單資訊可以用來實作撤銷系統,防止使用者存取訂單中的產品。
這個 API 適用於一次性應用程式內訂單和應用程式訂閱項目。
購買交易的作廢方式如下:
- 使用者申請退回訂單款項。
- 使用者取消訂單。
- 訂單遭到交易退單。
開發人員取消訂單或申請退回訂單款項。
Google 取消訂單或申請退回訂單款項。
有了 API,您就能為應用程式的所有使用者打造更平衡公平的環境,特別是遊戲應用程式。
取得存取權
如要使用 Voided Purchases API,您必須具備查看財務資訊的權限。您可以使用 OAuth 用戶端或服務帳戶提供授權。如果您使用服務帳戶,請在這個帳戶中啟用「查看財務報表」權限。
如要進一步瞭解如何取得 Google Play Developer API 的授權存取權,請參閱下列指南:
查看已取消的購買交易
使用 GET
方法要求列出已取消的交易。在要求中,請加入應用程式的完整套件名稱 (例如 com.google.android.apps.maps
),以及取得 API 存取權時收到的授權權杖。
GET https://www.googleapis.com/androidpublisher/v3/applications/ your_package_name/purchases/voidedpurchases?access_token=your_auth_token
您也可以在要求中加入下列選用參數:
- startTime
以自 Unix 訓練週期起的毫秒為單位,表示您要在回應中查看的最舊已取消購買交易時間。根據預設,
startTime
會設為 30 天前。API 只能顯示過去 30 天內取消的交易。無論您為
startTime
提供的值為何,較早的無效交易都不會納入回應。- endTime
以自 Unix 訓練週期起的毫秒為單位,表示您想在回應中查看的最新取消交易時間。根據預設,
endTime
會設為目前時間。- maxResults
- 每個回應中顯示的無效交易數量上限。根據預設,這個值為 1000。請注意,這個參數的最大值也是 1000。
- token
- 先前回應中的接續符記,可供您查看更多結果。
- 類型
每則回覆中顯示的已取消交易類型。如果設為 0,系統只會傳回已取消的應用程式內購買交易。如果設為 1,系統會傳回已取消的應用程式內商品和訂閱項目。預設值為 0。
- includeQuantityBasedPartialRefund
是否要納入依數量提供部分退款的取消交易,這項功能僅適用於購買多件商品。如果
true
, 可退回的交易作廢項目數量較多,則會以voidedQuantity
表示依數量部分退款的退款數量。預設值為false
。
回覆是 JSON 字串,內含已取消的購買交易清單。如果結果數量超過 maxResults
請求參數中指定的數量,回應會包含 nextPageToken
值,您可以將該值傳遞至後續請求,查看更多結果。清單中的第一個結果會顯示最舊的已取消交易。
{ "tokenPagination": { "nextPageToken": "next_page_token" }, "voidedPurchases": [ { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_purchase_token", "purchaseTimeMillis": "1468825200000", "voidedTimeMillis": "1469430000000", "orderId": "some_order_id", "voidedSource": "0", "voidedReason": "4" }, { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_other_purchase_token", "purchaseTimeMillis": "1468825100000", "voidedTimeMillis": "1470034800000", "orderId": "some_other_order_id", "voidedSource": "2", "voidedReason": "5" }, ] }
配額
Voided Purchases API 會針對每個套件設定下列配額:
- 每日 6,000 次查詢。(「1 天」是從太平洋時間的午夜算起。)
- 在任何 30 秒內提出 30 次查詢。
初始要求指南
在初始 API 要求期間,您可能想擷取應用程式的所有可用資料。雖然不太可能,但這個程序可能會用盡每日配額。如要以更安全、一致的方式取得作廢的購買交易資料,請遵循下列最佳做法:
- 使用
maxResults
參數的預設值。這樣一來,即使您當天的查詢配額全數用盡,也能擷取 6,000,000 筆已取消交易的詳細資料。 - 如果回應包含
nextPageToken
的值,請在下一個要求中將這個值指派給token
參數。
最佳做法
在應用程式中使用這項 API 時,請注意,有許多原因會導致交易失效,而且沒有單一解決方案適用於所有情況。設計撤銷政策和策略時,請務必考量使用者需求。如要這麼做,可以採用下列建議做法:
- 請將這個 API 做為全面策略中的其中一項元素,用來解決不當行為。如果應用程式內購價格合理、應用程式設計可避免不良行為、使用者群體強大且排斥這類行為,以及使用者支援管道反應迅速且有效率,那麼撤銷應用程式內商品存取權通常會更有效。
- 請統一管理撤銷政策,確保所有使用者都能獲得公平待遇。
- 如要處理不當行為,建議建立分階段政策。舉例來說,如果使用者初犯,您可以先在應用程式中發出警告,如果使用者持續出現不當行為,再逐步加重處置。在萬不得已的情況下,您可以完全禁止使用者與應用程式互動。
- 推出或更新撤銷政策時,請透過應用程式的宣傳管道通知使用者。請給予使用者充足時間瞭解這些變更,再於應用程式中生效。
- 請向使用者公開透明地說明情況,並在採取行動時通知他們,例如撤銷他們對應用程式內商品的存取權。理想情況下,使用者應能對您的決定提出爭議,且這類爭議應獲得公平處理。
- 監控意見回饋表單和社群論壇,瞭解使用者做出不良行為的原因和方式。根據這些深入分析資料採取行動,做為第一道防線。