디지털 배포 허브

개요

디지털 배포 허브 — 게임 개발자와 다수의 배포 파트너를 연결하는 솔루션으로 여기에는 게임, 가상 아이템, 인게임 재화를 배포할 수 있는 자체 플랫폼 또는 생태계가 있습니다.

배포 파트너 — 게임과 인게임 아이템을 배포할 수 있는 디지털 플랫폼 또는 생태계. 자체적인 엑솔라 배포 파트너의 예시:

  • 다수의 서비스를 포함한 슈퍼 앱
  • 뱅킹 애플리케이션
  • 전기 통신 및 인터넷 서비스 제공자
  • 현금 키오스크
  • 캐시백 및 보상 프로그램 제공자
  • 전자 상거래 시장

게임 개발자를 위한 혜택:

  • 빠르게 성장하는 배포 파트너와 직접 연결되어 게임 잠재 고객 확보 가능.
  • 게임을 고유한 사용자 베이스를 지닌 새로운 배포 채널에 추가하여 수입을 증가.
  • 광고와 배너를 통해 서드 파티 플랫폼에서의 유기적인 검색 가능성 향상.

배포 파트너를 위한 혜택:

  • 게임 콘텐츠 접속을 확장하여 사용자의 충성도 증가. 사용자는 게임 키, 가상 아이템, 인게임 재화 및 번들을 앱 또는 서비스에서 직접 구매할 수 있게 됩니다.
  • 현재 사용자 유지 및 게이밍 산업 인구 증가로 인한 새로운 사용자 유치.
  • 게이밍 산업 시장 내 가장 큰 규모 플레이어들의 게임 키, 가상 아이템, 인게임 재화 구매 수수료로 인한 수입 증가.

작동 방식

게임 키 구매 시 사용자 흐름

가상 아이템 및 인게임 재화 구매 시 사용자 흐름

상호작용 절차

  1. 게임 개발자는 게시자 계정에서 프로젝트를 생성하고 게임 키, 가상 아이템, 인게임 재화와 번들을 업로드합니다.
  2. 배포 파트너는 사용자 데이터를 요청합니다.
    • 키를 수신할 사용자의 이메일 주소
    • 아이템이 추가될 사용자의 인게임 ID
  3. 배포 파트너의 인터페이스에 있는 사용자가 키를 수신할 이메일 주소를 입력하거나 아이템을 수신할 사용자 ID를 입력합니다.
  4. 배포 파트너는 사용자 토큰 생성을 호출하고 이메일 주소 또는 사용자 ID를 매개변수로 전달합니다.
  5. 게임 개발자가 웹훅을 활성화한 경우 Xsolla는 사용자가 게임에 존재하는지 확인합니다. 게임 키 판매를 위한 웹훅 포함 여부는 선택 사항입니다. 단, 가상 아이템 및 인게임 재화를 판매하려면 웹훅을 포함해야 합니다.
  6. 엑솔라는 사용자 데이터로 토큰을 생성하고 생성한 토큰을 배포 파트너에게 전송합니다.
  7. 배포 파트너가 게임 카탈로그 혹은 인게임 아이템 카탈로그를 요청합니다.
  8. 엑솔라가 요청받은 카탈로그를 응답으로 반환합니다.
  9. 배포 파트너가 카탈로그를 수신한 후 이를 사용자에게 표시합니다.
  10. 사용자가 게임을 구매합니다. 배포 파트너는 장바구니를 생성합니다.
  11. 배포 파트너는 주문을 생성하기 위해 사용자의 장바구니를 전송합니다.
  12. 엑솔라는 주문 ID와 할인 및 세금이 포함된 장바구니 가격을 반환합니다.
  13. 배포 파트너는 장바구니에 담긴 게임의 총비용을 사용자에게 표시합니다.
  14. 사용자가 계속하여 지불 단계를 진행하면 배포 파트너가 사용자의 자금을 인출하고 결제 상태 페이지를 표시합니다.
  15. 배포 파트너는 주문이 결제되었음을 엑솔라에 알리고 결제 정보를 전송합니다.
  16. 엑솔라는 게임 개발자에게 구매 사실을 알립니다.
  17. 게임을 구매한 사용자는 구매 세부 정보가 포함된 이메일을 수신하게 되며 게임 키를 활성화할 수 있게 됩니다. 사용자가 가상 아이템이나 인게임 재화를 구매한 경우에는 해당 항목이 인벤토리에 추가됩니다.

게임 개발자 측 통합

디지털 배포 허브 연결 방법

배포 채널을 통해 게임 프로모션을 진행하는 방법:

  1. 게시자 계정에서 스토어를 연결한 후 다음을 다운로드합니다.
  2. 웹훅을 설정합니다.
  3. 프로젝트에서 디지털 배포 허브를 활성화하려면 계정 관리자에게 문의하거나 am@xsolla.com으로 이메일을 보내어 문의해 주세요.

