【问题标题】:Requests to Microsoft Store APIs always return empty lists of products / subscriptions对 Microsoft Store API 的请求始终返回空的产品/订阅列表
【发布时间】:2019-01-28 19:39:09
【问题描述】:

我们将免费的 UWP 应用发布到 Microsoft Store,其中包含非消耗性升级插件。由于最近新的订阅计费模式是introduced,因此我们计划通过在下一个版本中添加订阅计划来利用它。

我们还希望在我们的后端查看和管理用户拥有的附加组件,并且有相关的 documentation 可以做到这一点。我们密切关注它,但最终——例如,在尝试为用户订阅get 时——我们总是得到一个空响应:{ "items": [] }

下面是我们简单的一步一步做的:

  1. 在 Azure Active Directory 中创建了新的应用注册。
  2. 通过合作伙伴仪表板将应用注册标识符与我们的应用相关联。
  3. 为以下受众 URI 创建了三个 Azure Active Directory (AAD) 令牌:

  4. 通过分别从我们应用中的客户端代码调用 StoreContext.GetCustomerCollectionsIdAsyncStoreContext.GetCustomerPurchaseIdAsync,代表我们的测试 Microsoft 帐户为收集和购买 API 创建了 Microsoft Store ID 密钥。为了生成每个密钥,我们使用了第 3 步中对应的 AAD 令牌。

  5. 为用户请求的产品/订阅(使用第 3 步中的授权 AAD 令牌和第 4 步中的商店 ID 密钥)。

所以我们收到了200 "OK" 的回复,但列表总是,这非常令人失望,实际上对我们来说是一个主要的阻塞问题。

我们还可以通过“订单历史记录”确认我们上述测试 Microsoft 帐户拥有至少一个持久附加组件和一个订阅。可以通过在客户端应用程序中调用StoreContext.GetUserCollectionAsyncStoreContext.GetAppLicenseAsync API 来检查相同的结果——确实有一种非消耗品和一种订阅。

我在官方论坛posted同样的问题,但不确定我们是否会很快得到答复,所以决定也在这里发布。请注意,similar question 也发布在论坛上,但从帖子中并不清楚它是否已解决。

有没有人设法从他们的后端服务获得用户购买?我们将不胜感激任何指导,这也可以使它对我们有用。

更新(2018.08.29):

所以我们在这个问题上取得了一些进展。我们创建了新的非免费(0.99 美元)订阅插件,购买了它并为用户请求订阅。令人惊讶的是,响应中出现了一个新项目!

值得一提的是,同一用户已经拥有多个免费订阅,但没有一个在响应列表中。而且我从未在文档中看到任何关于免费订阅的限制,说它们不会包含在退回的项目中。

无论如何,订阅问题已部分解决,现在我们无法通过“查询产品”API 获取任何非消耗性耐用附加组件的信息,无论其价格等级如何 -这也是一个大问题,需要进一步调查。

【问题讨论】:

  • 在您的第 3 步和第 4 步中,您使用哪个 uri 来获取令牌?如果您想get subscriptions for a user,您还必须使用https://onestore.microsoft.com/b2b/keys/create/purchase 受众URI 创建一个令牌。请检查the Understanding the different tokens and audience URIs文件。
  • 当然,我们为 https://onestore.microsoft.com/b2b/keys/create/purchase 受众 URI 创建了 AAD 访问令牌,并使用它从原生 SDK 生成相应的 Store ID 密钥。我在原始帖子中添加了有关受众 URI 以及我们如何使用它的详细信息。
  • 我在forum 上回复了您的问题,这应该是一个 B2B 问题,我们需要更多信息。请在论坛上查看答案。

标签: uwp in-app-purchase azure-active-directory winobjc


【解决方案1】:

似乎我们终于解决了这个问题!

非消耗性耐用产品和订阅的场景略有不同,但它们都与附加属性中有关个人数据收集的新必填问题相关,如下所示:

这是你需要做的:

  1. 如果您很久以前提交了非消耗性耐用插件,您需要创建一个新的提交,选择上述问题的任何答案并将其提交给认证。一旦您的产品更新版本进入商店,请尝试请求用户收集产品 - 现在应该将其包含在响应中。
  2. 如果您创建订阅插件,您似乎必须对问题选择“是”并提供隐私政策 URL,否则它将永远不会出现在对“订阅一个用户”。另请注意,根据我们的经验,与非消耗性耐用产品相比,它需要更长的时间才能生效——认证完成后最多需要 24 小时左右。

好的,现在很好,但我就是不明白为什么微软没有在文档中直接提到这些要求,导致很多天都在沮丧中迷失……

【讨论】:

  • 不管怎样,如果您创建订阅之前在商店列表中添加 Azure 租户 ID,您会遇到类似的问题,因为之后添加 ID 不会自动将现有订阅与其关联,直到您重新提交每个订阅。
  • @JohnnyWestlake,我认为这不是我们的情况,但还是谢谢你!
  • 这是否也解决了“无论如何,订阅问题已部分解决,现在我们无法通过“查询产品”API 获取有关任何非消耗性耐用附加组件的信息,无论其价格层——这也是一个主要问题,因此需要进一步调查。”我已经回答了隐私政策问题,但仍然从 collections.mp.microsoft.com/v6.0/collections/query API 得到空结果。
  • @AdamHewitt,您在最新提交的内容中是否也填写了“隐私政策 URL”、“网站”和“支持联系信息”属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多