개요
디지털 배포 솔루션는 게임, 가상 아이템, 인게임 재화, 번들 등의 배포를 위해 자체 플랫폼 또는 생태계를 보유한 여러 배포 파트너와 게임 개발자를 연결해주는 솔루션입니다.
배포 파트너 — 게임과 인게임 아이템을 배포할 수 있는 디지털 플랫폼 또는 생태계. 자체적인 엑솔라 배포 파트너의 예시:
- 다수의 서비스를 포함한 슈퍼 앱
- 뱅킹 애플리케이션
- 전기 통신 및 인터넷 서비스 제공자
- 현금 키오스크
- 캐시백 및 보상 프로그램 제공자
- 전자 상거래 시장
게임 개발자를 위한 혜택:
- 빠르게 성장하는 배포 파트너와 직접 연결되어 게임 잠재 고객 확보 가능.
- 게임을 고유한 사용자 베이스를 지닌 새로운 배포 채널에 추가하여 수입을 증가.
- 광고와 배너를 통해 서드 파티 플랫폼에서의 유기적인 검색 가능성 향상.
배포 파트너를 위한 혜택:
- 게임 콘텐츠 접속을 확장하여 사용자의 충성도 증가. 사용자는 앱 또는 서비스에서 게임 키, 가상 아이템, 인게임 재화 및 번들을 직접 구매할 수 있습니다.
- 게이밍 산업의 증가하는 인기 덕분에 현재 사용자 유지 및 새로운 사용자 유치 가능.
- 게이밍 산업의 대규모 게시자로부터 게임 키, 가상 아이템, 인게임 재화 판매 수수료로 인한 수입 증가.
작동 방식
게임 키 구매 시 사용자 흐름
가상 아이템 및 인게임 재화 구매 시 사용자 흐름
상호작용 절차
- 게임 개발자는 관리자 페이지에서 프로젝트를 생성하고 게임 키, 가상 아이템, 인게임 재화 및 번들을 업로드합니다.
- 배포 파트너가 사용자 데이터를 요청하는 경우:
- 게임 판매 시 키와 영수증을 전송할 사용자의 이메일 주소
- 인게임 아이템 판매 시 아이템을 추가할 사용자의 인게임 ID와 영수증을 전송할 사용자의 이메일 주소
- 사용자는 배포 파트너 인터페이스에 다음 데이터를 입력합니다:
- 게임 구매 시 키와 영수증을 받을 이메일 주소
- 인게임 아이템 구매 시 인벤토리에 아이템을 추가하기 위한 인게임 ID와 영수증을 받을 이메일 주소
- 배포 파트너는 사용자 토큰 생성 메서드를 호출하고 이메일 주소(필수)와 사용자 ID(가상 아이템, 인게임 재화, 번들 판매 시 필수)를 매개 변수로 전달합니다.
- 엑솔라는 게임 개발자가 웹훅을 설정한 경우 사용자가 게임 내에 존재하는지 확인합니다. 가상 아이템 및 인게임 재화를 판매하기 위해서는 웹훅을 설정해야 하지만 게임 키의 경우 선택 사항입니다.
- 엑솔라는 사용자 데이터로 토큰을 생성하고 배포 파트너에게 토큰을 전송합니다.
- 배포 파트너가 게임 카탈로그 또는 인게임 아이템 카탈로그를 요청합니다.
- 엑솔라는 이에 대한 응답으로 요청한 카탈로그를 반환합니다.
- 배포 파트너는 카탈로그를 수신하여 사용자에게 표시해줍니다.
- 사용자가 상품을 구매하면 배포 파트너가 장바구니를 생성합니다.
- 배포 파트너가 사용자의 장바구니를 전송하여 주문을 생성합니다.
- 엑솔라는 주문 ID와 할인율 및 세금을 포함한 장바구니 가격을 반환합니다.
- 배포 파트너는 사용자에게 장바구니의 총 비용을 표시해줍니다.
- 사용자가 결제를 계속 진행하면 배포 파트너가 사용자의 자금을 인출하고 결제 상태 페이지를 표시합니다.
- 배포 파트너는 엑솔라에 주문이 결제되었음을 알리고 결제 정보를 전송합니다.
- 엑솔라는 게임 개발자에게 구매 사실을 알립니다.
- 게임을 구매한 사용자는 구매 세부 정보가 포함된 이메일을 받고 게임 키를 활성화할 수 있습니다. 사용자가 가상 아이템이나 인게임 재화를 구매한 경우 인벤토리에 추가됩니다.
게임 개발자 측 통합
디지털 배포 솔루션 연결 방법
배포 채널을 통해 게임 프로모션을 진행하는 방법:- 관리자 페이지에서 스토어를 연결한 후 다음을 다운로드합니다.
- 웹훅을 설정합니다.
- 프로젝트에서 디지털 배포 솔루션를 활성화하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내어 문의해 주세요.
웹훅 설정 방법
웹훅 설정이 필요한 경우:
- 사용자 유효성 검사 및 게임 사용자 ID별로 카테고리를 맞춤 설정
- 사용자 유효성 검사 및 구매한 인게임 아이템을 인벤토리에 추가
- 엑솔라 측 트랜잭션 ID를 게임 개발자 시스템의 트랜잭션 ID와 연동
- 주문서에 추가 사용자 매개 변수 전달
- 구매 알림 수신
웹훅 설정 방법:
- 관리자 페이지에서 프로젝트를 엽니다.
- 사이드 메뉴에서 프로젝트 설정을 클릭하고 웹훅으로 이동합니다.
- 웹훅 토글을 켜짐으로 설정합니다.
- 웹훅 URL을 지정합니다.
- 프로젝트 웹훅에 서명하기 위한 비밀 키가 기본적으로 생성됩니다. 새 비밀 키를 생성하려면 새로 고침 아이콘을 클릭합니다.
- 설정 저장을 클릭합니다.
사용자 유효성 검사
엑솔라가 사용자가 게임에 존재하는지 확인하기 위해 사용자 확인 웹훅을 전송합니다. 사용자 확인을 통해 수행 가능한 작업:
- 응답으로 사용자 특성을 전달하는 경우 사용자 맞춤형 카탈로그 표시
- 구매 후 사용자의 인벤토리에 아이템 추가
웹훅 수신 확인을 위해 서버에서 반환해야 하는 항목:
- 메시지 본문이 없는 HTTP 코드 204. 사용자가 게임에 존재하는 경우
- 문제를 설명하는 HTTP 코드 400. 특정 사용자를 찾을 수 없거나 잘못된 서명이 전달된 경우
전체 웹훅 목록과 메커니즘(예시 포함)에 대한 자세한 설명은 API 참조에서 확인할 수 있습니다 .
응답으로, custom_parameters
개체에서 추가 거래 매개변수를 전달할 수 있습니다.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"user_attributes": {
"type": "object",
"required": false,
"minProperties": 1,
"maxProperties": 100,
"patternProperties": {
"^[\\w-_.]{1,255}$": {
"oneOf": [
{
"type": "integer"
},
{
"type": "string",
"minLength": 1,
"maxLength": 255
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 255
},
"minItems": 1,
"maxItems": 1000
}
]
}
},
"additionalProperties": false
}
}
}
응답 예시:
- http
{
"user_attributes": {
"age": 18,
"level": 1,
"game": "WoW",
"is_baned": false,
"registration_date": "2022-01-01"
}
}
트랜잭션 ID 연결 중
외부 ID(시스템의 트랜잭션 ID)를 사용 중이고 엑솔라 측의 트랜잭션 ID와 연결하거나 추가 트랜잭션 매개 변수를 전달하려면 다음 웹훅 처리를 구현해야 합니다.{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"notification_type": {
"type": "string"
},
"order_id": {
"type": "integer"
},
"project_id": {
"type": "integer"
},
"user": {
"type": "object",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": "string"
}
}
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item_id": {
"type": "integer"
},
"sku": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"type": {
"type": "string"
}
}
}
}
}
}
요청 예시:
- http
{
"notification_type": "create_external_transaction",
"order_id": 1,
"project_id": 51336,
"user": {
"external_id": "user_id",
"email": "public_email@test.com"
},
"items": [
{
"item_id": 101,
"sku": "mithril_dagger",
"quantity": 2,
"type": "virtual_good"
}
]
}
응답으로, custom_parameters
개체에서 추가 거래 매개변수를 전달할 수 있습니다.
예상 응답:
{
"id": "validation_transaction_info_response.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "DDH Project Transaction Info Response",
"type": "object",
"additionalProperties": true,
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"custom_parameters": {
"type": "object",
"additionalProperties": true,
"minProperties": 1,
"maxProperties": 200
}
}
}
응답 예시:
- http
{
"id":"123"
}
거래 ID 연결용 웹훅 매개변수 목록:
매개 변수 | 유형 | 설명 |
---|---|---|
notification_type | string | 알림 유형입니다. |
order_id | integer | 주문 ID. |
project_id | integer | 게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID. |
user.external_id | string | 게임 개발자측 사용자 ID. |
items | string | 사용자가 구매한 아이템 목록. |
items.sku | string | 아이템의 고유 식별자입니다. |
items.quantity | integer | 아이템 수량. |
items.type | string | 아이템 유형입니다. virtual_good , virtual_currency , physical_good , unit 값을 허용합니다. unit 유형은 게임에 사용됩니다. |
items.unit_items | array | 게임 데이터가 포함된 배열입니다. |
items.unit_items.type | string | 게임 키 패키지의 아이템 유형입니다. game_key 값을 허용합니다. |
items.unit_items.sku | string | 게임 키 패키지의 고유 식별자입니다. 특정 플랫폼의 게임의 경우 값은 sku_drm 형식입니다. Steam에서 sku가 110101인 게임의 경우 “sku”: “110101_steam” 입니다. |
구매 알림
사용자가 구매 비용을 지불할 경우 받게 되는 항목:- 결제 정보가 담긴 결제 웹훅.
- 인벤토리에 추가되는 아이템에 대한 정보가 담긴 장바구니 콘텐츠 웹훅.
배포 파트너 측의 통합
디지털 배포 솔루션 통합에 관심이 있는 경우 psbusiness@xsolla.com으로 통합 관리자에게 이메일을 보내거나 다음과 같이 디지털 배포 솔루션 API와 함께 작동하는 필수 매개변수를 가져옵니다.
연동하는 동안 결제 성공 또는 결제 취소에 대한 알림을 전송해야 합니다(9단계). 엑솔라 측에서 알림을 올바르게 처리하려면 알림을 전송하는 서버 IP 주소를 관리자에게 알려줘야 합니다. IP 주소가 변경되면 가능한 한 빨리 관리자에게 변경된 주소를 알려 주세요.
- 다음을 입력하기 위한 양식 표시:
- 게임 판매 시 사용자의 이메일 주소
- 인게임 아이템 판매 시 사용자의 이메일 주소 및 인게임 ID
- 사용자 ID는 가상 아이템, 인게임 재화, 아이템과 재화가 포함된 번들을 판매하는 프로젝트에 사용됩니다. 이 경우 사용자가 게임 등록 시 받은 아이디를 입력할 수 있도록 힌트를 표시하는 것도 필요합니다.
- 예시:
- 수신한 사용자 데이터 전달:
- 사용자 이메일 주소. 항상 필요.
- 사용자 인게임 ID. 인게임 아이템 판매 시 필요.
- 이 데이터는 게임에서 사용자의 존재를 확인하고 인증 토큰을 받는 데 사용됩니다.
- 사용자 토큰 생성 메서드를 사용합니다. 요청 시 다음 매개 변수 전달:
매개 변수 | 유형 | 설명 |
---|---|---|
project_id | integer | 게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID. |
user.email | string | 사용자 이메일 주소. |
user.id | string or null | 게임 내 고유한 사용자 ID. |
- 사용자 데이터가 포함된 권한 부여 토큰이 응답으로 반환됩니다.
- 가져오기:
- 게임 카탈로그. 게임 목록 가져오기 메소드 사용.
- 가상 아이템 카탈로그. 가상 아이템 가져오기 목록 메소드 사용.
- 인게임 재화 카탈로그. 인게임 재화 목록 가져오기 메소드 사용.
- 게임 혹은 인게임 아이템이 있는 번들의 카탈로그. 번들 목록 가져오기 메소드 사용.
- 요청에서, 2단계에서 받은 토큰과 다음 매개변수를 전달합니다.
매개 변수 | 유형 | 설명 |
---|---|---|
project_id | integer | 게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID. |
- 스토어프론트에 게임 및 인게임 아이템 카탈로그 표시. 인터페이스에서 다음을 선택하는 기능을 구현합니다.
- 게임 키의 수 및 게임 퍼블리싱 플랫폼
- 가상 아이템의 수
- 고정 금액의 재화가 들어있는 인게임 재화 또는 인게임 재화 패키지의 수
- 번들 수
- 장바구니를 사용하는 경우 사용자의 장바구니에 담는 아이템의 수량을 지정할 수 있습니다. 장바구니를 사용하지 않는 경우 카탈로그에서 아이템 수량을 선택할 수 있습니다.
- 장바구니에 담는 아이템 수량을 지정하는 예시:
- 카탈로그에 담는 아이템 수량을 지정하는 예시:
- 장바구니를 사용하지 않는 경우 6단계로 이동하여 특정 아이템으로 주문 생성하기 메소드를 사용합니다.
- 장바구니를 채우려면 장바구니에 아이템 채우기 메소드를 사용합니다.
- 사용자는 주문 내에서 아이템을 추가 및 제거할 수 있고, 수량을 변경할 수 있습니다. 귀하는 다음을 장바구니에 업데이트해야 합니다:
- 장바구니에 아이템 채우기 장바구니의 콘텐츠를 사용자가 변경할 때 메소드
- 장바구니를 업데이트하거나 아이템을 삭제할 때 메소드:
- 이 경우, 현재 사용자의 장바구니 가져오기를 하기 전에 장바구니를 업데이트합니다.
- 장바구니 채우기 및 업데이트 메소드에 대한 요청에서 다음 매개변수를 전달합니다.
매개 변수 | 유형 | 설명 |
---|---|---|
project_id | integer | 게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID. |
items.sku | string | 게임 개발자가 관리자 페이지에서 지정한 고유 아이템 식별자입니다. |
items.quantity | integer | 아이템 수량. |
items.type | string | 아이템 유형입니다. virtual_good , virtual_currency , physical_good , unit 값을 허용합니다. unit 유형은 게임에 사용됩니다. |
items.unit_items | array | 게임 데이터가 포함된 배열입니다. |
items.unit_items.type | string | 게임 키 패키지의 아이템 유형입니다. game_key 값을 허용합니다. |
items.unit_items.sku | string | 게임 개발자가 관리자 페이지에서 지정한 게임 키 패키지의 고유 식별자입니다. 특정 플랫폼의 게임의 경우 값은 sku_drm 형식입니다. Steam에서 sku가 110101인 게임의 경우 “sku”: “110101_steam” 입니다. |
- 장바구니에 아이템 채우기 또는 현재 사용자의 장바구니 가져오기를 요청한 뒤 응답이 선택된 제품의 업데이트된 정보를 반환합니다 —할인 전후 가격, 보너스 제품.
- 장바구니에서 주문을 생성하고 아이템 값을 지불하기 위해, 현재 장바구니의 모든 아이템으로 주문 생성하기 메소드를 사용합니다. 다음 매개 변수를 요청 시 전달합니다:
매개 변수 | 유형 | 설명 |
---|---|---|
project_id | integer | 게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID. |
| number | 엑솔라 측 배포 파트너 ID. |
| string | 주문 통화. 인게임 재화는 SKU를 사용하며 실질 통화는 세 자리 ISO 4217코드를 사용합니다. |
- 응답으로 주문 ID와 세금이 포함된 장바구니 가격을 반환합니다.
- 사용자에게 장바구니의 총 가격을 표시합니다.
- 플랫폼에서 사용자 자금을 인출합니다. 사용자에게 결제 상태를 표시합니다.
- 지불 알림을 전송합니다. 결제가 환불되었거나 완료되지 않은 경우 결제 취소 알림을 전송합니다.
- 엑솔라 측에서 알림을 올바르게 처리하려면 알림을 전송하는 서버 IP 주소를 엑솔라 관리자에게 알려줘야 합니다. IP 주소가 변경되면 가능한 한 빨리 관리자에게 알려 주세요.
오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.