uwp - 验证在 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 user
API 来获取订阅以进行验证。
问题:
用户 A(我们系统中的用户)登录并购买订阅并捕获ClaimPurchase
呼叫(通过设备上设置的某些代理)以检索 StoreID。
用户 A 向用户 B 出售 StoreID。用户 B 登录到应用程序(再次在设备上代理),获取他们的身份验证参数(一些访问令牌)并使用 HTTP 客户端通过and进行ClaimPurchase
调用。access token
StoreID
当从服务器到服务器调用验证调用时,它将显示当前用户的订阅处于活动状态。
解决这个问题的一种方法是,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
吗?
另外,有没有更好的处理方法?
解决方案
用户是否购买订阅插件或应用取决于他们获得的许可证是否有效,而不取决于商店 ID。购买订阅插件需要商店 ID(在您的代码中启用),而不是而不是用户购买并获得商店 ID。商店 ID 属于开发人员而不是客户。因此用户应该不可能购买或出售商店 ID 来登录您的应用程序/插件。
当您为您的应用启用订阅插件时,您应该按照以下步骤操作:
1.确定客户是否已经拥有订阅的有效许可证。(AppLicense,AddOnLicenses)
2.使用代表您要代表客户购买的订阅的StoreProduct对象。
3.然后代码确定订阅是否可以试用。
4.调用 RequestPurchaseAsync方法请求购买订阅
有关详细信息,请参阅文档:为您的应用启用订阅插件
推荐阅读
- x86 - 为什么现代cpu可以在一个时钟周期内执行一些指令?
- django - Django 中特定用户类型的特定字段
- powershell - Powershell [环境] 不一致
- javascript - 使用 JS 数组的幻灯片放映
- flutter - 这个 RenderBox 抖动错误是什么意思?
- dpdk - DPDK:MPLS数据包处理
- php - 在 WooCommerce 中添加到购物车后更改自定义 Ajax 添加到购物车按钮文本
- mysql - SQL 查询返回书籍列表的作者、客户计数
- c - 哪些格式字符串允许作为后备?
- android - FirebaseAuth 没有调用 startActivityForResult