> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Economy v2 订阅

> 创建 PlayFab Economy v2 虚拟订阅，为耐久型游戏内物品授予基于时间的访问权限，并管理经常性玩家权益。

订阅允许你为耐久物品授予基于时间的访问权限。订阅内的物品在调用 [GetInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/get-inventory-items) 之后会在玩家库存中拆包。

<Note>
  本文重点介绍虚拟订阅，即存在于你的游戏中的订阅。
</Note>

## 创建订阅

要创建订阅，你必须首先确保已发布你希望在游戏中可访问/可购买的 [目录物品](/services/playfab/economy-monetization/economy-v2/quickstart#step-3---publish-an-item-to-the-catalog)、[货币](/services/playfab/economy-monetization/economy-v2/quickstart#part-2-inventory-and-virtual-currencies-overview) 或 [用户生成内容 (UGC)](/services/playfab/economy-monetization/economy-v2/ugc/quickstart)。要在创建订阅之前设置你的目录，请参阅 [Economy V2 快速入门](/services/playfab/economy-monetization/economy-v2/quickstart)

### GameManager

1. 导航到 **Economy** > **Catalog (V2)**。
2. 在 **Subscriptions** 选项卡下，选择 **New Subscription**。

### API

你可以使用 [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) API 创建订阅。

创建订阅的 `CreateDraftItem` API 请求示例：

```json theme={null}
{
  "Item": {
   "Type": "subscription",
    "Title": {
      "NEUTRAL": "Holiday Skins Pass"
    },
    "StartDate": "2023-03-07T00:01:00.0000000Z",
    "ItemReferences":[
      {
        "Id":"{{GlowingGlovesItemID}}",
        "Amount": 1
      }, 
      {
        "Id":"{{ShinyShoesItemID}}", 
        "Amount": 1
      }
    ],
        "PriceOptions": {
          "Prices": [
        {
            "UnitDurationInSeconds":604800,
              "Amounts": [
                {
                    "ItemId": "{{DiamondItemID}}",
                    "Amount": 5
                },
                {
                    "ItemId": "{{GoldItemID}}",
                    "Amount": 10
                }
                ]
        },      
        {
            "UnitDurationInSeconds":2628000,
              "Amounts": [
                {
                    "ItemId": "{{DiamondItemID}}",
                    "Amount": 7
                },
                {
                    "ItemId": "{{GoldItemID}}",
                    "Amount": 12
                }
                ]
        } ]
          }
        },
  "Publish": true
}
```

***

上面的 Holiday Skins Pass 订阅以两个价格点为两个不同的有效期授予两个物品，`Glowing Gloves` 和 `Shiny Shoes`。第一个价格集为 5 diamonds 和 10 gold，确保订阅有效期为一周，而第二个价格集为 7 diamonds 和 12 gold，确保订阅有效期为一个月。请注意，时间持续时间需要以秒为单位设置。

这应该返回订阅已创建和发布的响应：

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

***

## 库存中的订阅

订阅将以 ID、StackId、到期日期和显示属性存在于玩家的库存集合中。订阅中的所有内容都可以像任何其他物品一样使用 Add、Subtract 和 Update 等进行修改。

你可以使用带有 Type 过滤器的 [GetInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/get-inventory-items) 检索玩家当前拥有的所有订阅。

```json theme={null}
{ 
    "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。数量设置为订阅物品引用中配置的数量。这些拆包的物品是不可变的，不能使用 Add、Subtract、Update 等进行修改。

```json theme={null}

{ 
    "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=="
    }
}
```

订阅拆包发生在过滤和分页之前，因此订阅物品可以像集合中的任何其他物品一样可靠地被过滤和分页。

你可以使用 [UpdateInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/update-inventory-items)、[AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items) 和 [SubtractIventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/subtract-inventory-items) 来更新玩家订阅的到期日期。

以下 `UpdateInventoryItems` API 调用正在更新订阅的到期日期。

```json theme={null}
{
   "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 参数来延长到期日期。

```json theme={null}
{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":2628000 
} 
```

以下 `SubtractInventoryItems` API 调用通过减少 DurationInSeconds 参数来缩短到期日期。

```json theme={null}
{
    "Entity": { 
        "Type": "title_player_account", 
        "Id": "{{ID}}" 
    }, 
    "CollectionId": "default", 
    "Item": { 
        "Id": "{{SubscriptionID}}" 
    }, 
    "DurationInSeconds":60 
} 
```


## Related topics

- [目录概览](/zh-CN/services/playfab/economy-monetization/economy-v2/catalog/catalog-overview.md)
- [什么是 PlayFab Economy？](/zh-CN/services/playfab/economy-monetization/economy-what-is.md)
- [Economy V2 针对性优惠](/zh-CN/services/playfab/economy-monetization/economy-v2/player-segmented-monetization/targeted-offers.md)
- [Economy 版本 2 (V2) 常见问题解答](/zh-CN/services/playfab/economy-monetization/economy-v2/faq.md)
- [Economy V2 限制](/zh-CN/services/playfab/economy-monetization/economy-v2/limits.md)
