【问题标题】:Validate Purchase in Microsoft Store for Subscriptions?验证在 Microsoft Store 中购买的订阅?
【发布时间】:2019-12-15 02:02:48
【问题描述】:

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

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

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

问题:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: uwp in-app-purchase windows-store-apps app-store windows-store


    【解决方案1】:

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

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

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

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

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

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

    更多详情请参考文档:Enable subscription add-ons for your app

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 2014-07-19
      • 2020-01-19
      • 2017-09-07
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      相关资源
      最近更新 更多