管理訂閱項目和一次性消費

您可能需要對訂閱或一次性消費執行管理動作,做為日常業務的一部分。例如,您的客戶服務可能需要為使用者核發總金額或部分退款,或在某些情況下必須撤銷授權。您可以透過 Play 管理中心管理訂單,也可以使用 Google Play Developer API 管理訂單。

取消訂閱

使用者隨時可以透過 Play 商店取消訂閱 Google Play 訂閱項目,但您也必須為使用者提供在應用程式和網站中取消訂閱的選項 (如適用)。

如要讓使用者自行取消訂閱,最簡單的方法就是連結至 Play 商店,並在其中查看及管理訂閱項目。

您可能也需要從後端觸發取消作業。purchases.subscriptions.cancel 方法可讓您取消訂閱訂閱項目。舉例來說,您可以使用這個方法關閉舊版服務。取消訂閱不會核發退款,而且在當前帳單週期結束前,使用者仍可繼續存取訂閱內容。以這個方式取消訂閱項目可防止使用者從 Play 商店還原訂閱項目,但使用者仍可視需要透過應用程式重新註冊。

執行這項操作後,系統會觸發 SUBSCRIPTION_CANCELED 即時開發人員通知。請按照「取消」一節的說明處理這些取消作業。

延後帳單

使用 subscriptions.defer 可延長訂閱項目的授權期間。在延後期間,使用者可繼續訂閱您的內容,但無須支付額外時間的費用。您延後訂閱項目的收費時,狀態資訊會隨之更新,並顯示在購買狀態資訊的 expiryTime 欄位中:

  • 針對有效的週期性訂閱項目,延後收費會延長下一個續訂日期。
  • 如果是預付方案,延後帳單會延長到期時間。

以下列舉幾個使用延後收費的例子:

  • 以特價優惠的形式向使用者提供免付費存取權,例如為現有訂閱者提供為期一週的免費意見回饋問卷調查。
  • 向客戶提供免付費存取權,例如:長時間服務中斷後,可能影響客戶使用您服務的能力。

每個 API 呼叫可以將帳單最短延後一天,最多延後一年。 如要進一步延後授權的結束時間,請在新的到期日前再次呼叫 API。

執行這項操作後,系統會觸發 SUBSCRIPTION_DEFERRED 即時開發人員通知。如要瞭解如何處理這些事件,請參閱「關於訂閱」一文中的「延後訂閱者收費」。

例子:

  1. FitnessGoals 影視串流服務希望在 2 月舉辦宣傳活動來推動定期運動。

  2. 他們決定在 2 月內,針對健身目標運動至少 10 次的所有訂閱者提供額外的一個月服務。

  3. 開發人員會追蹤挑戰的結果,而在 3 月 1 日,對於 2 月遇到挑戰的使用者,他們每購買一個有效訂閱項目購買交易,就會呼叫 subscriptions.defer API。

  4. 這些使用者可以免費獲得為期一個月的例行運動影片,無須付費,而且使用者可以告訴所有朋友 FitnessGoal 如何幫助自己保持健康!

核發退款和撤銷

在許多情況下,您可能會想針對訂閱項目或一次性購買交易核發退款,或是撤銷這類訂閱項目的存取權。

依訂單 ID 為訂單全額退款

透過 orders.refund API,您可以在購買後的三年內,為任何訂單核發全額退款。 orders.refund 方法會收到撤銷參數,指出除了提供退款之外,是否也應撤銷存取權。

如果您是透過購買交易退款呼叫發出撤銷,系統會立即終止該訂閱項目,並觸發SUBSCRIPTION_REVOKED即時開發人員通知。如要瞭解如何處理這些事件,請參閱訂閱項目生命週期管理指南的撤銷一節

例子:

  1. 為慶祝全新世界盃開跑,這款電競應用程式「Football-Not-Soccer」決定為所有在前 24 小時內購買新球隊裝備的使用者開打免費的虛擬球衣。

  2. 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": {} 設為退款類型。

例子:

  1. Maria 訂閱了 30 天的串流 SuperMovies 月費方案。她開心使用這項服務了一段時間。 Maria 在帳單週期的第 15 天與客服人員聯絡,說明她即將出國,從隔天起將無法繼續使用這項服務。

  2. 客戶服務團隊在系統中找到 Maria 的訂閱購買詳細資料,並觸發對 purchases.subscriptionsv2.revoke 的呼叫,要求按比例退款。

  3. 客戶服務告知 Maria 可以退還約 50% 的訂閱費用,並立即終止服務存取權。