非續訂訂閱把到期、續購和每一筆退款都丟給你,來看看它真正的代價
App Store 上的非續訂訂閱,以及它在 Google Play 上的表親預付方案,只收一次費,永不續訂。這就把到期倒數、續購和退款全都壓到了你頭上。以下講清楚每個商店的退款如何運作、未使用預付的規則,以及固定期限模式的實際成本。

重點摘要
- 非續訂訂閱是一次性收費,授予一段固定時長的存取權限,然後就停止。Apple 不會續訂它,也不會追蹤它的到期時間,所以倒數、續購提示以及銷售之後的一切都由你的伺服器負責。
- Google Play 對同一思路的版本叫預付方案,它同樣不會自動續訂。要保持存取權限,客戶需要購買一次加值,這會再次按全價收費,並按加值的時長延長權益。
- Google Play 允許客戶對尚未使用的預付方案申請退款。已使用的預付方案通常無法退款,但未動用過的可以,所以一個加了值卻從不開啟應用程式的買家可以把錢拿回去。
- 對預付購買錯過 Google 的確認截止時間,Google 就會撤銷這次加值,取消剩餘的訂閱,並給客戶退款。時長一週或以上的方案必須在 3 天內確認,更短的方案要在其時長的一半時間內確認。
- 在 Google Play 上,普通退款和撤銷並不是一回事。退款可以讓客戶的存取權限一直保留到期限結束,而撤銷,包括拒付,會立即切斷存取權限。
- 固定期限模式消除了非自願流失,因為沒有續訂可以失敗,但它把留存的責任轉移到了你身上。每一次續用都是重新決定付費,所以流失的客戶是無聲流走的收入,而不是一筆你可以重試的失敗扣款。
- 在兩個商店上,你都在第一天就把整段期限的價值交付出去,所以一份幾乎沒用過的固定期限被退款,仍然會追回你已經開始花掉的錢。
你讀到的大多數訂閱建議,都假設商店負責續訂。非續訂訂閱有意打破了這個假設。非續訂訂閱只向客戶收一次費,授予一段設定時長的存取權限,然後就直接結束。Apple 不會再次扣費,不會發送續訂,甚至不會去記錄存取權限何時用完。最後這一點就是坑所在。當你選擇這個模式的那一刻,到期倒數、續購提醒,以及退款之後的收尾,全都從 Apple 的伺服器搬到了你的伺服器上。
Google Play 有著同樣的形態,只是換了個名字,叫預付方案,而且它帶著一個退款上的小怪癖,可以把錢退還給一個從沒用過所購之物的客戶。以下講講非續訂訂閱和預付方案在每個商店上實際是怎麼運作的,退款會對它做什麼,以及一旦你算上第一天就交付出去的價值,固定期限模式究竟會花你多少錢。
為什麼非續訂訂閱是一次性收費卻表現得像訂閱
在各種應用程式內購買類型中,非續訂訂閱處在一個奇怪的位置。它不是消耗型項目,因為它授予的是時間而不是某種數量的東西。它也不是自動續訂訂閱,因為沒有任何東西會續訂。Apple 自己的描述很直白:非續訂訂閱讓客戶在有限的一段時間內存取內容或服務,並且不會自動續訂。一張季票、一個月的檔案庫存取、一門解鎖 90 天的課程,這些都是天然契合的場景。
讓它名義上算作訂閱的,是誰在計時。對於自動續訂訂閱,Apple 會追蹤到期時間、向銀行卡扣費,並透過 App Store Server Notifications 告訴你續訂是成功還是失敗。對於非續訂訂閱,這些都不會發生。Apple 把這筆銷售交給你,然後就退到一邊。你的伺服器必須記錄存取期何時結束、在那一刻切斷存取權限,並決定是否以及如何邀請客戶再次購買。因為 Apple 不盯著倒數,Apple 那邊沒有任何機制阻止客戶把同一份非續訂訂閱買兩次,所以防止重疊也是你的活。
每個商店如何運行固定期限訂閱
Apple 把它叫作非續訂訂閱
在 App Store 上,你像設定任何其他應用程式內購買一樣,在 App Store Connect 裡設定一份非續訂訂閱,給它一個時長,然後出售。這筆收費是單次付款。期限結束時,客戶什麼也留不下,除非再買一次,而再買一次是一次全新的購買,不是 Apple 替你安排的續訂。沒有扣費重試,沒有寬限期,也沒有帳號保留,因為沒有可以重試的週期性扣費。那些安全網只對自動續訂訂閱存在。
Google Play 把它叫作預付方案
Google Play 的預付方案,就是內建於 Play Billing 中的同一種固定期限思路。預付方案不會自行續訂。要讓存取權限持續下去,客戶需要購買一次加值,而 Google 對此的運作方式說得很明確。加值會立即按全價收費,並按加值的時長延長權益。一次加值會拿到一個新的購買權杖,舊的權杖保存在 linkedPurchaseToken 欄位裡,好讓你把歷史記錄串接起來。使用者沒法像取消自動續訂那樣取消預付方案。它就是在付費時間用完時直接到期。
Google 還對確認一筆預付購買設了一條硬性截止時間,錯過的懲罰就是一筆退款。一週或更長的預付方案必須在 3 天內確認。短於一週的預付方案必須在其時長一半的時間內確認,所以一個三天的方案給你一天半。錯過這個視窗,Google 就會撤銷這次加值、撤銷並取消剩餘的訂閱,並給客戶退款。那不是客戶改了主意。那是一次整合上的疏忽,把整筆銷售整個拆掉。
| 方面 | Apple 非續訂訂閱 | Google Play 預付方案 |
|---|---|---|
| 是否自動續訂 | 否 | 否 |
| 客戶如何延長 | 作為新購買再買一次 | 按全價購買一次加值 |
| 誰追蹤到期時間 | 你的伺服器 | Google,透過 API 讀取 |
| 扣費重試或寬限期 | 無 | 無 |
| 確認截止時間 | 標準的完成交易步驟 | 3 天,或不足一週時為方案時長的一半 |
| 客戶能否中途取消 | 不適用,沒有週期性 | 否,它會自行到期 |
| 購買權杖有效期 | 由你管理 | 到期後 60 天內有效 |
退款會對固定期限訂閱做什麼
在 App Store 上,退款要走 Apple
想要拿回非續訂訂閱錢款的客戶不會先來找你。他們會在 reportaproblem.apple.com 提交申請、選一個理由,然後由 Apple 審核這個請求並做出決定。你不批准它,而且對於非續訂訂閱,不像消耗型退款那樣會有一個在決定之前向你索要使用憑證的商店通知。如果 Apple 批准了,你會在自己這邊和報告裡作為一筆退款得知此事。因為你自己的伺服器是唯一記錄存取期的地方,你還得決定一筆被退款的非續訂訂閱對存取權限意味著什麼,並自己去執行。
在 Google Play 上,退款和撤銷是不同的操作
Google Play 把大多數人所說的退款拆成了兩種不同的結果,而這個區別決定了客戶能否繼續使用你的應用程式。一次直接退款可以讓客戶的存取權限保留到付費期限結束。一次撤銷,你可以透過 API 觸發它,拒付所做的也是撤銷,會立即結束存取權限,而且 Google 讓你在它落地的那一刻就切斷權益。所以一個被退款的預付客戶可能仍在使用你給他的內容,也可能當場被鎖在外面,取決於走的是哪條路徑。
你預料不到的未使用預付退款
Google 加了一條很容易漏掉的例外。客戶可以對尚未使用的預付方案申請退款,儘管已使用的預付方案通常無法退款,而且過去的訂閱扣費通常成立。除此之外,Google Play 上的自助退款路徑又短又窄:客戶可以在 48 小時內退回一筆購買,而且每個應用程式只能一次。過了這個點,請求就轉給你。但未使用預付的規則不在那個視窗之內,所以一個加了值卻從不開啟應用程式的買家,有一條乾淨俐落的路把整筆付款拿回去。
固定期限模式究竟會花你多少錢
固定期限訂閱的帳算法和自動續訂的不一樣,而且是以一種很容易定價過低的方式不一樣。
你在第一天就交付整段期限
當有人購買一個月的存取權限、一張季票或一個 90 天的解鎖時,你從第一次點擊起就欠了他整段期限。算力、API 呼叫、儲存,以及你的應用程式背負的任何按使用者計的成本,都消耗在一個你只在開頭被付過一次費的時間視窗裡。對那筆購買的退款不會把你已經服務過的天數還給你。如果一個客戶用掉了一張三十天通行證中的兩天,然後 Apple 退了款,或者 Google 撤銷了它,你既損失了價錢,也損失了那兩天的成本,而且沒有任何按比例分攤會給你切回一塊來。固定期限收入在整段期限內都保持完全可逆,而它背後的價值已經在離開你的預算了。
你自己造成的退款
預付確認規則把一段程式碼路徑變成了一筆退款。如果你的伺服器沒有及時確認一筆預付購買或加值,Google 不只是警告你。它會撤銷這次加值、取消訂閱的剩餘部分,並給客戶退款,全都一起發生。那是一筆你已經成交、隨後又因為一次錯過的回呼而丟掉的銷售,而修復完全在你這邊。要在伺服器端確認,要快,絕不要依賴使用者重新開啟應用程式來觸發它。在一個短的預付方案上,視窗可能只有一天半,一條慢吞吞的確認流水線就是一個長期存在的退款風險。

