是否在Microsoft商店中验证订阅购买?



我们正在审查我们组织的某些应用的Microsoft商店集成。根据我们目前对应用商店的理解,我们计划使用获取用户服务器到服务器 API 的订阅来获取用户的购买并验证当前是否Active对声明产品的购买。

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

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

问题:

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

用户 A 向用户 B 出售商店 ID。用户 B 登录到应用程序(再次在设备上代理(,获取其身份验证参数(一些访问令牌(,并使用 HTTP 客户端与access tokenStoreID进行ClaimPurchase调用。

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

解决这个问题的一种方法是,每当成功ClaimPurchase时,我们都会维护一个StoreID -> UserId映射。并验证 StoreID 是否属于同一用户。

但以防万一用户 A 也生成了新的 StoreID,例如同时(生成 S1 时(S2并出售给用户 B 而不是S1。用户 B 在提出声明时使用 StoreIDS2

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

我的问题又回到了:idbeneficiary_id会改变吗?

另外,有没有更好的方法来解决这个问题?

用户购买订阅加载项还是应用程序取决于他们获得的许可证是否处于活动状态,而不取决于应用商店 ID。购买订阅加载项需要应用商店 ID(在代码隐藏中启用(,而不是用户购买并获取应用商店 ID。应用商店 ID 属于开发人员而不是客户。因此,用户应该无法购买或出售应用商店 ID 来登录您的应用/加载项。

为应用程序启用订阅加载项时,应按照以下步骤操作:

1.确定客户是否已具有订阅的有效许可证。(应用程序许可证,附加许可证(

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

3.然后,代码确定订阅是否提供试用版。

4.调用请求购买异步方法以请求购买订阅

有关更多详细信息,请参阅文档:为您的应用启用订阅加载项

最新更新