服務中斷後,Apple 和 Google 都允許你延長訂閱續訂日期,但兩者的限制截然不同
應用程式當機時,與其坐等退款申請,不如主動延長訂閱續訂日期。本文說明 Apple 的 90 天延長與 Google Play 的帳單延後如何運作、各商店的界線在哪裡,以及每種做法實際要付出的成本。

重點摘要
- Apple 的 App Store Server API 允許開發者將已付費且有效的自動續訂型訂閱的續訂日期延長 1 到 90 天,用來彌補服務中斷、活動取消或直播中斷。
- Apple 允許每位客戶在 365 天內獲得兩次續訂日期延長。延長一旦生效就無法撤銷,Apple 會以電子郵件將新的續訂日期通知客戶。
- 處於免費優惠期、帳單重試期、寬限期到期日已過或已經過期的訂閱,Apple 不會延長。訂閱之前必須至少有一個已付費週期。
- 透過 Apple 續訂日期延長增加的天數,不計入讓開發者訂閱收益分成從 70% 提高到 85% 所需的一年付費服務期。
- Google Play 的 purchases.subscriptionsv2.defer 每次呼叫可將訂閱的下一個帳單日期延後最少一天、最多一年。使用者在此期間保有完整存取權且不會被收費,Google 會傳送 SUBSCRIPTION_DEFERRED 通知。
- 續訂日期延長不會退還任何現金,因此開發者保留了這筆款項,但必須負擔增加天數內的運算、儲存空間與 API 呼叫費用,卻沒有續訂收入可以支應。退款則會退還購買金額,而你為服務該客戶已經花掉的錢一毛也拿不回來。
- 如果服務中斷導致應用程式內購買未能交付,而 Apple 傳來 CONSUMPTION_REQUEST,誠實的 deliveryStatus 應為 UNDELIVERED_SERVER_OUTAGE,而且 Apple 要求在 DELIVERED 以外的任何狀態下,consumptionPercentage 都必須為 0。
服務中斷給了每位訂閱者最站得住腳的退款理由,而你無法阻止他們開口。你能做的,是在任何人提出之前,把失去的天數還給他們。兩大應用程式商店都允許你延長訂閱續訂日期,讓客戶得到免費時間而非現金。Apple 每次延長最多 90 天,每年允許兩次。Google 每次呼叫最多可將帳單延後一年。兩者在手續、通知與背後的成本上差異很大,一套中斷應變計畫無法同時涵蓋。
服務中斷會如何影響你的退款風險
退款由商店決定,不是由你決定。在 App Store 上,客戶向 Apple 申請,由 Apple 裁定。你可能會收到 CONSUMPTION_REQUEST 通知,並有 12 小時可以透過 Send Consumption Information 傳送消耗資料。這就是你全部的發言權。
在 Google Play 上,買家可以在購買後 48 小時內直接取得退款,不需要徵詢你的意見。之後的申請才會轉到你手上。Google 唯一會要求你提供證據的流程,是被標記為需要開發者審查的退單,你必須在 24 小時內透過 orders.reviewrefund 回覆。銀行對退單的裁決就是最終結果。
所以,兩家商店都沒有給你阻擋退款的方法。你能掌握的,是服務恢復後訂閱者是否仍覺得吃虧。迅速給予、清楚告知的額外訂閱時間,正是兩家商店專為此打造的工具。
如何在 App Store 上延長訂閱續訂日期
App Store Server API 為此提供了兩個端點。Extend a Subscription Renewal Date 作用於單一訂閱,以其 originalTransactionId 指定。Extend Subscription Renewal Dates for All Active Subscribers 作用於某個 productId 下所有符合資格的訂閱者,如果中斷只影響部分地區,你可以用 storefrontCountryCodes 加以限定。
每個請求包含三項內容:extendByDays,數值為 1 到 90;extendReasonCode;以及你自行產生的 requestIdentifier。原因代碼 3 代表服務問題或中斷。代碼 1 代表客戶滿意度,代碼 2 代表其他原因,代碼 0 代表未聲明。
Apple 會延長哪些訂閱
只有至少有一個已付費週期、處於有效狀態的自動續訂型訂閱才符合資格。Apple 會略過以下訂閱:
- 處於免費優惠期的訂閱,例如免費試用。
- 處於帳單重試狀態的非有效訂閱。
- 處於帳單寬限期且到期日已過的訂閱。
- 過去 365 天內已獲得兩次續訂日期延長的訂閱。
- 已過期的訂閱。
家人共享會自動一併延長。當 Apple 延長一個支援家人共享的已購訂閱時,家庭成員的訂閱也會跟著延長。你無法直接指定家庭成員的訂閱進行延長。
大量請求很慢,請留意通知
Apple 表示,延長所有有效訂閱者的請求可能需要數小時甚至數天,視你的訂閱者人數而定。200 回應只代表 Apple 正在處理。App Store Server Notifications V2 會告訴你處理結果:
| 通知 | 子類型 | 代表意義 |
|---|---|---|
| RENEWAL_EXTENDED | 無 | 某個訂閱的續訂日期已延長 |
| RENEWAL_EXTENSION | FAILURE | 某個訂閱的延長失敗 |
| RENEWAL_EXTENSION | SUMMARY | 整個大量請求已完成 |
對於每一則 FAILURE,從酬載中已簽署的交易取出 originalTransactionId,再用單一訂閱端點重試。如果你偏好輪詢,Get Status of Subscription Renewal Date Extensions 會回報請求是否完成,以及延長成功與失敗的數量。
Google Play 的帳單延後如何運作
Google 的對應方法是 purchases.subscriptionsv2.defer,每個購買憑證呼叫一次。請求主體包含一個 deferralContext,內含三個欄位。etag 來自 purchases.subscriptionsv2.get,若與訂閱最新的 etag 不符,呼叫就會失敗。deferDuration 指定要把日期延後多久。validateOnly 設為 true 時,請求會以試跑方式執行,不會變動訂閱。
Google 的帳單指南規定,每次 API 呼叫的範圍是一天到一年。若要延後更久,請在新的到期日到來之前再次呼叫。對於自動續訂的訂閱,延後會移動下一個續訂日期。對於預付方案,則會移動到期時間。對於含有附加項目的訂閱,所有項目都會延後相同的時間。回應中會列出每個項目新的 expiryTime。
延後期間,使用者維持訂閱狀態並保有完整存取權,額外的時間不會收費。Google 會傳送 SUBSCRIPTION_DEFERRED 即時開發者通知。舊版的 purchases.subscriptions.defer 已淘汰,新程式碼應使用 v2 方法。
Google 不會通知你的客戶,所以你得自己來
每次延長成功後,Apple 都會寄電子郵件給客戶。Google 的帳單指南則完全沒有提到要通知使用者。如果目的就是預防退款申請,訂閱者就必須知道有這段額外時間。請自己在應用程式內並透過電子郵件告知他們,說明延長了幾天以及原因。
Apple 與 Google 並列比較
| Apple App Store | Google Play | |
|---|---|---|
| API | Extend a Subscription Renewal Date,另有一個大量端點 | purchases.subscriptionsv2.defer |
| 每次請求的長度 | 1 到 90 天 | 1 天到 1 年 |
| 次數 | 每位客戶 365 天內兩次 | 未說明上限;在新的到期日之前再次呼叫 |
| 大量選項 | 每個 productId 呼叫一次,可依店面限定 | 每個購買憑證呼叫一次 |
| 免費試用 | 不符合資格 | Google 指南未提及 |
| 通知 | RENEWAL_EXTENDED、RENEWAL_EXTENSION | SUBSCRIPTION_DEFERRED |
| 是否通知客戶 | Apple 寄送電子郵件 | 由你決定 |
| 能否撤銷 | 否 | Google 指南未提及 |
延長與退款的成本比較
退款和延長從不同的地方拿走你的錢。退款會退還客戶為該週期支付的金額。而你為服務該客戶已經花掉的一切都收不回來:每次工作階段的運算、模型 API 呼叫、儲存空間,以及支付給內容被其使用的創作者的款項。
延長則保留了這筆款項。它的成本是你在沒有續訂收入支應的情況下繼續提供的服務。每多一天,有效訂閱者都會持續產生同樣的帳單。對輕度使用者來說幾乎可以忽略。對重度使用 AI 功能的使用者來說,額外 30 天可能代表 30 天的模型呼叫,卻沒有任何收入。請依中斷時間決定延長天數,而不是依你想表達的歉意。
| 你放棄的 | 退款 | 續訂日期延長 |
|---|---|---|
| 訂閱款項 | 退還給客戶 | 保留 |
| 已為服務該客戶花費的成本 | 損失 | 損失 |
| 增加天數內的運算、儲存空間與 API 呼叫 | 無,存取權結束 | 由你負擔,尚無續訂收入 |
| 之後的訂閱 | 若退款撤銷存取權則終止 | 維持有效,於新日期續訂 |
Apple 的抽成成本
在訂閱者付費服務的第一年,Apple 會支付你每次續訂金額的 70%,之後為 85%。Apple 的訂閱頁面說明,續訂延長的天數不計入付費服務天數。因此,30 天的延長會讓該訂閱者升到 85% 的時間延後 30 天。如果你參加了 App Store Small Business Program,你原本就能拿到 85%,這項成本不適用。
Google Play 的退單成本
對於 2026 年 8 月 3 日之後成立的訂單,若持卡人贏得退單,Google Play 開發者需負擔購買金額扣除 Play 服務費後的部分,再加上銀行手續費。服務中斷正是會把不滿的客戶推向銀行的那種事件。搶先一步送到他們手上的延後,比一場你無法翻盤的爭議便宜得多。

