商店踩坑 #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;不变→第三方支付
- 命名和描述要匹配实际行为:如果付费后有变化,就用明确的回报来描述,避免捐赠、赞助、打赏等措辞
本文属于商店踩坑系列。