가상 아이템
개요
가상 아이템은 사용자가 실제 통화 또는 인게임 재화로 구매하거나 보너스로 받을 수 있는 인게임 아이템입니다. 이러한 아이템은 물리적 형태를 갖지 않으며 게임 내에서만 사용됩니다. 가상 아이템의 예: 스킨, 물약, 무기, 열쇠 및 게임 플레이 또는 캐릭터 외형에 영향을 주는 기타 요소.
주요 기능:
- 유연한 가격 설정:
- 동일한 아이템에 대해 실제 통화와 인게임 재화로 가격을 지정할 수 있는 기능입니다.
- 여러 실제 통화 및 인게임 재화로 동일한 아이템의 가격을 지정할 수 있는 기능입니다. 이 경우 각 유형에 대해 실제 통화나 인게임 재화 중 하나로 기본 통화를 지정해야 합니다.
- 무료 아이템 생성.
- 지역별 가격 설정.
- 자동 통화 및 국가 감지.
- 가용성 설정:
- 다른 지역에서 아이템 판매 제한.
- 구매할 수 있는 아이템 개수 제한.
- 스토어 내 아이템의 표시 기간 제한.
- 구매할 수 없는 아이템 설정. 아이템을 카탈로그에서 숨길 수는 있지만 번들의 일부로 또는 다른 아이템 구매 시 보너스로 받을 수 있습니다.
- 카탈로그 구성:
- 그룹 생성.
- 카탈로그에서 아이템 정렬.
가상 아이템은 다른 아이템(인게임 재화, 번들 등)과 마찬가지로 관리자 페이지에서 생성하거나 API를 통해 생성하거나 카탈로그의 일부로 가져올 수 있습니다.
이 가이드에서는 수동 항목 생성 및 API 사용 방법에 대해 설명합니다.
카탈로그 가져오기에 대한 자세한 내용은 다음 섹션을 참조하십시오:
관리자 페이지에서 설정
그룹 생성
그룹을 사용하면 다단계 카탈로그를 구축할 수 있습니다. 그룹에 할당되지 않은 아이템은 그룹화되지 않음 그룹에 배치됩니다. 그룹 해제됨 그룹은 편집하거나 삭제할 수 없습니다.
그룹 생성 방법:
- 관리자 페이지의 프로젝트에서, 스토어 > 가상 아이템 섹션으로 이동합니다.
- +를 클릭하고 드롭다운 메뉴에서 그룹 생성을 선택합니다.

- 외부 ID - 고유한 그룹 ID.
- 그룹 이름.
- 스토어에서 그룹을 사용할 수 있도록 설정하려면 스토어에 그룹 표시 토글을 켜짐(On)으로 설정합니다. 이 경우 그룹은 활성화 상태로 생성됩니다. 나중에 그룹 상태를 변경할 수 있습니다.
- 그룹 생성을 클릭합니다.

그룹이 비활성 상태인 경우, 이러한 그룹은 아이템 그룹 목록 가져오기 API 메서드 호출 시 응답에
- 반환되지 않고,
- 아이템 목록을 가져오기 위해 클라이언트 API 메서드 호출 시 이 그룹에 포함된 아이템 특성에 표시되지 않으며,
- 웹사이트 빌더에서 사용할 수 없습니다.
생성 후 그룹의 상태를 변경하려면 스토어 > 가상 아이템 섹션에서 원하는 그룹을 찾아 상태 열에서 필요한 상태를 선택합니다.

기존 그룹에 새 그룹을 추가하여 다단계 카탈로그를 생성할 수 있습니다. 단, 중첩된 그룹을 생성할 수 없는 그룹화되지 않음 그룹은 예외입니다.
기존 그룹을 다른 그룹 내에 중첩하는 방법:
- 관리자 페이지의 프로젝트에서, 스토어 > 가상 아이템 섹션으로 이동합니다.
- 다른 기존 그룹 아래에 중첩할 그룹을 선택합니다.
- •••를 클릭하고 드롭다운 메뉴에서 그룹 편집을 선택합니다.
- 디렉터리 위치 드롭다운 목록에서 현재 그룹을 배치할 상위 그룹을 선택합니다.

- 변경 사항 저장을 클릭합니다.
가상 아이템 생성
가상 아이템 생성 방법:
- 관리자 페이지의 프로젝트에서, 스토어 > 가상 아이템 섹션으로 이동합니다.
- +를 클릭하고 드롭다운 메뉴에서 아이템 생성을 선택합니다.