什麼情況下延長不是正確的工具
購買的不是訂閱
續訂日期延長只適用於訂閱。如果中斷影響的是消耗型項目或一次性解鎖,請重新交付該項目。如果 Apple 為此傳來 CONSUMPTION_REQUEST,請如實回報發生的情況。Apple 的 deliveryStatus 欄位有對應的值 UNDELIVERED_SERVER_OUTAGE,而且 Apple 表示,DELIVERED 以外的任何狀態都必須將 consumptionPercentage 設為 0。
客戶已經用完兩次 Apple 延長
Apple 的上限是每位客戶 365 天內兩次延長。一年內發生兩次中斷就會全部用完,第三次時你將無法透過商店提供任何補償。請追蹤每個 originalTransactionId 已使用的延長次數,這樣大量請求傳回的 FAILURE 通知就不會讓你措手不及。
客戶正在免費試用
Apple 不會延長處於免費優惠期的訂閱。試用使用者損失的是免費天數,而不是付費天數,所以退款風險很低。如果你想補償他們,一則應用程式內訊息的成本比任何 API 呼叫都低。
下一次服務中斷的檢查清單
- 記錄中斷的開始與結束時間,以及受影響的產品和地區。
- 選擇一個能涵蓋損失時間的天數。在 Apple 上,使用原因代碼 3,並維持在 1 到 90 天之內。
- 在 Apple 上,每個 productId 送出一次大量請求,若只有部分地區受影響,則用 storefrontCountryCodes 加以限定。
- 監聽 RENEWAL_EXTENSION FAILURE,並用單一訂閱端點逐一重試。
- 在 Google Play 上,逐一處理有效的購買憑證,讀取每個 etag,先以 validateOnly 試跑,再正式延後。
- 自己告知 Google Play 訂閱者有額外時間,因為 Google 不會通知。
- 依據 RENEWAL_EXTENDED 與 SUBSCRIPTION_DEFERRED 更新權益到期時間,而不是依靠你自己的日期計算。
- 按帳戶保存使用紀錄,這樣即使仍收到退款申請或退單,你也能在 12 小時內(Apple)和 24 小時內(Google)備妥證據。
常見問題解答
- App Store 訂閱的續訂日期可以延長幾次?
- 每位客戶在 365 天內可延長兩次。每次延長 1 到 90 天,過去 365 天內已獲得兩次延長的訂閱無法再次延長。
- 我延長訂閱時,Apple 會通知客戶嗎?
- 會。續訂日期延長成功後,Apple 會寄一封電子郵件給客戶,告知更新後的續訂日期。Google Play 的帳單指南沒有提到這類訊息,所以在 Android 上,你應該自己通知訂閱者。
- Google Play 訂閱最多可以延後多久?
- Google 的帳單指南規定,每次呼叫 purchases.subscriptionsv2.defer 可延後一天到一年。若要再延後,請在新的到期日到來之前再次呼叫該 API。使用者保有完整存取權,延後的時間不會收費。
- Apple 的續訂日期延長可以撤銷嗎?
- 不行。Apple 表示,訂閱續訂延長一旦生效就無法撤銷。送出請求之前,請確認產品、天數與店面。
- 續訂日期延長會影響我在 Apple 的 85% 收益分成嗎?
- 會。Apple 不把續訂延長的天數計入付費服務天數,因此延長會讓訂閱者從 70% 升到 85% 的時間點延後你所增加的天數。參加 App Store Small Business Program 的開發者原本就能拿到 85%。
- 可以延長處於免費試用期的訂閱嗎?
- 在 App Store 上不行。Apple 會排除處於免費優惠期的訂閱,以及帳單重試中、寬限期已過與已過期的訂閱。只有至少有一個已付費週期的有效訂閱才符合資格。
資料來源與延伸閱讀
- Apple Developer: Extending the renewal date for auto-renewable subscriptions
- Apple Developer: Extend a Subscription Renewal Date
- Apple Developer: Extend Subscription Renewal Dates for All Active Subscribers
- Apple Developer: extendReasonCode
- Apple Developer: Auto-renewable subscriptions
- Apple Developer: deliveryStatus
- Google Play Developer API: purchases.subscriptionsv2.defer
- Google Play Billing: Manage subscriptions and one-time purchases
- Google Play Billing: Subscription lifecycle
- Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
App Store 與 Google Play 的退款自動駕駛
繼續閱讀
過多的退款申請,代價可能遠超退款本身,因為兩大 App 商店都把它視為品質訊號
Apple 審查準則 5.6.4 把過多的退款申請列為 App 未達品質標準的跡象,Google 的開發人員發布協議也允許它依退款率下架新開發人員的 App。本文整理兩家商店的原文、下架的實際成本,以及如何避開風險。
在處理退款之前先驗證 App Store 伺服器通知,因為任何人都能向你的 webhook URL 發送請求
在檢查簽章之前,一則退款通知只不過是一個 HTTPS 請求。本文說明如何驗證 App Store 伺服器通知和 Google Play RTDN 訊息、各商店簽署的內容,以及偽造的退款或遭錯誤拒絕的退款會讓你付出什麼代價。