Note
아직 엑솔라 파트너가 아니지만 협력 및 Digital Distribution Hub 연결에 관심이 있다면, business@xsolla.com로 이메일을 보내주시기 바랍니다.

웹훅 설정 방법

웹훅을 설정해야 합니다.

웹훅 활성화 방법:

  1. 게시자 계정에서 프로젝트를 엽니다.
  2. 사이드 메뉴에서 프로젝트 설정을 클릭한 후 웹훅으로 이동합니다.
  3. 웹훅 토글을 켜기로 설정합니다.
  4. 웹훅 URL을 지정합니다.
  5. 프로젝트 웹훅 서명에 사용하는 비밀 키가 기본으로 생성됩니다. 새 비밀 키를 생성하려면 새로 고침 아이콘을 클릭합니다.
  6. 설정 저장을 클릭합니다.

Note
가상 아이템과 인게임 재화를 배포하려면 웹훅 연결을 사용해야 합니다. 웹훅이 없으면 인게임 아이템을 사용자의 인벤토리에 추가할 수 없습니다.

사용자 유효성 검사

엑솔라가 사용자가 게임에 존재하는지 확인하기 위해 사용자 확인 웹훅을 전송합니다. 사용자 확인을 통해 수행 가능한 작업:

  • 응답으로 사용자 특성을 전달하는 경우 사용자 맞춤형 카탈로그 표시
  • 구매 후 사용자의 인벤토리에 아이템 추가

웹훅 수신 확인을 위해 서버에서 반환해야 하는 항목:

  • 메시지 본문이 없는 HTTP 코드 204. 사용자가 게임에 존재하는 경우
  • 문제를 설명하는 HTTP 코드 400. 특정 사용자를 찾을 수 없거나 잘못된 서명이 전달된 경우

전체 웹훅 목록과 메커니즘(예시 포함)에 대한 자세한 설명은 API 참조에서 확인할 수 있습니다 .

요청 본문 스키마:

