Share via


Economy v2 구독

구독을 통해 내구재에 대한 시간 기반 액세스 권한을 부여할 수 있습니다. 구독 내의 항목은 GetInventoryItems를 호출한 후 플레이어의 인벤토리에서 압축 해제됩니다.

참고 항목

이 문서에서는 가상 구독 또는 게임 내에 있는 구독에 중점을 둡니다. PlayFab의 Inventory Redeem API를 사용하여 가상 구독을 실제 마켓플레이스에 연결할 수 있는 비공개 미리 보기의 새로운 기능이 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 다음과 같습니다.

이 기능에 액세스하려면 PlayFab 타이틀 ID와 함께 PlayFab 모바일 구독이라는 제목의 전자 메일을 PFEconomyPreviews@microsoft.com(으)로 보내면 사용자 환경에서 이 기능을 사용하도록 설정하겠습니다.

구독 만들기

구독을 생성하려면 먼저 게임에서 액세스/구매할 수 있도록 카탈로그 항목, 통화 또는 사용자 생성 콘텐츠(UGC)를 게시했는지 확인해야 합니다. 구독을 만들기 전에 카탈로그를 설정하려면 Economy V2 빠른 시작을 참조하세요.

  1. Economy>카탈로그(V2)로 이동합니다.

  2. 구독 탭에서 새 구독을 선택합니다.

위의 Holiday Skins Pass 구독은 두 개의 서로 다른 유효 기간 동안 두 가지 가격으로 Glowing GlovesShiny Shoes 두 항목을 부여합니다. 5개의 다이아몬드와 10개의 골드로 구성된 첫 번째 가격 세트는 구독이 1주일 동안 유효함을 보장하고 두 번째 가격 세트인 다이아몬드 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=="
    }
}

구독 풀기는 필터링 및 페이징 전에 발생하므로 컬렉션의 다른 항목과 마찬가지로 구독 항목을 안정적으로 필터링하고 페이징할 수 있습니다.

UpdateInventoryItems, AddInventoryItemsSubtractIventoryItems를 사용하여 플레이어의 구독 만료 날짜를 업데이트할 수 있습니다.

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 
}