![](/img/trans.png)
[英]Error codes for Get Subscriptions for a User API for Microsoft Store Subscriptions
[英]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 token
和StoreID
进行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。 但这仅在两者在其活动状态下从未更改订阅的情况下有效。
我的问题归结为: id
和beneficiary_id
是否更改?
此外,还有更好的方法来处理此问题吗?
用户是购买订阅附件还是应用程序取决于其获取的许可证是否有效,而不取决于商店ID。购买订阅附件需要商店ID(在后面的代码中启用),而不是用户购买并获得商店ID。商店ID属于开发人员而不是客户。因此,用户不应买卖商店ID来登录您的应用程序/附加组件。
为您的应用启用订阅附件时,应遵循以下步骤:
1.确定客户是否已具有有效的订阅许可证。(AppLicense,AddOnLicenses)
2.使用StoreProduct对象,该对象代表您要代表客户购买的订阅。
3.然后,代码确定订阅是否可以使用试用版。
4.调用RequestPurchaseAsync方法以请求购买订阅
有关更多详细信息,请参阅文档: 为您的应用程序启用订阅加载项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.