Skip to content

商店踩坑 #3:你不能叫它「捐贈」

2026-05-30

Tags: Windows · Microsoft Store · 商店踩坑


又一個商店踩坑。這個讓我措手不及。

發生了什麼

我有一款免費的 Windows 工具應用程式,想為使用者提供一種支援開發的方式,於是建立了一個應用程式內附加項——一個簡單的 "Support the Author" 購買項。商店清單把它叫做贊助選項,應用程式內介面寫著「請考慮給開發者買杯咖啡」,購買流程走的是 Microsoft Store 自己的 IAP 系統。

認證結果回來了:

Status: Attention needed

10.8.2 Third-Party In-Product Purchases

Any developer donations must only be made through a secure third-party purchase processing API. Please use one of those methods or remove any donation options that use the Microsoft API.

等等——因為透過內購 API 收取捐贈而被拒絕?

政策原文

Microsoft Store 政策 10.8.2 是這樣規定的:

You must use the Microsoft payment request API or a secure third-party purchase API to receive voluntary donations from users. However, if the user receives digital goods or services in return, including but not limited to additional features or removal of advertising, you must use the Microsoft Store in-product purchase API instead.

翻譯:你必須使用 Microsoft 付款請求 API 或安全的第三方購買 API 來接收使用者的自願捐贈。但是,如果使用者因此獲得了數位商品或服務作為回報,包括但不限於額外功能或移除廣告,則你必須改用 Microsoft Store 內購 API。

這裡需要區分兩個不同的微軟 API:

  • Microsoft Payment Request API:用於一般付款請求,可以接收捐贈
  • Microsoft Store In-Product Purchase API:用於數位商品和服務的內購,不能用來接收捐贈

什麼時候用什麼 API

【必須】使用微軟內購 API 的情況

如果使用者付了錢,在應用程式裡獲得了任何數位化好處(包括但不限於以下情況),必須走內購 API:

  • 功能解鎖:從免費版升級到 Pro、解鎖進階工具、開啟 VIP 特權
  • 去除廣告:付費永久或定期免除應用程式內的廣告
  • 數位貨幣/道具:遊戲裡的金幣、鑽石、面板,或者應用程式裡的代幣/點數
  • 訂閱服務:按月或按年付費的會員服務

注意:即使你把這些行為包裝成「贊助」、「打賞」或「捐贈」,只要使用者付錢後觸發了上述任何一個數位化變動(例如給了個 VIP 專屬徽章、去掉了彈窗),微軟就會認定這是「購買數位產品」,必須走內購 API。

【絕對不能】使用微軟內購 API 的情況

以下場景使用內購 API 反而會被拒絕:

  • 實體商品:賣衣服、賣書、賣硬體裝置
  • 現實世界服務:預訂電影票、叫外送、叫車、訂旅館
  • 純慈善捐贈/現實博弈:為合規的慈善機構募款,或者法律允許的真實貨幣博弈
  • 純個人打賞(無回報):使用者純粹覺得你寫程式不容易,給你塞幾塊錢,但應用程式裡沒有任何功能、介面變化。這種必須走第三方支付或 Payment Request API

一個簡單的判斷標準

使用者付完錢後,應用程式裡的程式碼邏輯(或者資料庫欄位)需要發生改變嗎?

  • 需要(例如 isPro 變成 true,或者 adCount 變成 0)→ 必須用微軟內購 API
  • 不需要(程式碼毫無變化,使用者只是用愛發電,或者等快遞送貨上門)→ 必須用第三方支付或 Microsoft Payment Request API

回到我的情況

我的附加項叫 "Support the Author",宣傳語是「請考慮給開發者買杯咖啡」——從措辭上看,這純粹是打賞行為。但它走的是 Store 內購 API,而政策明確規定:純打賞不能使用內購 API。

但實際上,這個附加項本身是會給使用者一個支持者徽標之類變化的——換句話說,它已經是一種數位商品。根據上面的判斷標準,有變化就是數位商品,數位商品就應該走內購 API。也就是說,這個付款理論上只能走內購 API,不能走 Payment Request API 或第三方支付。

所以問題根本不在付款方式上,而是描述有問題。把 "Support the Author" 改成 "Upgrade to Pro",把「請考慮給開發者買杯咖啡」改成描述具體回報的文字,就通過了。

小結

  • 微軟內購 API 只能用於數位商品和服務交易——使用者付錢後應用程式內必須有實質變化
  • 純打賞(應用程式內無任何變化)不能走內購 API,必須用 Payment Request API 或第三方支付
  • 判斷標準:使用者付錢後,程式碼/資料庫是否需要改變?改變→內購 API;不變→第三方支付
  • 命名和描述要匹配實際行為:如果付費後有變化,就用明確的回報來描述,避免捐贈、贊助、打賞等措辭

本文屬於商店踩坑系列。