沒有非自願流失,但留存現在要靠手動
有一個實實在在的好處值得抓住。固定期限訂閱不會非自願流失,因為沒有可以失敗的續訂扣費。那些被拒的銀行卡、扣費重試和帳號保留,它們悄悄結束了一部分自動續訂訂閱,在這裡根本不適用。沒有人會因為卡過期而被鎖在外面。代價是留存不再自動。每一次續用都是重新決定付費,所以一個流失的客戶不會作為一筆你能挽回的失敗扣款出現。他們什麼都不作為地出現,一段本該有續訂的地方留下的無聲空缺。把他們贏回來是一個你得自己搭建、自己把握時機的提示,而你不去追的收入,就是根本不會到來的收入。
| 事件 | 存取權限會發生什麼 | 你的錢會發生什麼 |
|---|---|---|
| Apple 退款一份非續訂訂閱 | 由你在自己的伺服器上決定並執行 | 全價撤銷,已服務過的天數不退回 |
| Google 退款但不撤銷 | 存取權限可保留到期限結束 | 價錢已退,權益可能仍在使用 |
| Google 撤銷或拒付 | 立即切斷存取權限 | 價錢撤銷,且拒付還加一筆銀行費用 |
| 預付加值未及時確認 | 剩餘訂閱被撤銷並取消 | 加值和剩餘餘額都退款 |
| 未使用的預付方案,客戶申請退款 | 什麼都沒用過 | 全額付款退還 |
| 固定期限直接到期 | 存取權限按計劃結束 | 收入終於歸你留下 |
所有這些事件,退款、撤銷、拒付、到期,都會到達 RefundHalt 已經在監聽的同一批 App Store Server Notifications 和 Real-time Developer Notifications 上。非續訂訂閱和預付方案不會藏起它們的退款,它們像任何其他購買一樣報告這些退款。讀取這些資料流,就是你如何把一個商店不再追蹤倒數的模式,變成一個你始終知道哪些固定期限銷售變成了收入、哪些又退了回來的模式。
簡短版
App Store 上的非續訂訂閱,以及 Google Play 上的預付方案,是為一段固定存取時長收取的單次費用,永不續訂。Apple 不追蹤到期時間,所以你的伺服器來追蹤。Google 允許客戶為一份未使用的預付方案退款,而且如果你錯過確認截止時間,它會把整筆都退掉。Google 的退款可以讓存取權限繼續運行,也可以作為一次撤銷或拒付立即切斷它。沒有非自願流失要去對抗,但也沒有自動續訂,所以留存是一個由你負責的提示。你在開頭就交付整段期限,而一筆退款會追回你已經開始花掉的錢,所以要按第一天的成本給這個模式定價,而不是按標價上的那筆銷售。
常見問題解答
- 什麼是 App Store 上的非續訂訂閱?
- 非續訂訂閱是一種應用程式內購買,它授予對內容或服務在一段固定期限內的存取權限,然後結束,不會續訂。Apple 只向客戶收一次費,並且不追蹤到期時間,所以你的應用程式必須記錄存取期何時結束、切斷存取權限,並在你想把他們贏回來時提示客戶再次購買。
- 非續訂訂閱和自動續訂訂閱有什麼區別?
- 自動續訂訂閱會自行續訂,Apple 負責扣費、重試和到期追蹤。非續訂訂閱只收一次費然後停止,銷售之後生命週期的每一部分,到期、續購提示,以及退款後強制執行存取權限,都是開發者的活。Google Play 的預付方案是與非續訂訂閱最接近的對應物。
- 能給 Google Play 預付方案退款嗎?
- 在特定情況下可以。客戶可以對尚未使用的預付方案申請退款,儘管已使用的預付方案通常無法退款,而且過去的訂閱扣費通常成立。Google 的自助退款也覆蓋大多數購買,在 48 小時內且每個應用程式只能一次。此外,如果你錯過預付購買的確認截止時間,Google 會自動退款。
- 退款會終止客戶對固定期限訂閱的存取權限嗎?
- 並非總是。在 Google Play 上,一次普通退款可以讓存取權限保留到付費期限結束,而一次撤銷或拒付會立即結束存取權限,並且 Google 讓你馬上移除權益。在 App Store 上,你的伺服器是唯一存放存取期的地方,所以由你來決定並執行一份被退款的非續訂訂閱對存取權限意味著什麼。
- 非續訂訂閱有非自願流失嗎?
- 沒有。非自願流失來自一筆失敗的續訂扣費,而非續訂訂閱和預付方案永遠不會自動續訂,所以沒有可以失敗的扣費,也沒有扣費重試或帳號保留。代價是留存要靠手動:每一次續用都是一次新的購買,所以一個不再回來的客戶是無聲流走的收入,而不是一筆你能挽回的失敗付款。
資料來源與延伸閱讀
- Apple Developer Documentation: StoreKit Product.ProductType.nonRenewable (the non-renewing subscription product type, time-limited access that does not renew automatically)
- Apple App Store Connect Help: Create non-renewing subscriptions (non-renewing subscriptions give access to content or a service for a limited period and the developer manages renewal and expiry)
- Apple Support: Request a refund for apps or content that you bought from Apple (the reportaproblem.apple.com path Apple reviews and decides)
- Google Play Billing: About subscriptions (prepaid plans do not auto-renew, top-ups charge full price and extend entitlement, and the 3-day and half-duration acknowledgment deadlines that trigger a revoke and refund when missed)
- Google Play Billing: Subscription lifecycle (the purchase token is valid until 60 days after expiration, and a revoke or chargeback means removing the entitlement immediately)
- Google Play Help: Cancel, pause, or change a subscription on Google Play (a customer can request a refund on an unused prepaid plan, and access continues for the time already paid for)
- Google Play Help: Apps, games, and in-app purchases refund policies (the 48-hour self-service refund window and the once-per-app limit)
RefundHalt
App Store 與 Google Play 的退款自動駕駛
繼續閱讀
過多的退款申請,代價可能遠超退款本身,因為兩大 App 商店都把它視為品質訊號
Apple 審查準則 5.6.4 把過多的退款申請列為 App 未達品質標準的跡象,Google 的開發人員發布協議也允許它依退款率下架新開發人員的 App。本文整理兩家商店的原文、下架的實際成本,以及如何避開風險。
在處理退款之前先驗證 App Store 伺服器通知,因為任何人都能向你的 webhook URL 發送請求
在檢查簽章之前,一則退款通知只不過是一個 HTTPS 請求。本文說明如何驗證 App Store 伺服器通知和 Google Play RTDN 訊息、各商店簽署的內容,以及偽造的退款或遭錯誤拒絕的退款會讓你付出什麼代價。