经济 v2 订阅

订阅允许你授予对耐用品的基于时间的访问权限。 调用 GetInventoryItems 后,订阅中的项目将解压缩到玩家的清单中。

注意

本文重点介绍虚拟订阅或存在于游戏内的订阅。 我们在个人预览版中提供了一项新功能,你可以在其中使用 PlayFab 的库存兑换 API 将虚拟订阅链接到实际市场。 可在下面找到有关如何执行此操作的详细信息:

要访问此功能,请向 PFEconomyPreviews@microsoft.com 发送主题为 PlayFab 移动订阅的电子邮件,并附上你的 PlayFab 游戏 ID,我们将在你的环境中启用该功能。

创建订阅

若要创建订阅,必须首先确保已发布希望在游戏中可访问/可购买的目录项货币用户生成的内容 (UGC)。 若要在创建订阅之前设置目录,请参阅 经济 V2 快速入门

  1. 导航到“经济>目录 (V2)”。

  2. 在“订阅”选项卡下,选择“新建订阅”。

上述假日皮肤通行证订阅基于两个价格点和两个不同的有效期授予两个项目 Glowing GlovesShiny Shoes。 第一套定价包括 5 颗钻石和 10 枚金币,可确保订阅的有效期为一周,而第二套定价包括 7 颗钻石和 12 枚金币,可确保订阅的有效期为一个月。 请注意,持续时间需要以秒为单位设置。

这应返回一个响应,指出订阅已创建并发布:

{
  "code": 200,
    "status": "OK",
    "data": {
        "Item": {
            "Id": "{{NewlyCreatedSubscriptionItemID}}",
            "Type": "subscription",
            "AlternateIds": [],
            "Title": {
                "NEUTRAL": "Holiday Skins Pass"
            },
    ...
}

清单中的订阅

订阅将存在于玩家的清单集合中,其中包含 ID、StackId、到期日期和显示属性。 订阅中的所有内容都可以像其他项目一样使用“添加”、“减去”和“更新”等进行修改。

可以将 GetInventoryItems 与类型筛选器一起使用,以检索玩家当前拥有的所有订阅。

{ 
    "Entity": {
        "Type": "title_player_account", 
        "Id": "ID" 
    }, 
    "CollectionId": "default", 
    "Filter": "type eq 'subscription'"
}

**Sample Response**

{
    "code": 200,
    "status": "OK",
    "data": {
        "Items": [
            {
                "Id": "{{SubscriptionID}}",
                "StackId": "default",
                "DisplayProperties": {},
                "Type": "subscription",
                "ExpirationDate": "2023-08-27T23:59:59Z"
            }
        ],
        "ETag": "1/Mw=="
    }
}

未过期的订阅将在读取时解压缩。 解压缩的项目具有预期的 ID,即由订阅 ID 和订阅的 StackId 组成的唯一复合 StackId。 金额设置为订阅项目参考中配置的金额。 这些解压缩的项目是不可变的,不能使用“添加”、“减去”、“更新”等进行修改。


{ 
    "Entity": {
        "Type": "title_player_account", 
        "Id": "ID" 
    }, 
    "CollectionId": "default", 
    "Filter": "StackId eq 'SubscriptionItemID:default'"
}

**Sample Response**

{
    "code": 200,
    "status": "OK",
    "data": {
        "Items": [
            {
                "Id": "{{GlowingGlovesItemID}}",
                "StackId": "{{SubscriptionID:default}}",
                "DisplayProperties": {},
                "Amount": 1,
                "Type": "catalogItem"
            },
            {
                "Id": "{{ShinyShoesItemID}}",
                "StackId": "{{SubscriptionID:default}}",
                "DisplayProperties": {},
                "Amount": 1,
                "Type": "catalogItem"
            }
        ],
        "ETag": "1/NQ=="
    }
}

订阅解压缩发生在筛选和分页之前,以便可以像集合中的任何其他项目一样可靠地筛选和分页订阅项目。

可以使用 UpdateInventoryItemsAddInventoryItemsSubtractIventoryItems 更新玩家订阅的到期日期。

UpdateInventoryItems 此处的 API 调用正在更新订阅的到期日期。

{
   "Entity": { 
      "Type": "title_player_account", 
      "Id": "{{ID}}" 
    }, 
  "CollectionId": "default", 
   "Item": { 
        "Id": "{{SubscriptionID}}", 
        "StackId": "default",
        "DisplayProperties": {},
        "Type": "subscription",
        "ExpirationDate": "2023-03-27T23:59:59Z" 
    } 
} 

AddInventoryItems 此处的 API 调用通过增加 DurationInSeconds 参数来延长到期日期。

{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":2628000 
} 

SubtractInventoryItems 此处的 API 调用通过减少 DurationInSeconds 参数来减少到期日期。

{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":60 
}