- 카탈로그에서 가상 아이템의 가용성 상태를 정의합니다. 다음 옵션 중 하나를 선택합니다:
- 사용 불가(기본값) - 해당 아이템이 카탈로그에서 구매할 수 없거나 번들에 포함될 수 없거나 다른 아이템 구매 시 보너스로 사용할 수 없는 경우.
- 사용 가능 - 해당 아이템은 카탈로그에서 구매할 수 있으며 번들에 포함되거나 다른 아이템 구매 시 보너스로 사용할 수 있는 경우.
- 부분적으로 사용 가능 - 해당 아이템은 카탈로그에서 구매할 수 없지만 번들에 추가하거나 다른 아이템 구매 시 보너스로 사용할 수 있는 경우.

- 기본 설정을 구성합니다. 다음을 지정합니다:
- 이미지(선택 사항)
- SKU
- 아이템이 속하는 하나 또는 여러 개의 그룹
- 아이템 이름
- 아이템 설명(선택 사항)
- 아이템 유형을 기본값인 소모성으로 설정합니다(권장).
- 가상 아이템 가격 설정:
- 무료 가상 아이템을 생성하려면 유료 또는 무료 필드에서, 무료 아이템을 선택하십시오.
- 유료 가상 아이템을 생성하려면 유료 또는 무료 필드에서, 유료 아이템을 선택하고 하나 이상의 통화로 가격을 지정하십시오.
- 지역별 가격을 설정(선택 사항)합니다.
- 구매할 수 있는 아이템 수 제한(선택 사항). 이렇게 하려면
- 사용자 한 명이 이 아이템을 구매할 수 있는 횟수 제한 토글을 켜짐(On)으로 설정하고, 사용자 한 명이 구매할 수 있는 아이템 수를 지정해야 합니다.
- 한도 새로 고침 빈도 구성:
- 제한을 재설정하지 않으려면 드롭다운 목록에서 정기적 새로고침 안 함을 선택합니다.
- 정기적으로 제한을 재설정하려면 드롭다운 목록에서 새로 고침 빈도를 선택하고 재설정 시기를 지정하십시오.
- 스토어 내 아이템의 표시 기간 제한(선택 사항). 이렇게 하려면 스토어에 아이템 표시 필드에서, 기간을 선택하고, 시간대, 기간의 시작 시간 및 종료 시간을 지정합니다. 아이템 표시 종료 기간을 표시하지 않으려면 종료 날짜 없음 확인란을 선택합니다.
- 추가 특성(선택 사항)을 추가합니다.
- 아이템 생성을 클릭합니다.
API를 통한 가상 아이템 작업
가상 아이템을 설정하려면 가상 아이템 및 인게임 재화그룹의 관리자 하위 섹션에서 API 호출을 사용합니다.
기본 인증은 API 호출에 사용됩니다. Authorization:Basic <your_authorization_basic_key>
를 전달합니다. 여기에서 <your_authorization_basic_key>
는 Base64 표준으로 인코딩된 판매자 ID:API 키 쌍입니다. 이러한 매개 변수를 찾으려면 관리자 페이지으로 이동합니다.
- 판매자 ID 표시 위치:
- 회사 설정 > 회사 섹션.
- 관리자 페이지의 브라우저 주소 표시줄에 있는 URL. 해당 URL은
https://publisher.xsolla.com/<merchant_id>/
형식으로 되어 있습니다.
- API 키는 생성할 때 한 번만 관리자 페이지에 표시되며 따로 저장하고 관리해야 합니다. 다음 섹션에서 새 키를 생성할 수 있습니다.
API 키 작업에 대한 자세한 정보는 API 참조를 확인하세요.
주요 권장 사항:
- 본인의 공간에 생성된 API 키를 저장합니다. 생성된 API 키는 관리자 페이지에서 한 번만 볼 수 있습니다.
- API 키를 비밀로 유지해야 합니다. 이러한 API 키는 개인 계정과 관리자 페이지의 프로젝트에 대한 액세스를 제공합니다.
- API 키는 서버에 저장해야 하며 바이너리나 프론트엔드에는 저장해선 안 됩니다.
필요로 하는 API 호출에 project_id
경로 매개 변수가 포함되어 있지 않으면 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해 주세요.
클라이언트 측 가상 아이템 카탈로그를 가져오려면 가상 아이템 및 인게임 재화 그룹의 카탈로그 하위 섹션에서 API 호출을 사용합니다. 이 호출은 기본 인증이 필요하지 않습니다.
그룹으로 나누어지지 않은 아이템의 전체 목록을 가져오려면 가상 아이템 목록 가져오기 API 호출을 사용합니다. 확실한 어떤 그룹의 아이템 목록을 가져오려면 external_id
매개 변수를 지정된 그룹으로 아이템 목록 가져오기 호출에 전달합니다.
가상 아이템 고급 설정
구매할 수 있는 아이템 개수 제한
사용자 한 명이 특정 가상 아이템을 구매할 수 있는 횟수를 제한할 수 있습니다. 이를 통해 아이템 가용성을 관리하고 독점 제안 생성을 지원할 수 있습니다.
사용 사례에 대한 예시:
- 가상 아이템의 일일, 주간 또는 월간 구매 한도 설정.
- 사용자당 한 번만 구매할 수 있는 웰컴 아이템.
구매 한도를 구성하는 두 가지 방법:
- 관리자 페이지에서 아이템을 생성하거나 편집할 때, 사용자 한 명이 이 아이템을 구매할 수 있는 횟수 제한 토글을 켜짐(On)으로 설정하고 구매 가능한 아이템 수량을 지정하고 새로 고침 일정을 구성합니다.
- API를 통해 아이템을 생성 또는 업데이트할 때 요청 본문의
limits
개체에 구매 한도 설정을 전달합니다.
한도는 엑솔라 측에서 전적으로 집행합니다. 시스템은 각 사용자가 아이템을 구매한 횟수를 추적하여 설정된 한도를 초과하는 구매를 방지합니다.
사용자 액세스 토큰이 카탈로그 요청(가상 아이템 및 인게임 재화 그룹의 카탈로그하위 섹션에서 API 메서드 호출 시), 엑솔라는 특정 사용자가 구매할 수 있는 각 아이템의 수량을 계산합니다. 응답에는 허용된 전체 수량(total
매개 변수)과 사용자에게 부여되는 나머지 수량(available
매개 변수)를 비롯한 limits
개체가 포함됩니다. 이 값을 사용하여 인터페이스에 가용성을 표시할 수 있습니다.
요청에 사용자 액세스 토큰이 제공되지 않은 경우, available
매개 변수 값은 항상 응답의 총 한도와 일치합니다.
구매 한도가 있는 아이템이 포함된 응답 예시:
- json
1{
2 "items": [
3 {
4 "sku": "big_rocket",
5 "name": "Big Rocket",
6 "groups": [
7 {
8 "external_id": "accessory",
9 "name": "Accessory"
10 }
11 ],
12 "attributes": [
13 {
14 "external_id": "stack_size",
15 "name": "Stack size",
16 "values": [
17 {
18 "external_id": "size_e3364991f92e751689a68b96598a5a5a84010b85",
19 "value": "5"
20 }
21 ]
22 }
23 ],
24 "type": "virtual_good",
25 "description": "Big Rocket - description",
26 "image_url": "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png",
27 "is_free": false,
28 "price": {
29 "amount": "100.99",
30 "amount_without_discount": "100.99",
31 "currency": "USD"
32 },
33 "virtual_prices": [
34 {
35 "amount": 100,
36 "sku": "vc_test",
37 "is_default": true,
38 "amount_without_discount": 100,
39 "image_url": "http://image.png",
40 "name": "SHOTGUN FOR TRUE RAIDERS",
41 "type": "virtual_currency",
42 "description": "description"
43 }
44 ],
45 "can_be_bought": true,
46 "inventory_options": {
47 "consumable": {
48 "usages_count": 1
49 },
50 "expiration_period": {
51 "type": "day",
52 "value": 1
53 }
54 },
55 "virtual_item_type": "non_renewing_subscription",
56 "limits": {
57 "per_user": {
58 "total": 5,
59 "available": 5
60 },
61 "per_item": null
62 },
63}
또한 엑솔라는 결제 초기화 및 주문 완료 시 모두 구매 한도를 적용합니다. 사용자가 여러 탭을 열거나 동시에 여러 주문을 생성하려고 시도하면 시스템이 한도 초과를 방지하여 이미 구매한 아이템을 포함한 미결제 주문은 모두 취소됩니다.
스토어 내 아이템의 표시 기간 제한
스토어 내 아이템의 표시 기간을 지정하여
- 주어진 시간 동안 예를 들어, 휴일 판매 기간 동안 카탈로그의 관련성을 유지
- 하고 카탈로그에 표시하지 않고 아이템을 미리 생성
- 하며 아이템 바로 옆에 타이머를 표시하여 사용자가 아이템을 구매하도록 동기를 부여
스토어에서 아이템에 대한 표시 기간 한도를 다음과 같이 설정할 수 있습니다.
- 관리자 페이지에서 아이템을 생성 또는 편집할 때 스토어에 아이템 표시 필드에서 기간을 선택하고 시간대, 시작 날짜 및 종료 날짜를 지정합니다. 종료 날짜를 열린 상태로 남겨두려면 종료 날짜 없음 확인란을 선택합니다.
- API를 통해 아이템을 생성하거나 업데이트할 때
periods
개체에 다음 매개 변수를 포함합니다:periods[0].date_from
- 표시 기간의 시작 날짜 및 시간(형식:YYYY-MM-DDThh:mm:ss±hh:mm
).periods[0].date_until
- 표시 기간의 종료 날짜 및 시간. 종료 날짜를 생략하려면null
를 전달하십시오.
API를 사용하여 시작 날짜와 종료 날짜가 각각 포함된 객체 배열을 전달하여 여러 표시 기간을 지정할 수 있습니다.
기간 배열의 예시:
- json
1"periods": [
2 {
3 "date_from": "2022-06-10T14:00:00+03:00",
4 "date_until": "2022-06-30T14:00:00+03:00"
5 },
6 {
7 "date_from": "2022-07-10T14:00:00+03:00",
8 "date_until": "2022-07-30T14:00:00+03:00"
9 },
10 {
11 "date_from": "2022-08-10T14:00:00+03:00",
12 "date_until": "2022-08-30T14:00:00+03:00"
13 }
14]
지역 제한 설정
가상 아이템을 구매할 수 있는 지역을 구성할 수 있습니다. 이를 통해 특정 국가의 사용자에게 아이템을 숨기거나 지역 프로모션 캠페인의 일환으로 특정 지역에서만 아이템을 사용할 수 있도록 하는 등 아이템을 볼 수 있는 사람과 위치를 제어할 수 있습니다.
가상 아이템에 대한 지역 제한을 설정하려면 가상 아이템 생성 또는 가상 아이템 업데이트 API 메서드 호출 시 요청 본문에 해당 지역 ID가 있는
지역 배열의 예시:
- json
1"regions": [{
2 “id”: 123
3 }, {
4 “id”: 456
5 }
6]
지역별 가격 설정
지역별 가격을 구성하여 여러 국가의 경제 상황에 따라 가상 아이템의 가격을 조정할 수 있습니다. 이렇게 하면 구매력이 다양한 지역의 사용자가 제안에 더 쉽게 접근할 수 있으므로 전환율과 전체 매출을 모두 높일 수 있습니다.
다음과 같은 방법으로 지역별 가격을 설정할 수 있습니다:
- 관리자 페이지(수동 구성)에서 아이템을 생성하거나 편집할 때 가격 설정 섹션으로 이동하고 실제 통화 가격 토글을 켜짐(On)으로 설정하고 가격 설정을 클릭합니다. 가격을 수동으로 입력하거나 통화 및 세금에 따라 자동으로 계산할 수 있습니다.
- 관리자 페이지에서 CSV 가져오기를 통해 CSV 파일에서 특정 지역에 대한 아이템 가격을 포함한 여러 행을 추가할 수 있습니다. 파일 구조 및 예제에 대한 자세한 내용은 지역 가격 지침을 참조하십시오.
- csv
1SKU,Currency,Amount,Country,IsDefault,Platform
2game-key-1,EUR,9.09,,1,steam
3game-key-1,EUR,9.2,DE,0,steam
4game-key-1,EUR,8.09,IT,0,steam
5game-key-1,USD,10.1,US,0,steam
6game-key-1,MYR,47,MY,0,steam
7game-key-2,EUR,2.09,,1,steam
8game-key-2,EUR,2.2,DE,0,steam
9game-key-2,EUR,1.79,IT,0,steam
10game-key-2,USD,2.3,US,0,steam
11game-key-2,MYR,24,MY,0,steam
- json
1"prices": [
2 {
3 "amount": 100,
4 "currency": "USD",
5 "is_enabled": true,
6 "is_default": true
7 },
8 {
9 "amount": 200,
10 "currency": "CZK",
11 "country_iso": "CZ",
12 "is_enabled": false,
13 "is_default": false
14 }
15 ]
유용한 링크
오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.