您可能需要針對訂閱項目或一次性購買交易採取管理動作,以便進行日常業務。舉例來說,您的客戶服務團隊可能需要針對使用者核發全額或部分退款,或是在特定情況下撤銷授權。您可以透過 Play 管理中心管理訂單,如果想透過自己的系統管理訂單,可以使用 Google Play Developer API。
取消訂閱
使用者或開發人員可以取消訂閱。
使用者發起的取消
使用者隨時可以透過 Play 商店取消 Google Play 訂閱項目。如適用,您也必須讓使用者能夠在應用程式和網站上取消訂閱。
如要讓使用者自願取消訂閱,最簡單的方法就是在應用程式中提供前往 Play 商店的深層連結,讓使用者查看及管理訂閱項目。
開發人員主動取消訂單
開發人員也可能需要從後端觸發取消作業。purchases.subscriptions.cancel
API 可讓您取消訂閱購買交易。舉例來說,您可以使用這種方法關閉舊版服務。取消訂閱不會退款,使用者在目前的帳單週期結束前仍可取得訂閱內容。
這個方法可讓您在 cancellationType
要求主體參數中指定下列類型的取消作業:
USER_REQUESTED_STOP_RENEWALS:取消訂閱,就像使用者已在 Play 商店取消訂閱一樣。任何分期付款將在目前承諾期剩餘的期間繼續支付。使用者可以在 Play 商店中,在訂閱項目到期前還原訂閱項目,或是在訂閱項目到期後重新訂閱 (如果已為基本方案啟用此功能)。
DEVELOPER_REQUESTED_STOP_PAYMENTS:取消訂閱並防止任何後續付款。使用者無法透過 Play 商店還原或重新訂閱訂閱項目,但您可以讓他們在應用程式中重新訂閱。
允許使用者還原未到期的訂閱項目
在某些情況下,您可能會發現,在您以開發人員身分觸發取消程序後,允許使用者從 Play 訂閱中心還原未到期的訂閱項目相當實用。舉例來說,您可能要提供自訂的應用程式內取消流程。您可以根據業務邏輯,決定使用者可以復原哪些由後端觸發的取消交易。
如要指出使用者可以恢復取消作業,請向 purchases.subscriptions.cancel
API 發出 POST 要求,並將 cancellationType
要求參數設為 USER_REQUESTED_STOP_RENEWAL
值。
例子:
- 訂閱項目
1a2b3c4d5e6f7g8h9i0j
的購買憑證 - 應用程式套件名稱
com.your.app
- 訂閱 ID
your-subscription-product
HTTP POST 要求:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
要求主體:
{
"cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}
允許使用者重新訂閱已到期的訂閱項目
如要允許已到期的訂閱項目重新訂閱,您必須在訂閱項目的基本方案中啟用「重新訂閱」選項,然後將 cancellationType
參數設為 USER_REQUESTED_STOP_RENEWAL
值,即可取消訂閱。
允許使用者僅在應用程式中重新訂閱
如果您將 cancellationType
參數設為 DEVELOPER_REQUESTED_STOP
_PAYMENTS
,或未設定 cancellationType
參數,使用者就無法透過 Play 訂閱中心還原訂閱項目。不過,使用者可視需要透過應用程式重新訂閱。
執行這項操作會觸發 SUBSCRIPTION_CANCELED
即時開發人員通知。請按照「取消」一節的說明處理這些取消操作。
延後結帳
使用 subscriptions.defer
延長訂閱項目的授權期限。在延後期間,使用者仍可訂閱您的內容,但不會被收取額外費用。延後訂閱項目的帳單時,系統會相應更新狀態資訊,並在購買狀態資訊的 expiryTime
欄位中顯示:
- 對於有效的定期訂閱項目,延後結帳會延後下次續約日期。
- 對於預付方案,延後收費會延長到期時間。
以下列舉幾個使用延遲結算的範例:
- 以特價優惠的形式向使用者提供免費存取權,例如填寫意見回饋問卷,即可讓現有訂閱者免費享有一週的觀影體驗。
- 提供免費存取權做為客戶服務行動,例如在長時間停機後,可能會影響客戶使用服務的情況。
每個 API 呼叫可以將帳單最短延後一天,最長延後一年。如要將授權結束時間延後,請在新的到期日到來前再次呼叫 API。
執行這項操作會觸發 SUBSCRIPTION_DEFERRED
即時開發人員通知。如要瞭解如何處理這些事件,請參閱「關於訂閱」中的「延後訂閱者的帳單」。
例子:
FitnessGoals 串流服務想在 2 月推出促銷活動,鼓勵使用者定期運動。
他們決定向在 2 月期間至少運動 10 次的訂閱者,提供額外一個月的服務。
他們追蹤挑戰的結果,並在 3 月 1 日針對 2 月符合挑戰條件的使用者,針對每筆有效訂閱購買交易呼叫
subscriptions.defer
API。這些使用者可免費獲得額外一個月的常規運動影片,並向所有好友分享 FitnessGoals 如何協助他們保持健康!
核發退款和撤銷
在許多情況下,您可能會想針對訂閱項目或一次性消費核發退款,或撤銷存取權。
依據訂單 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
函式,並將 "fullRefund": {}
設為退款類型。
例子:
Maria 訂閱了 SuperMovies 串流服務的 30 天自動續約型月費方案。Maria 遇到一些技術問題,導致她無法存取內容。她在帳單週期第 3 天與客戶服務團隊聯絡,表示自己從未取得訂閱項目的存取權。
客服團隊在系統中找到 Maria 的訂閱購買詳細資料,並觸發呼叫
purchases.subscriptionsv2.revoke
,要求全額退款。客服人員告知 Maria,她應獲得 100% 的訂閱價格退款,且她已不再訂閱該方案。
按比例退款
如果您需要終止訂閱,並針對剩餘的授權時間部分退款,請發出按比例退款。使用 purchases.subscriptionsv2.revoke
函式,並將 "proratedRefund": {}
設為退款類型。
例子:
Maria 訂閱了 SuperMovies 串流服務的 30 天自動續約型月費方案。她很滿意地使用這項服務一段時間。Maria 在帳單週期第 15 天時聯絡客戶服務團隊,表示她即將搬到國外,從隔天起將無法再使用服務。
客戶服務團隊在系統中找到 Maria 的訂閱購買詳細資料,並觸發呼叫
purchases.subscriptionsv2.revoke
,要求按比例退款。客服人員告訴 Maria,她應該能獲得約 50% 的訂閱價格退款,且服務會立即終止。