您可能需要對訂閱或一次性消費執行管理動作,做為日常業務的一部分。例如,您的客戶服務可能需要為使用者核發總金額或部分退款,或在某些情況下必須撤銷授權。您可以透過 Play 管理中心管理訂單,也可以使用 Google Play Developer API 管理訂單。
取消訂閱
使用者隨時可以透過 Play 商店取消訂閱 Google Play 訂閱項目,但您也必須為使用者提供在應用程式和網站中取消訂閱的選項 (如適用)。
如要讓使用者自行取消訂閱,最簡單的方法就是連結至 Play 商店,並在其中查看及管理訂閱項目。
您可能也需要從後端觸發取消作業。purchases.subscriptions.cancel
方法可讓您取消訂閱訂閱項目。舉例來說,您可以使用這個方法關閉舊版服務。取消訂閱不會核發退款,而且在當前帳單週期結束前,使用者仍可繼續存取訂閱內容。以這個方式取消訂閱項目可防止使用者從 Play 商店還原訂閱項目,但使用者仍可視需要透過應用程式重新註冊。
執行這項操作後,系統會觸發 SUBSCRIPTION_CANCELED
即時開發人員通知。請按照「取消」一節的說明處理這些取消作業。
延後帳單
使用 subscriptions.defer
可延長訂閱項目的授權期間。在延後期間,使用者可繼續訂閱您的內容,但無須支付額外時間的費用。您延後訂閱項目的收費時,狀態資訊會隨之更新,並顯示在購買狀態資訊的 expiryTime
欄位中:
- 針對有效的週期性訂閱項目,延後收費會延長下一個續訂日期。
- 如果是預付方案,延後帳單會延長到期時間。
以下列舉幾個使用延後收費的例子:
- 以特價優惠的形式向使用者提供免付費存取權,例如為現有訂閱者提供為期一週的免費意見回饋問卷調查。
- 向客戶提供免付費存取權,例如:長時間服務中斷後,可能影響客戶使用您服務的能力。
每個 API 呼叫可以將帳單最短延後一天,最多延後一年。 如要進一步延後授權的結束時間,請在新的到期日前再次呼叫 API。
執行這項操作後,系統會觸發 SUBSCRIPTION_DEFERRED
即時開發人員通知。如要瞭解如何處理這些事件,請參閱「關於訂閱」一文中的「延後訂閱者收費」。
例子:
FitnessGoals 影視串流服務希望在 2 月舉辦宣傳活動來推動定期運動。
他們決定在 2 月內,針對健身目標運動至少 10 次的所有訂閱者提供額外的一個月服務。
開發人員會追蹤挑戰的結果,而在 3 月 1 日,對於 2 月遇到挑戰的使用者,他們每購買一個有效訂閱項目購買交易,就會呼叫
subscriptions.defer
API。這些使用者可以免費獲得為期一個月的例行運動影片,無須付費,而且使用者可以告訴所有朋友 FitnessGoal 如何幫助自己保持健康!
核發退款和撤銷
在許多情況下,您可能會想針對訂閱項目或一次性購買交易核發退款,或是撤銷這類訂閱項目的存取權。
依訂單 ID 為訂單全額退款
透過 orders.refund
API,您可以在購買後的三年內,為任何訂單核發全額退款。
orders.refund
方法會收到撤銷參數,指出除了提供退款之外,是否也應撤銷存取權。
如果您是透過購買交易退款呼叫發出撤銷,系統會立即終止該訂閱項目,並觸發SUBSCRIPTION_REVOKED
即時開發人員通知。如要瞭解如何處理這些事件,請參閱訂閱項目生命週期管理指南的撤銷一節。
例子:
為慶祝全新世界盃開跑,這款電競應用程式「Football-Not-Soccer」決定為所有在前 24 小時內購買新球隊裝備的使用者開打免費的虛擬球衣。
Football-Not-Soccer 會使用
orders.refund
API,而無須傳遞撤銷參數,將運動衫的退款退還給得獎者。
透過購買憑證撤銷訂閱項目並辦理退款
在某些用途中,您可能需要撤銷使用者的訂閱項目存取權,並退款給使用者。Play 帳款服務會提供部分退款,包括按比例退款,您可以使用 subscriptionsv2.revoke
API。透過這個端點,您可以指定 revocationContext
來決定退款的計算方式。
執行這項操作後,系統會觸發 SUBSCRIPTION_REVOKED
即時開發人員通知。應用程式應依據撤銷所述處理這些取消操作。
例子:
- 使用購買憑證
1a2b3c4d5e6f7g8h9i0j
購買 - 套件名稱為
com.your.app
的應用程式 - 按比例核發退款的目的
HTTP POST 要求:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
要求主體:
{
"revocationContext": {
"proratedRefund": {}
}
}
按比例退款
如果您需要終止訂閱項目並部分退還剩餘授權時間,請核發退款。使用 purchases.subscriptionsv2.revoke
函式,並將 "proratedRefund": {}
設為退款類型。
例子:
Maria 訂閱了 30 天的串流
SuperMovies
月費方案。她開心使用這項服務了一段時間。 Maria 在帳單週期的第 15 天與客服人員聯絡,說明她即將出國,從隔天起將無法繼續使用這項服務。客戶服務團隊在系統中找到 Maria 的訂閱購買詳細資料,並觸發對
purchases.subscriptionsv2.revoke
的呼叫,要求按比例退款。客戶服務告知 Maria 可以退還約 50% 的訂閱費用,並立即終止服務存取權。