You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于C++/WinRT的Microsoft Store应用内购家长授权流程及测试咨询

适用于Microsoft Store应用的C++/WinRT API:需家长授权的应用内购买流程与测试方法

一、购买流程

1. 用户触发购买,触发家长授权

当用户尝试购买需要家长授权的商品时,应用会收到StorePurchaseStatus::NotPurchased状态,该状态与用户主动取消购买的返回结果一致。示例代码:

auto storeContext = StoreContext::GetDefault();
auto result = storeContext.RequestPurchaseAsync(winrt::hstring(productId)).get();
// productId为对应内购商品的Microsoft Store ID,例如"7ED7KF33YEJ7"
auto status = result.Status();
// 若需要家长授权,status会返回StorePurchaseStatus::NotPurchased,和用户取消购买的状态相同

2. 家长授权购买后,应用的获知方式

家长完成授权后,应用不会收到实时回调通知,需要执行与恢复购买相同的逻辑,主动查询用户的已购商品列表来确认购买是否成功。示例代码:

auto storeContext = StoreContext::GetDefault();
std::vector<winrt::hstring> productKinds = { L"Durable", L"UnmanagedConsumable" };
auto result = storeContext.GetUserCollectionAsync(std::move(productKinds)).get();
if (!result.ExtendedError()) {
    // 遍历并处理已购商品列表,检查目标商品是否存在
}

3. 家长拒绝购买时的获知方式

家长拒绝购买后,应用同样会收到StorePurchaseStatus::NotPurchased状态,无法直接区分该状态是来自家长拒绝还是用户主动取消,没有额外的专属状态码或错误信息来标识这一情况。

4. 家长忽略授权请求的处理

授权请求会超时,超时后应用依然收到StorePurchaseStatus::NotPurchased状态,同样无法直接获知是请求超时导致的结果。可通过result.ExtendedError()查看是否存在超时相关的错误信息,但官方未提供明确的区分码,通常只能统一按未完成购买处理。

二、测试方法

你已通过Microsoft Store「私有受众」完成常规购买和恢复购买的测试,针对家长授权流程,可按以下步骤测试:

  • 设置测试环境:创建一个带有年龄分级限制的测试附加组件(例如设置为12+),确保测试用的儿童账户已开启家长控制,且配置了「购买需要家长授权」的规则。
  • 触发授权请求:用儿童账户登录测试设备并打开应用,尝试购买该受限附加组件,此时系统会弹出家长授权请求。
  • 模拟家长操作:使用关联的家长账户在同一设备的家长模式下,或另一登录了家长账户的设备上,分别执行「同意授权」「拒绝授权」「忽略请求直至超时」三种操作。
  • 验证应用逻辑:每次家长操作完成后,回到儿童账户的应用中,执行查询已购商品的逻辑,验证应用是否能正确识别购买状态变化;同时检查购买请求返回的StorePurchaseStatus是否符合预期。

内容的提问来源于stack exchange,提问作者Paul Masri-Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:27:12