Copy
Full screen
Small screen
    {
    "$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
      }
    }
    }

    응답 예시:

    Copy
    Full screen
    Small screen
    {
      "user_attributes": {
        "age": 18,
        "level": 1,
        "game": "WoW",
        "is_baned": false,
        "registration_date": "2022-01-01"
      }
    }

    트랜잭션 ID 연결 중

    외부 ID(시스템의 거래 ID)를 사용중이며 이를 엑솔라측의 거래 ID와 연결하려면 다음 웹훅 처리를 구현합니다.

    Copy
    Full screen
    Small screen
      {
        "$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", "null"]
              }
            }
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "integer"
                },
                "sku":  {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer"
                },
                "type": {
                  "type": "string"
                }
              }
            }
          }
        }
      }

      요청 예시:

      Copy
      Full screen
      Small screen
      {
        "notification_type": "create_external_transaction",
        "order_id": 1,
        "project_id": 51336,
        "user": {
          "external_id": "user_id",
          "email": null
        },
        "items": [
          {
            "item_id": 101,
            "sku": "mithril_dagger",
            "quantity": 2,
            "type": "virtual_good"
          }
        ]
      }

      예상 응답:

      Copy
      Full screen
      Small screen
        {
          "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
            }
          },
          "required": [
            "id"
          ]
        }

        응답 예시:

        Copy
        Full screen
        Small screen
        {
            "id":"123"
        }

        거래 ID 연결용 웹훅 매개변수 목록:

        매개 변수유형설명
        notification_type
        string알림 유형입니다.
        order_id
        integer주문 ID.
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.
        user.external_id
        string게임 개발자측 사용자 ID.
        items
        string사용자가 구매한 아이템 목록.
        items.sku
        array아이템 고유 ID. game_key 유형 아이템은 sku_drm 형식 값을 사용합니다.
        items.type
        array아이템 유형. 다음 값들을 가질 수 있습니다: virtual_good, virtual_currency, game_key, physical_good.
        items.quantity
        integer아이템 수량.

        구매 알림

        사용자가 구매 비용을 지불할 경우 받게 되는 항목:

        배포 파트너 측 통합

        디지털 배포 허브 통합에 관심이 있는 경우 psbusiness@xsolla.com으로 통합 관리자에게 이메일을 보내거나 다음과 같이 디지털 배포 허브 API와 함께 작동하는 필수 매개변수를 가져옵니다.

        Note
        배포 파트너는 Digital Distribution Hub API로 작업하기 위해 게시자 계정에 계정을 생성할 필요가 없습니다. 게시자 계정에 계정을 생성하는 것은 게임 개발자가 게임 키와 인게임 아이템 판매용 API 메소드를 사용하기 위해 필요합니다.

        앱 또는 서비스에서 게임이나 인게임 아이템을 배포하려면 다음 게임 구매 로직을 구현합니다.

        1. 인게임에서 사용자의 이메일 주소 혹은 사용자 ID를 입력하기 위한 양식 표시.
          이메일 주소는 게임 키와 게임 키 번들을 판매하는 프로젝트에 사용됩니다. 이 경우, 사용자가 DRM을 선택할 수 있는 옵션도 인터페이스에 구현해야 합니다.
          사용자 ID는 가상 아이템, 인게임 재화, 아이템 및 재화가 있는 번들을 판매하는 프로젝트에 사용됩니다. 이 경우, 사용자가 게임을 등록할 때 받은 ID를 입력하라는 힌트도 표시해야 합니다. 예:

        1. 수신한 이메일 주소 혹은 사용자 ID를 전달하여 사용자가 게임에 존재하는지 확인하고 인증 토큰을 수신합니다. 사용자 토큰 생성 메소드를 사용합니다. 요청의 매개변수를 전달합니다.

        매개 변수유형설명
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.
        user.email
        string사용자 이메일 주소.
        user.id
        string or null게임 내 고유한 사용자 ID.

        1. 응답으로 사용자 데이터가 포함된 인증 토큰을 반환합니다.

        1. 가져오기:

        1. 요청에서, 2단계에서 받은 토큰과 다음 매개변수를 전달합니다.

        매개 변수유형설명
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.

        1. 스토어에 게임 및 인게임 아이템 카탈로그 표시. 인터페이스에서 다음을 선택하는 기능을 구현합니다.
          • 게임 키의 수
          • 인게임 아이템의 수
          • 인게임 재화 혹은 고정 금액의 재화가 들어있는 인게임 재화 패키지의 수
          • 번들의 수

        1. 장바구니를 사용하는 경우 사용자의 장바구니에 담기는 아이템의 수량을 지정할 수 있습니다. 장바구니를 사용하지 않는 경우 카탈로그에서 아이템 수량 선택을 구현할 수 있습니다.

        1. 장바구니에 담기는 아이템 수량을 지정하는 예시:

        1. 카탈로그에 담기는 아이템의 수량을 지정하는 예시:

        1. 장바구니를 사용하지 않는 경우 6단계로 이동하여 특정 아이템으로 주문 생성하기 메소드를 사용합니다.

        1. 장바구니를 채우려면 장바구니에 아이템 채우기 메소드를 사용합니다.

        1. 사용자는 주문 내에서 아이템을 추가 및 제거할 수 있고, 수량을 변경할 수 있습니다. 귀하는 다음을 장바구니에 업데이트해야 합니다:

        1. 이 경우, 현재 사용자의 장바구니 가져오기를 하기 전에 장바구니를 업데이트합니다.

        1. 장바구니 채우기 및 업데이트 메소드에 대한 요청에서 다음 매개변수를 전달합니다.

        매개 변수유형설명
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.
        items.sku
        string아이템 고유 ID. game_key 유형 아이템은 sku_drm 형식 값을 사용합니다.
        items.quantity
        integer아이템 수량.

        1. 장바구니에 아이템 채우기 또는 현재 사용자의 장바구니 가져오기를 요청한 뒤 응답이 선택된 제품의 업데이트된 정보를 반환합니다 —할인 전후 가격, 보너스 제품.

        1. 장바구니에서 주문을 생성하고 아이템 값을 지불하기 위해, 현재 장바구니의 모든 아이템으로 주문 생성하기 메소드를 사용합니다. 다음 매개 변수를 요청 시 전달합니다:

        매개 변수유형설명
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.
        geotype
        number엑솔라 측 배포 파트너 ID.
        currency
        string주문 통화. 인게임 재화는 SKU를 사용하며 실질 통화는 세 자리 ISO 4217코드를 사용합니다.

        1. 응답으로 주문 ID와 세금이 포함된 장바구니 가격을 반환합니다.

        Note
        특정 아이템으로 주문 생성하기 메소드를 사용하여 장바구니를 생성하지 않고 주문을 생성할 수 있습니다. 이 경우, 사용자는 한 유형의 아이템만 구매할 수 있습니다.

        1. 사용자에게 총 장바구니 가격을 게시합니다.
        2. 사용자의 자금을 귀하의 플랫폼에서 인출합니다. 지불 상태를 사용자에게 게시합니다.
        3. 지불 안내를 보내고 다음 매개 변수를 전달합니다:

        매개 변수유형설명
        project_id
        integer게임 키 또는 게임 키가 포함된 번들, 인게임 아이템, 인게임 아이템이 포함된 번들이 로드되는 프로젝트의 ID.
        payment.amount
        integer결제 금액.
        order_id
        integer주문 ID.
        ps_transaction_id
        string배포 파트너측 거래 ID.
        이 기사가 도움이 되었나요?
        감사합니다!
        개선해야 할 점이 있을까요? 메시지
        유감입니다
        이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
        의견을 보내 주셔서 감사드립니다!
        메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
        이 페이지 평가
        이 페이지 평가
        개선해야 할 점이 있을까요?

        답하기 원하지 않습니다

        의견을 보내 주셔서 감사드립니다!
        마지막 업데이트: 2022년 6월 3일

        오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누릅니다.