繁体   English   中英

在Microsoft Store中验证购买的订阅?

[英]Validate Purchase in Microsoft Store for Subscriptions?

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

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

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

问题:

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

用户A向用户B出售商店ID。 用户B登录(再次在设备上代理)该应用,获取身份验证参数(某些访问令牌),然后使用HTTP客户端使用access tokenStoreID进行ClaimPurchase调用。

从服务器到服务器的呼叫验证通过后,它将显示当前用户的订阅处于活动状态。

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

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

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

我的问题归结为: idbeneficiary_id是否更改?

此外,还有更好的方法来处理此问题吗?

用户是购买订阅附件还是应用程序取决于其获取的许可证是否有效,而不取决于商店ID。购买订阅附件需要商店ID(在后面的代码中启用),而不是用户购买并获得商店ID。商店ID属于开发人员而不是客户。因此,用户不应买卖商店ID来登录您的应用程序/附加组件。

为您的应用启用订阅附件时,应遵循以下步骤:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM