首页 > 解决方案 > 验证在 Microsoft Store 中购买的订阅?

问题描述

我们正在审查我们组织的一些应用程序的 Microsoft Store 集成。根据我们目前对 Store 的理解,我们计划使用Get subscriptions for a user server to server API 来获取用户的购买并验证对声明产品的购买是否当前Active

API 需要StoreID传递 a,它是登录到商店的 Microsoft Store 用户的用户标识符。应用程序需要StoreID通过从 Windows SDK 调用一些 API来生成它并将其存储在本地。

从商店购买成功后,将StoreID通过名为 的 API 将其发送到我们的服务器,该 APIClaimPurchase使用上述服务器-服务器Get Subscriptions for a userAPI 来获取订阅以进行验证。

问题:

用户 A(我们系统中的用户)登录并购买订阅并捕获ClaimPurchase呼叫(通过设备上设置的某些代理)以检索 StoreID。

用户 A 向用户 B 出售 StoreID。用户 B 登录到应用程序(再次在设备上代理),获取他们的身份验证参数(一些访问令牌)并使用 HTTP 客户端通过and进行ClaimPurchase调用。access tokenStoreID

当从服务器到服务器调用验证调用时,它将显示当前用户的订阅处于活动状态。

解决这个问题的一种方法是,StoreID -> UserId只要成功,我们就维护一个映射ClaimPurchase。并且StoreID被验证它属于同一个用户。

但是以防万一用户 A 也生成了一个新的 StoreID,比如说S2同时(生成 S1 时)并出售给用户 B 而不是S1. S2用户 B在提出索赔时使用 StoreID 。

我们如何处理这种情况。API 响应Get Subscriptions for User提供了一个id字段(订阅 ID)和一个beneficiary_id可以映射到应用程序用户 ID 的字段。但这仅在两者在其活动状态下从未更改订阅时才有效。

我的问题又回到了:有id变化beneficiary_id吗?

另外,有没有更好的处理方法?

标签: uwpin-app-purchasewindows-store-appsapp-storewindows-store

解决方案


用户是否购买订阅插件或应用取决于他们获得的许可证是否有效,而不取决于商店 ID。购买订阅插件需要商店 ID(在您的代码中启用),而不是而不是用户购买并获得商店 ID。商店 ID 属于开发人员而不是客户。因此用户应该不可能购买或出售商店 ID 来登录您的应用程序/插件。

当您为您的应用启用订阅插件时,您应该按照以下步骤操作:

1.确定客户是否已经拥有订阅的有效许可证。(AppLicense,AddOnLicenses)

2.使用代表您要代表客户购买的订阅的StoreProduct对象。

3.然后代码确定订阅是否可以试用。

4.调用 RequestPurchaseAsync方法请求购买订阅

有关详细信息,请参阅文档:为您的应用启用订阅插件


推荐阅读