对Microsoft Store API的请求始终返回空的产品/订阅列表

mik*_*ejd 8 in-app-purchase azure-active-directory uwp winobjc

我们将免费的UWP应用程序发布到Microsoft Store,并附带非耗材升级附加组件.由于最近向公众引入了新的订阅计费模式,我们计划通过在下一版本中添加订阅计划来利用它.

我们还希望在后端查看和管理用户自己的附加组件,并且有相关文档可以做到这一点.我们密切关注它,但最终 - 在尝试获取用户订阅时 - 我们总是得到一个空的响应:{ "items": [] }.

以下是我们一步一步简要介绍的内容:

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

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

  5. 请求用户的产品/订阅(使用步骤3中的授权AAD令牌和步骤4中的Store ID键).

所以我们得到了200 "OK"回复,但是这个列表总是空的,这非常令人失望,实际上是我们现在的主要阻塞问题.

我们还可以通过"订单历史记录"确认我们上述测试Microsoft帐户至少拥有一个持久插件和一个订阅.可以通过在客户端应用程序中调用StoreContext.GetUserCollectionAsyncStoreContext.GetAppLicenseAsyncAPI 来检查相同的结果- 确实存在一个非消耗品和一个订阅.

我在官方论坛上发布了同样的问题,但不确定我们是否会尽快得到答复,所以决定在此发布.请注意,类似的问题也会在论坛上发布,但是从线程中不清楚它是否已经解决.

有没有人设法让用户从他们的后端服务购买?我们将非常感谢任何可以使它为我们工作的指导.

更新(2018.08.29):

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

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

无论如何,部分解决了订阅的问题,现在我们无法获得有关"查询产品"API的任何非消耗性耐用附件的信息,无论其价格等级 - 这也是一个主要问题,因此进一步调查是需要.

mik*_*ejd 3

看来我们终于解决了这个问题!

\n\n

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

\n\n

在此输入图像描述

\n\n

以下是您需要执行的操作:

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

好吧,现在没问题了,但我就是不明白为什么微软没有在文档中直接提到这些要求,导致我沮丧了很多天\xe2\x80\xa6

\n

  • 无论如何,如果您在商店列表中添加 Azure 租户 ID *之前*创建订阅,您将遇到类似的问题,因为之后添加 ID 不会自动将现有订阅与其关联,直到您重新提交每个订阅。 (2认同)