The following documentation was deprecated. Current version is available at developers.xsolla.com
CURL
HTTP
PHP
JS

소개

Xsolla API는 REST 를 기반으로 구성되어 있습니다. 예측 가능한 리소스 중심의 URL과 함께 API 오류를 HTTP 응답 코드로 표시하도록 구성된 API입니다.

HTTP 인증 및 HTTP 동사(verb) 등 상용 HTTP 클라이언트가 이해할 수 있는 기본 HTTP 기능을 사용하며, 교차 원본(cross-origin) 리소스 공유를 지원하여 개발자가 클라이언트측 웹 애플리케이션에서 API 와 보안된 상호작용을 할 수 있도록 했습니다.

오류를 포함한 API의 모든 응답에서 JSON 이 반환됩니다.

Endpoint 경로

Xsolla API Endpoint는 베이스 URL https://api.xsolla.com 에서 호스팅됩니다. 예를 들어 List 프로젝트 Endpoint의 전체 경로는 https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/projects 입니다.

대부분의 Endpoint 경로에는 판매자를 확인할 수 있는 merchant_id 파라미터가 포함되어 있습니다.

API Endpoint

https://api.xsolla.com
https://api.xsolla.com
https://api.xsolla.com

요청및응답

Xsolla API Endpoint 요청은 다음 HTTP 헤더에 포함되어야 합니다: Authorization, Accept

POST와 PUT 요청은 추가적으로 다음 헤더를 포함해야 합니다. Content-Type: application/json

기본적으로 모든 Endpoint 응답은 응답 본문에 있는 JSON 으로 데이터를 제공하며 Content-Type: application/json 헤더를 포함합니다.

Headers

Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json
Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json
Authorization: Basic AUTHORIZATION_BASE64_ENCODED_STRING
Accept: application/json
Content-Type: application/json

API 변경사항

Xsolla는 API로 기능을 변경할 수 있습니다:

  • Xsolla는 새로운 API 자원을 추가할 수 있습니다;

  • Xsolla는 선택적 요청 매개변수를 추가할 수 있습니다;

  • Xsolla는 기존 API 응답에 대한 새로운 속성을 추가할 수 있습니다;

  • Xsolla는 나열된 값들의 묶음들로 이루어진 기존 매개변수에 새 값들을 추가할 수 있습니다;

  • Xsolla는 JSON에 새 webhook 타입들과 매개변수들을 추가할 수 있습니다;

  • Xsolla는 선택적 HTTP 요청 헤더를 추가할 수 있습니다;

  • Xsolla는 유효한 매개변수에 유효하지 않은 매개변수 값이 포함된 요청을 거부할 수 있습니다;

  • 지나치게 관대한 파싱으로 인해 승인된 부적절한 형식의 요청들은 파싱로직이 올바르다면 거부될 수도 있습니다;

  • Xsolla는 언제든지 문서화되지 않은 기능을 추가, 변경 또는 제거할 수 있습니다.

당신의 고객은 이러한 변경사항과 관계없이 계속 운영할 수 있어야만 합니다. 예를 들어, 클라이언트가 알아채지 못한 새로운 JSON 매개변수로 인해 제대로 동작하는 능력이 방해받지는 않습니다.

버전 관리

모든 Xsolla API 방식은 버전 관리를 지원합니다. 현재 버전과 호환되지 않는 변경 사항이 있을 때마다 새 버전을 발행합니다. 이러한 버전은 "v1"/"v2" 등으로 식별하며 URL에 "/merchant"와 같은 식별자가 붙습니다.

API를 처음으로 사용하는 경우 최신 버전을 사용하도록 합니다. 버전을 생략하는 경우, 기본값으로 첫 번째 버전을 사용합니다. 동일한 버전을 사용하는 경우에만 API 무결성이 보장됩니다.

인증

Xsolla 는 HTTP Basic Authentication 을 사용합니다. 기본 인증 사용자 이름에 판매자 ID를 입력하고, 암호에 API key(Xsolla 판매자 계정 의 설정 페이지에 있음) 를 입력합니다.

모든 API 요청은 HTTPS를 통해 이뤄져야 합니다. 일반 HTTP를 통한 호출은 불가합니다.

모든 요청에 대한 인증이 필요합니다.

API에 연결하기 위해서는 TLS 1.2 버전 이상을 사용하셔야 함에 유의하십시오.

예제

<?php

use Xsolla\SDK\API\XsollaClient;

$xsollaClient = XsollaClient::factory(array(
    'publisher_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
GET /merchant/v2/merchants/{merchant_id}/events/messages HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages' \
-X GET \
-u merchant_id:merchant_api_key

Endpoint 형식

Endpoint 형식이란 처리할 데이터 형식과 해당 데이터에서 수행하는 작업을 나타냅니다. 가장 일반적인 작업은 다음과 같습니다:

작업 HTTP 메서드 설명
Create
POST 해당 형식의 엔터티를 생성하고 유지합니다.
List
GET 입력한 쿼리 파라미터와 일치하는 모든 엔터티에 대한 요약 정보가 리턴됩니다. 특정 엔터티에 대한 전체 정보를 얻으려면 먼저 List endpoint를 통해 엔터티 ID를 가져온 다음 해당 Retrieve endpoint에 ID를 입력합니다.
Retrieve
GET 입력한 식별자와 일치하는 단일 엔터티에 대한 전체 정보를 제공합니다.
Replace
PUT 입력한 식별자와 일치하는 기존 엔터티의 모든 필드를 수정합니다.
Update
PATCH 입력한 식별자와 일치하는 기존 엔터티의 모든 필드를 수정합니다.
Delete
DELETE 입력한 식별자와 일치하는 기존 엔터티를 삭제합니다.

날짜 형식

모든 날짜는 ISO 8601 형식의 문자열로 표현합니다.

UTC(예: 2013-01-15T00:00:00Z) 또는 UTC에 시차를 가감한(UTC보다 8시간 늦을 경우의 예: 2013-01-15T00:00:00-08:00) 날짜 문자열을 입력하여 시간대를 표시할 수 있습니다. 시차를 가감한 날짜를 입력할 때는 정확한 서머 타임을 고려하도록 하십시오.

페이징

List endpoint 리스트는 리턴한 결과에 페이지를 매길 수도 있습니다. 이 말은 전체 결과를 단일 응답으로 리턴하지않고, 다음 결과와 연결된 응답 헤더와 함께 일부 결과만 리턴 할수있다는 뜻입니다. 이를 위해 offset 및 limit 파라미터 가 사용됩니다.

후속요청(모든 일반헤더포함)을 다음URL에 보내 그 다음 결과를 가져옵니다. 다음 URL 없이 응답을 수신할 때까지 이 과정을 반복합니다.

오류 처리

Xsolla는 기본 HTTP 응답 코드를 사용하여 API 요청의 성공 또는 실패를 표시합니다. 일반적으로 2xx 코드는 성공을 뜻하고, 4xx 코드는 입력한 정보로 인한 오류(예: 필수 파라미터 누락, 인증 실패 등)를 나타내며, 5xx 코드는 Xsolla 서버와 관련된 오류를 나타냅니다.

하지만 모든 오류를 HTTP응답 코드에 명확히 대응시킬 수 있는 것은 아닙니다. 올바른 요청인 경우에도 성공적으로 완료되지 않으면 422 오류가 반환됩니다.

모든 API 오류 응답은 json 개체에 다음 필드를 제공합니다.

이름 유형 설명
http_status_code
int HTTP 코드
message
string 판독 가능한 메시지로서 오류를 설명합니다. 이 메시지는 항상 영문입니다. 특정 오류에 대한 설명은 나중에 변경될 수도 있습니다.
extended_message
string 오류에 대한 확장된 설명입니다.
request_id
string 당사에서 문제를 진단하는 데 도움이 되도록 사용되는 고유한 ID입니다.

지원되는 HTTP 오류 목록:

  • 200, 201, 204 - 모두 예상대로 작동합니다.
  • 400 Bad Request - 필수 파라미터가 자주 누락됩니다.
  • 401 Unauthorized - 올바른 API key를 입력하지 않았습니다.
  • 402 Request Failed - 올바른 파라미터지만 요청이 실패했습니다.
  • 403 Forbidden - 권한이 부족합니다.
  • 404 Not Found - 요청 항목이 없습니다.
  • 409, 422 - 올바른 파라미터가 아닙니다.
  • 500, 502, 503, 504 Server errors - 알 수 없는 문제가 발생했습니다.

토큰

보다 안전한 결제를 위해 Xsolla 결제 API는 결제 페이지에서 직접 HTTP GET 요청을 통해 데이터를 수신하는 대신 결제 파라미터 목록과 토큰을 사용합니다. 결제 페이지를 호출하기 전에 새 토큰을 가져와야 합니다. 토큰의 유효기간은 24시간.

Xsolla는 어떠한 게임유저 파라미터로도 토큰을 생성할 수 있게 제공합니다. 개발자가 이 파라미터를 전송하면 결제 후 파라미터가 수신됩니다. 토큰에는 모든 게임유저 파라미터가 포함되어 있습니다.

파라미터 유형 설명
user
object 게임유저 데이터와 관련된 값입니다.
user.id
object 게임유저 ID 데이터와 관련된 값입니다. (필수)
user.id.value
string 게임유저 ID입니다.
user.id.hidden
boolean 결제 UI에서 이 요소를 숨길 수 있는지 여부를 나타냅니다. 기본값은 'True'입니다.
user.id.allow_modify
boolean 결제 UI에서 게임유저가 필드를 수정할 수 있는지 여부를 나타냅니다. 기본값은 'False'입니다.
user.name
object 게임유저 닉네임 데이터와 관련된 값입니다.
user.name.value
string 게임유저 닉네임입니다.
user.name.hidden
boolean 결제 UI에서 이 요소를 숨길 수 있는지 여부를 나타냅니다. 기본값은 'True'입니다.
user.name.allow_modify
boolean 결제 UI에서 게임유저가 필드를 수정할 수 있는지 여부를 나타냅니다. 기본값은 'False'입니다.
user.email
object 게임유저 이메일 데이터와 관련된 값입니다.
user.email.value
string 게임유저 이메일입니다.
user.email.hidden
boolean 결제 UI에서 이 요소를 숨길 수 있는지 여부를 나타냅니다. 기본값은 'True'입니다.
user.email.allow_modify
boolean 결제 UI에서 게임유저가 필드를 수정할 수 있는지 여부를 나타냅니다. 기본값은 'False'입니다.
user.country
object 게임유저 국가 데이터와 관련된 값입니다.
user.country.value
string 게임유저 국가입니다. ISO 3166-1 alpha-2 standard 에 따른 2자로 된 국가 코드를 사용합니다.
user.country.allow_modify
boolean 결제 UI에서 게임유저가 국가를 변경할 수 있는지 여부를 나타냅니다. 기본값은 'False'입니다.
user.attributes
object 게임유저 특성 데이터와 관련된 객체로서 아이템 목록을 필터링하는데 사용됩니다. 키값 쌍을 가진 올바른 JSON 해시여야 합니다.
user.steam_id
object 게임유저 Steam ID 데이터와 관련된 값입니다.
user.steam_id.value
string Steam ID입니다.
user.tracking_id
object 사용자 추적 ID에 대한 데이터가 포함된 값입니다.
user.tracking_id.value
string 고유한 추적 ID(마케팅 캠페인에 사용됨)입니다.
user.public_id.value
string 사용자를 고유하게 식별할 수 있고 사용자 ID(이메일, 애칭 등)와 달리 사용자에 대해 알려진 매개 변수입니다. 이 매개 변수는 게임 스토어 외부(예: 캐시 키오스크의 게임 버튼)에서 구매할 수 있을 때 사용됩니다.
user.utm
object 트래픽 성향을 나타내는 데이터를 포함한 오브젝트.
user.utm.utm_source
string 트래픽 소스
user.utm.utm_medium
string 트래픽 채널(맥락 이해 광고, 언론 광고, 이메일 목록 메시지).
user.utm.utm_campaign
string 캠페인 제목. 이 항목은 음차한 캠페인 제목이나 영어로 번역한 캠페인 제목을 포함해야 합니다.
user.utm.utm_term
string 캠페인 키워드. 이 항목을 지정할 경우 광고 캠페인 목표 설정에 사용된 키워드 데이터에 기반하여 통계가 만들어집니다. Google Ananlytics에서는 utm_term 라벨 콘텐츠가 검색어를 포함한 일반 보고서의 일부가 됩니다.
user.utm.utm_content
string 캠페인 구성 요소.
settings
object 사용자 지정 프로젝트 설정와 관련된 객체입니다.
settings.external_id
string 트랜잭션 외부 ID.
settings.project_id
int Xsolla 시스템 내의 게임 식별자입니다. 판매자 계정 에서 확인할 수 있습니다. (필수)
settings.language
string 인터페이스 언어입니다. ISO 639-1 standard 에 따른 2자로 된 언어 코드입니다.
settings.return_url
string 사용자는 결제 후 이 페이지로 리디렉트됩니다. 파라미터 "user_id", "foreinginvoice", "invoice_id"(와)과 "status"(은)는 자동으로 링크에 추가됩니다.
settings.currency
string 선호하는 결제 통화입니다. ISO 4217 에 따른 3자로 된 통화 코드를 사용합니다.
settings.mode
string 결제 프로세스를 테스트하기 위한 "sandbox" 값을 설정합니다. 참고로 결제 UI의 URL은 https://sandbox-secure.xsolla.com 이 됩니다.
settings.payment_method
int 결제 수단의 ID입니다.
settings.payment_widget
string 결제 위젯. '페이바이캐쉬(paybycash)' 혹은 '기프트카드(giftcard)'일 수 있습니다. 한도가 설정되면, 사용자는 각각 페이바이캐쉬(Pay by Cash) 혹은 기프트 카드(Gift Cards) 위젯으로 다시 보내집니다.
settings.ui
object 인터페이스 설정 데이터와 관련된 값입니다.
settings.ui.size
string 결제 UI의 크기입니다. 이 매개 변수는 결제 UI의 필요한 크기에 따라 값이 다음과 같을 수 있습니다.
  • small: 결제 UI의 가능한 최소 크기입니다. 창 크기가 엄격히 제한되는 경우 이 값을 사용합니다. (크기: 620 x 630)
  • medium: 결제 UI의 권장 크기입니다. 이 값을 사용하여 라이트박스에 결제 UI를 표시합니다. (크기: 740 x 760)
  • large: 새 창 또는 탭에 결제 UI 표시를 위한 최적의 크기입니다. (크기: 820 x 840)
settings.ui.theme
string 결제 UI의 모양 테마입니다. 'default' (기본값) 또는 'dark'가 가능합니다.
settings.ui.version
string 장치 유형입니다. 'desktop' (기본값) 또는 'mobile'이 가능합니다.
settings.ui.desktop
object PC 버전의 인터페이스 설정 데이터와 관련된 값입니다.
settings.ui.desktop.header
object 헤더 설정 데이터와 관련된 값입니다.
settings.ui.desktop.header.is_visible
boolean 결제 UI에 헤더가 표시되는지 여부를 나타냅니다.
settings.ui.desktop.header.visible_logo boolean True 일 경우, 로고가 헤더에 표시됩니다(먼저 관리자에게 로고 파일을 제공할 것).
settings.ui.desktop.header.visible_name
boolean 프로젝트 이름이 헤더에 표시되는지 여부를 나타냅니다.
settings.ui.desktop.subscription_list
object 정기 결제 목록 설정 데이터와 관련된 값입니다.
settings.ui.desktop.subscription_list.layout
string 정기 결제 목록 패턴입니다. 'list' (기본값) 또는 'grid'가 가능합니다.
settings.ui.desktop.subscription_list.description
string 정기결제에 관한 어떠한 텍스트도 이곳에서 전달할 수 있습니다. 정기 결제 요금제 목록 위에 텍스트가 표시됩니다.
settings.ui.desktop.subscription_list.display_local_price
boolean true인 경우 및 사용자의 현지 통화가 정기결제 플랜의 통화와 다른 경우, 사용자는 현지 통화의 가격 및 기본 통화의 가격과 같이 두 가지 가격을 볼 수 있습니다.
settings.ui.desktop.virtual_item_list
object 게임 아이템 목록 설정 데이터와 관련된 값입니다.
settings.ui.desktop.virtual_item_list.layout
string 게임 아이템 목록 패턴입니다. 'list' (기본값) 또는 'grid'가 가능합니다.
settings.ui.desktop.virtual_items_list.view
string 가상 아이템 그룹을 수직/수평 메뉴로 표시합니다. 'horizontal_navigation' 또는 'vertical'(기본)이 가능합니다.
settings.ui.desktop.virtual_currency_list
object 게임머니 목록 설정 데이터와 관련된 값입니다.
settings.ui.desktop.virtual_currency_list.description
string 게임머니 목록에 관한 어떠한 텍스트도 이곳에서 전달할 수 있습니다. 게임머니 패키지 목록 위에 텍스트가 표시됩니다.
settings.ui.desktop.virtual_currency_list.button_with_price
boolean true인 경우, 가격이 버튼에 표시됩니다. false인 경우, 가격이 버튼 왼쪽에 표시됩니다. 기본적으로 False입니다.
settings.ui.header.visible_virtual_currency_balance
boolean 결제 UI에서 이 요소를 숨길 수 있는지 여부를 나타냅니다. 기본값은 ‘True’입니다.
settings.ui.mobile.mode
string 사용자는 저장된 결제 방법을 통해서만 결제를 할 수 있습니다. 'saved_accounts'일 수 있습니다.
settings.ui.mobile.header.close_button
boolean 십자 버튼을 표시하는지 관계없이, 이 버튼을 누르면 결제 인터페이스가 닫히고 사용자는 'settings.return_url' 매개 변수에서 지정된 URL로 리디렉션됩니다(기본적으로 False).
settings.ui.mobile.footer.is_visible
boolean 모바일 버전의 결제 UI에서 바닥글을 표시하거나 숨길지 여부입니다.
settings.ui.license_url
string EULA의 링크입니다.
settings.ui.components
object 모듈 메뉴 설정 데이터와 관련된 값입니다.
settings.ui.components.virtual_items
object 게임 아이템 모듈 설정 데이터와 관련된 값입니다.
settings.ui.components.virtual_items.order
int 모듈 메뉴에서 게임 아이템의 위치입니다.
settings.ui.components.virtual_items.hidden
boolean 모듈 메뉴에 게임 아이템을 표시하는지 여부를 나타냅니다.
settings.ui.components.virtual_items.selected_group
string 게임유저가 게임 아이템 탭을 열었을 때 선택되는 그룹입니다.
settings.ui.components.virtual_items.selected_item
string 게임유저가 게임 아이템 탭을 열었을 때 선택되는 아이템입니다. 아이템 SKU는 이곳에서 보내야 합니다.
settings.ui.components.virtual_currency
object 게임머니 모듈 설정 데이터와 관련된 값입니다.
settings.ui.components.virtual_currency.order
int 모듈 메뉴에서 게임머니의 위치입니다.
settings.ui.components.virtual_currency.hidden
boolean 모듈 메뉴에 게임머니를 표시하는지 여부를 나타냅니다.
settings.ui.components.subscriptions
object 정기 결제 모듈 설정 데이터와 관련된 값입니다.
settings.ui.components.subscriptions.order
int 모듈 메뉴에서 정기결제의 위치입니다.
settings.ui.components.subscriptions.hidden
boolean 모듈 메뉴에 정기결제를 표시하는지 여부를 나타냅니다.
settings.ui.mode
string 사용자 계정의 결제 인터페이스입니다. 가능한 값은 'user_account'입니다. 헤더에는 제품을 선택하거나 결제를 하기 위한 옵션 없이 사용자 계정의 탐색 메뉴만 포함되어 있고, 사용자 계정은 데스크톱 모드에서만 사용 가능합니다.
settings.ui.user_account
object 사용자 계정에 관한 데이터가 담긴 객체
settings.ui.user_account.info
object ‘내 계정’ 페이지입니다.
settings.ui.user_account.info.order
int 메뉴의 ‘내 계정’ 페이지 위치입니다.
settings.ui.user_account.info.enable
boolean 메뉴의 ‘내 계정’ 페이지를 표시하거나 숨길지 여부입니다.
settings.ui.user_account.history
object 사용자의 ‘기록’ 페이지입니다.
settings.ui.user_account.history.order
int 메뉴의 ‘기록’ 페이지 위치입니다.
settings.ui.user_account.history.enable
boolean 메뉴의 ‘기록’ 페이지를 표시하거나 숨길지 여부입니다.
settings.ui.user_account.payment_accounts
object ‘내 결제 계정’ 페이지입니다.
settings.ui.user_account.payment_accounts.order
int 메뉴의 ‘내 결제 계정’ 페이지 위치입니다.
settings.ui.user_account.payment_accounts.enable
boolean 메뉴의 ‘내 결제 계정’ 페이지를 표시하거나 숨길지 여부입니다.
settings.ui.user_account.subscriptions
object ‘구독 관리’ 페이지입니다.
settings.ui.user_account.subscriptions.order
int 메뉴의 ‘구독 관리’ 페이지 위치입니다.
settings.ui.user_account.subscriptions.enable
boolean 메뉴의 ‘구독 관리’ 페이지를 표시하거나 숨길지 여부입니다.
settings.shipping_enabled
boolean 배송 주소 양식을 표시할 지를 설정. 기본으로 'False'으로 설정
purchase
object 구매 데이터 관련 값입니다.
purchase.virtual_currency
object 게임머니 데이터와 관련된 값입니다.
purchase.virtual_currency.quantity
float 게임머니 구매량입니다.
purchase.virtual_currency.currency
string 모든 계산이 이루어지는 사항에 기반한, 게임머니 통화 패키지의 통화입니다.
purchase.virtual_items
object 게임 아이템 구매 데이터와 관련된 값입니다.
purchase.virtual_items.currency
string 모든 계산이 이루어지는 사항에 기반한, 구매에서 가상 항목의 통화입니다.
purchase.virtual_items.items
array 아이템 구매 데이터와 관련된 배열입니다.
purchase.virtual_items.items.sku
string 아이템 ID입니다.
purchase.virtual_items.items.amount
int 아이템 수량입니다.
purchase.virtual_items.available_groups
array 아이템 그룹 ID 관련 배열입니다. 지정된 그룹의 아이템만 결제 UI에 표시됩니다.
purchase.subscription
object 정기결제 데이터 관련 값입니다.
purchase.subscription.plan_id
string 요금제 ID입니다.
purchase.subscription.product_id
string 상품 ID입니다.
purchase.subscription.currency
string 구매 시 플랜의 통화, 이를 바탕으로 모든 계산이 수행됩니다.
purchase.subscription.available_plans
string 구독권에 대한 데이터가 있는 배열입니다. 오직 이러한 구독권만 결제 UI에 보여집니다.
purchase.subscription.trial_days
int 일 수로 표시되는 트라이얼 기간. 구독을 생성할 때만, 그리고 트라이얼 기간이 정의 없이 요금제 용으로만 사용됩니다.
purchase.pin_codes
object PIN 코드에 데이터가 포함된 값입니다.
purchase.pin_codes.currency
string 모든 계산이 이루어지는 사항에 기반한, 구매에서 PIN 코드의 통화입니다.
purchase.pin_codes.codes
array PIN 코드에 대한 데이터가 포함된 배열입니다.
purchase.pin_codes.codes.digital_content
string 판매자 계정으로 설정된 게임의 SKU입니다.
purchase.pin_codes.codes.drm
string 게임이 사용 가능해야 하는 DRM입니다. 'steam', 'playstation', 'xbox', 'uplay', 'origin' 또는 'drmfree'일 수 있습니다. 판매자 계정에서 필요한 DRM을 구성했는지 확인하십시오. 이 매개 변수가 토큰으로 전달되지 않는 경우 사용자가 결제 인터페이스에서 DRM을 선택할 수 있습니다.
purchase.checkout
object 결제 파라미터 데이터와 관련된 값입니다.
purchase.checkout.currency
string 구매 통화입니다. ISO 4217에 따른 3자로 된 통화 코드를 사용합니다.
purchase.checkout.amount
float 구매 금액입니다.
purchase.description
object 구매 설명 데이터와 관련된 값입니다.
purchase.description.value
string 구매 설명입니다. UI와 이메일에 표시됩니다.
purchase.gift
object 기프트에 대한 데이터를 포함하고 있는 객체입니다.
purchase.gift.giver_id
string 제공자 ID.
purchase.gift.message
string 제공자로부터 전송된 메시지.
purchase.gift.hide_giver_from_receiver
string 수신자에서 제공자 ID를 숨길지 여부(기본으로 'true')
purchase.gift.friends
array 친구에 대한 데이터를 포함하고 있는 어레이.
purchase.gift.friends.id
string ID.
purchase.gift.friends.name
string 별칭.
purchase.gift.friends.email
string 기프트 수령인 이메일.
custom_parameters
object 사용자 지정 파라미터입니다. 키와 값을 쌍으로 가진 올바른 JSON 해시여야 합니다.

파라미터가 잘못된 형식 또는 유형으로 전송되는 경우 토큰이 제공되지 않게 됩니다. 응답으로, json 본문에 설명된 오류와 함께 422 HTTP 코드를 받게 됩니다. "extended_message"에서 잘못 전송된 매개 변수가 정확히 무엇인지에 대한 정보가 제공됩니다.

{ "extended_message": { "global_errors": [], "property_errors": { "settings.project_id": [ "string value found, but an integer is required" ] } } }

요청

<?php

use Xsolla\SDK\API\XsollaClient;
use Xsolla\SDK\API\PaymentUI\TokenRequest;

$tokenRequest = new TokenRequest($projectId, $userId);
$tokenRequest->setUserEmail('email@example.com')
    ->setExternalPaymentId('12345')
    ->setSandboxMode(true)
    ->setUserName('USER_NAME')
    ->setCustomParameters(array('key1' => 'value1', 'key2' => 'value2'));

$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
$token = $xsollaClient->createPaymentUITokenFromRequest($tokenRequest);
POST /merchant/v2/merchants/{merchant_id}/token HTTP/1.1
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
  "user": {
          "id": {
              "value": "1234567",
              "hidden": true
          },
          "email": {
              "value": "email@example.com",
              "allow_modify": true,
              "hidden": false
          },
          "country": {
              "value": "US"
          }
      },
      "settings": {
          "project_id": 14004,
          "language":"en",
          "currency":"USD",
          "ui": {
              "size":"medium"
          }
      },
      "purchase": {
          "virtual_currency": {
              "quantity": 100
          },
          "virtual_items": {
              "items": [{
                  "sku":"SKU01",
                  "amount":1
              }]
          },
          "description": {
              "value": "Test Purchase"
          }
      },
      "custom_parameters": {
          "parameter1": "value1"
      }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
  "user": {
      "id": {
          "value": "1234567",
          "hidden": true
      },
      "email": {
          "value": "email@example.com",
          "allow_modify": true,
          "hidden": false
      },
      "country": {
          "value": "US"
      }
  },
  "settings": {
      "project_id": 14004,
      "language":"en",
      "currency":"USD",
      "ui": {
          "size":"medium"
      }
  },
  "purchase": {
      "virtual_currency": {
          "quantity": 100
      },
      "virtual_items": {
          "items": [{
              "sku":"SKU01",
              "amount":1
          }]
      },
      "description": {
          "value": "Test Purchase"
      }
  },
  "custom_parameters": {
      "parameter1": "value1"
  }
    }'

응답

<?php

// example response
$token = 'uV0iCEvWkUGVqWerTgbrndWePOMiLAfO';
HTTP/1.1 200 OK
Content-Type: application/json

{
    "token": "uV0iCEvWkUGVqWerTgbrndWePOMiLAfO"
}
{
    "token": "uV0iCEvWkUGVqWerTgbrndWePOMiLAfO"
}

추가 매개변수 나열

사기 방지 필터를 구성하기 위해 토큰에 추가 매개변수를 전달할 수 있습니다. 권장하는 매개변수는 아래 표에 제시되어 있습니다. 필요에 따라 목록을 확장할 수 있습니다.

이름 유형 설명
registration_date
string ISO 8601에 따른 계정 생성일.
total_hours
int 총 인게임 시간.
total_characters
int 인게임 캐릭터 수.
social_networks_added
boolean 플레이어가 소셜 미디어 프로필을 연결했는지 여부.
profile_image_added
boolean 플레이어가 프로필 이미지를 업로드했는지 여부.
last_active_date
string ISO 8601에 따른 마지막 확인 날짜.
total_friends
int 친구의 수.
additional_verification
boolean 플레이어가 계정 확인 절차를 사용하고 있는지 여부.
win_rate
int 승률
last_change_password_date
string ISO 8601에 따른 마지막 암호 변경 날짜.
chat_activity
boolean 플레이어의 채팅 기능 사용 여부.
forum_activity
boolean 플레이어가 프로필 이미지를 업로드했는지 여부.
total_bans
int 플레이어가 채팅/포럼에서 금지된 횟수.
profile_completed
boolean 플레이어가 프로필에 추가 정보를 추가했는지 여부.
notifications_enabled
boolean 플레이어가 알림을 활성화했는지 여부.
user_level
int 플레이의 레벨, 명성 또는 순위.
karma_points
int 플레이어의 카르마.
total_sum
float 총 결제 금액.
non_premium_currency
float 프리미엄이 아닌 통화의 금액.
total_game_events
int 플레이어가 참여했던 인게임 이벤트의 수.
total_gifts
int 플레이어가 전송/수신한 인게임 선물의 수.
tutorial_completed
boolean 플레이어가 게임 튜토리얼을 완료했는지 여부.
completed_tasks
int 완료한 임무/목표의 수.
items_used
boolean 플레이어가 구매한 인게임 아이템을 사용하고 있는지 여부.
pvp_activity
boolean 플레이어가 PvP 전투에 참여하고 있는지 여부.
total_clans
int 플레이어가 가입한 클랜의 수.
unlocked_achievements
int 잠금을 해제한 업적의 수.
total_inventory_value
float 인벤토리의 총 가치(인게임 통화).
character_customized
boolean 플레이어가 자신의 캐릭터를 맞춤 설정했는지 여부.
session_time
string ISO 8601에 따른 평균 세션 시간.

Pay Station UI

Xsolla 팀은 개발자 웹 사이트와 결제 인터페이스의 연동을 단순화하기 위한 스크립트를 제공합니다. 스크립트는 저희 CDN에 위치해 있으며 이곳 에서 구할 수 있습니다. . 스크립트를 개발자 웹 사이트와 연동하려면 이 URL을 사용하십시오. 자세한 내용을 알아보려면 repository on Github 를 확인해 보십시오.

스크립트 초기화 파라미터 목록:

파라미터 유형 설명
access_token
string Pay Station용 토큰으로서 API에 의해 수신됩니다. Required.
sandbox
boolean 결제 프로세스를 테스트하려면 true로 설정해야 합니다. secure.xsolla.com 대신 sandbox-secure.xsolla.com이 사용됩니다.
lightbox
object 옵션 목록 관련 객체로서, Lightbox 열기에 사용할 수 있습니다(PC 버전)
lightbox.width
string Lightbox 프레임의 너비입니다. null인 경우, Pay Station 너비에 따라 달라집니다. 기본값은 null입니다.
lightbox.height
string Lightbox 프레임의 높이입니다. Null인 경우, Pay Station 높이에 따라 달라집니다. 기본값은 '100%'입니다.
lightbox.zIndex
int 속성에 의해 수직 스태킹 순서가 제어됩니다. 기본값은 1000입니다.
lightbox.overlayOpacity
int 오버레이의 불투명도(0~1)입니다. 기본값은 '.6'입니다.
lightbox.overlayBackground
string 오버레이의 배경입니다. 기본값은 '#000000'입니다.
lightbox.modal
boolean Lightbox 프레임을 닫을 수 없습니다. 기본값은 'false'입니다.
lightbox.closeByClick
boolean 오버레이 클릭에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.closeByKeyboard
boolean ESC 키 누르기에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.contentBackground
string 프레임의 배경입니다. 기본값은 '#ffffff'입니다.
lightbox.contentMargin
string 프레임 주변의 여백입니다. 기본값은 '10px'입니다.
lightbox.spinner
string 애니메이션을 사용한 로딩 회전자 유형으로서 'xsolla' 또는 'round'가 가능합니다. 기본값은 'xsolla'입니다.
lightbox.spinnerColor
string 회전자의 색상입니다. 기본값에 의해 설정되지 않습니다.
childWindow
object Pay Station이 포함된 하위 창에 대한 옵션입니다. 모바일 버전에 적합합니다.
childWindow.target
string 대상 옵션이 Pay Station 창을 열 위치를 지정하며, '_blank', '_self', '_parent'가 가능합니다. 기본값은 '_blank'입니다.

결제 인터페이스 관련하여 발생하는 이벤트는 스크립트를 통해 추적할 수 있습니다. 인터페이스 이벤트 유형에 따라 다양한 작업을 웹 페이지에서 수행할 수 있습니다.

이벤트 목록:

파라미터 설명
init
위젯 초기화 이벤트입니다.
open
위젯 개시 이벤트입니다.
load
결제 인터페이스(Pay Station)가 로딩된 후 이벤트입니다.
close
결제 인터페이스(Pay Station)가 닫힌 후 이벤트입니다.
status
게임유저가 상태 페이지에서 이동한 경우의 이벤트입니다.
status-invoice
게임유저가 상태 페이지에서 이동했지만 결제가 완료되지 않은 경우의 이벤트입니다.
status-delivering
게임유저가 상태 페이지에서 이동했고, 결제가 완료되었으며, 결제 알림을 보내는 중인 경우의 이벤트입니다.
status-done
게임유저가 상태 페이지에서 이동했고 결제가 성공적으로 완료된 경우의 이벤트입니다.
status-troubled
게임유저가 상태 페이지에서 이동했지만 결제에 실패한 경우의 이벤트입니다.

개발자가 직접 결제 UI 개시를 초기화하려면 https://secure.xsolla.com/paystation2/?access_token=ACCESS_TOKEN 링크를 이용하십시오. 여기에서 ACCESS_TOKEN이전단계 에서수신한 토큰입니다.

콜백을 통한 비동기 스크립트 로딩의 예

<html>
<head lang="en">
    <meta charset="UTF-8">
</head>
<body>
    <button data-xpaystation-widget-open>Buy Credits</button>

    <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($paymentUIToken, $isSandbox = true); ?>
</body>
</html>
<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "https://static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
    s.addEventListener('load', function (e) {
        XPayStationWidget.init(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

<button data-xpaystation-widget-open>Buy Credits</button>

테스트 신용카드 목록

Sandbox 내에서 모의 결제를 해 볼 수 있는 카드는 다음과 같습니다.

카드 번호 만료 날짜 CVV2 3D-Secure 카드 유형
4111111111111111
12/20 123 No VISA
5555555555554444
11/19 321 No MasterCard
4000000000000010
12/20 123 Yes VISA
5200000000000114
11/19 321 Yes MasterCard
6759649826438453
12/25 321 Yes Maestro

또한, 다음 데이터를 사용해 트랜잭션 거부를 시뮬레이션해 볼 수 있습니다.

카드 번호 만료 날짜 CVV2 3D-Secure 카드 유형 설명
4000000000000002
12/20 123 No VISA Insufficient funds
5200000000000007
11/19 321 No MasterCard Insufficient funds
4000000000000036
12/20 123 Yes VISA Declined
5200000000000031
11/19 321 Yes MasterCard Declined

Pay2Play 위젯

Xsolla 팀은 웹 사이트에 결제 인터페이스 연동을 간소화하기 위해Pay2Play 위젯을 제공합니다. 위젯은 페이지에 쉽게 포함시킬 수 있으며, 판매 콘텐츠, 사용 가능한 DRM 및 플랫폼 목록, 결제 방법 선택에 대한 세부 정보를 게임유저에게 제공합니다.

스크립트는 당사 CDN에 있으며 여기. 에서 제공됩니다. 이 URL을 사용하여 웹 사이트에서 스크립트를 연동하세요.

자세한 내용은 Github의 저장 공간에서 확인하세요.

Pay2Play 서비스를 사용하기 위한 Xsolla와의 연동에는 두 가지 옵션이 있습니다:

  1. 간편 연동
  2. 고급 연동

옵션 간의 차이점에 대한 정보는 연동 가이드에 나와 있습니다. 초기 위젯을 위한 파라미터는 아래 선택된 옵션에 따라 다릅니다.

간편 연동

스크립트 초기화 파라미터 목록:

파라미터 유형 설명
access_data
string 사용자 및 결제에 대한 데이터가 포함된 값입니다. (필수).
target_element
boolean 위젯이 렌더링되어야 하는 페이지의 요소입니다(jQuery 선택기를 사용해야 함, 예: '#widget-example'). (필수).

개체 access_data의 파라미터 및 JSON 구조는 토큰을 가져오기 위한 파라미터 및 JSON 구조와 유사합니다.

고급 연동

스크립트 초기화 파라미터 목록:

파라미터 유형 설명
access_token
string 위젯용 토큰으로 API 연동연동이 필수입니다 (필수).
sandbox
boolean true를 설정하여 결제 프로세스를 테스트합니다. sandbox-secure.xsolla.com이 secure.xsolla.com. 대신 사용됩니다.
target_element
boolean 위젯이 렌더링되어야 하는 페이지의 요소입니다(jQuery selector를 사용해야 합니다, 예: '#widget-example'). (필수).

다음 파라미터는 결제 인터페이스 모양을 정의하며 Xsolla Pay Station Widget에서 자세하게 확인하실 수 있습니다.

파라미터 유형 설명
lightbox
object lightbox 열기에 사용 가능한 옵션 목록이 포함된 값입니다(PC 버전).
lightbox.width
string lightbox 프레임의 너비입니다. null인 경우, Pay Station 너비에 따라 다릅니다. 기본값은 null입니다.
lightbox.height
string lightbox 프레임의 높이입니다. null인 경우, Pay Station 높이에 따라 다릅니다. 기본값은 '100%'입니다.
lightbox.zIndex
int 속성이 세로 스택 순서를 제어합니다. 기본값은 1000입니다.
lightbox.overlayOpacity
int 오버레이의 불투명도입니다(0 ~ 1). 기본값은 '.6'입니다.
lightbox.overlayBackground
string 오버레이의 배경입니다. 기본값은 '#000000'입니다.
lightbox.modal
boolean lightbox 프레임을 닫을 수 없습니다. 기본값은 'false'입니다.
lightbox.closeByClick
boolean 오버레이를 클릭하면 lightbox가 닫히는지 여부를 토글합니다. 기본값은 'true'입니다.
lightbox.closeByKeyboard
boolean ESC 키를 누르면 lightbox가 닫히는지 여부를 토글합니다. 기본값은 'true'입니다.
lightbox.contentBackground
string 프레임의 배경입니다. 기본값은 '#ffffff'입니다.
lightbox.contentMargin
string 프레임 주변 여백입니다. 기본값은 '10px'입니다.
lightbox.spinner
string 애니메이션 로딩 스피너의 유형입니다. 'xsolla' 또는 'round'일 수 있습니다. 기본값은 'xsolla'입니다.
lightbox.spinnerColor
string 스피너의 색상입니다. 기본적으로 설정되어 있지 않습니다.
childWindow
object Pay Station이 포함된 자식 창에 대한 옵션입니다. 모바일 버전에 적합합니다.
childWindow.target
string 대상 옵션은 페이스테이션 창을 여는 위치를 지정합니다. '_blank', '_self', '_parent'일 수 있습니다. 기본 값은 '_blank'입니다.

DOM이 완전히 로드된 경우 XPay2PlayWidget.create()를 수행해야 합니다. 해당 이벤트를 추적하거나, 위젯이 렌더링되어야 하는 요소 뒤에 스크립트를 추가할 수 있습니다.

간편 연동을 위해 callback으로 로드하는 비동기 스크립트의 예

<script>
    var accessData = {"settings":{"project_id":14004},"purchase":{"pin_codes":{"codes":[{"digital_content":"game_sku"}]}}};
    var options = {
        access_data: accessData,
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>
<script>
    var accessData = {"settings":{"project_id":14004},"purchase":{"pin_codes":{"codes":[{"digital_content":"game_sku"}]}}};
    var options = {
        access_data: accessData,
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

간편 연동을 위해 callback으로 로드하는 비동기 스크립트의 예

<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890',
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>
<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890',
        target_element: '#widget-example-element'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "//static.xsolla.com/embed/pay2play/2.1.0/widget.min.js";
    s.addEventListener('load', function (e) {
        var widgetInstance = XPay2PlayWidget.create(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

오류 목록

Code Description
0004-0001
만료되었거나 올바르지 않은 토큰
0004-0008
잘못된 URL (secure.xsolla.com에서 샌드박스 모드 또는 sandbox-secure.xsolla.com에서 라이브 모드로 접근을 시도함)
0002-0004
동의서에 서명하지 않음
0004-0010
금지된 서버리스 통합
0010-0001
디지털 콘텐츠를 찾지 못함
0010-0003
디지털 콘텐츠에 DRM이 설정되지 않음
1000-0003
해당 프로젝트에 대하여 활성화된 결제 모듈이 없음

Storefront 가상 통화

모든 가상 통화 패키지를 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_currency

요청 매개 변수:

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다. 필수
user_id
string 사용자 ID입니다. 필수
currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다. 필수
language
string 인터페이스 언어입니다. ISO 639-1 표준에 따른 2자리 언어 코드(소문자)입니다. 필수

응답 매개 변수:

매개 변수 유형 설명
packages
array 가상 통화 패키지에 대한 데이터가 포함된 개체의 배열입니다.
packages.id
int Xsolla 시스템의 가상 통화 패키지에 대한 ID입니다.
packages.quantity
float 가상 통화의 수량입니다.
packages.quantity_without_discount
float 할인 없는 가상 통화의 수량입니다(프로모션의 경우).
packages.bonus_quantity
float 보너스로 지정된 가상 통화의 수량입니다(프로모션의 경우).
packages.amount
float 가상 통화 패키지의 비용입니다(요청에서 전송된 통화).
packages.amount_without_discount
float 할인 없는 가상 통화 패키지의 비용입니다(프로모션의 경우).
packages.currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다.
packages.image
string 패키지 이미지의 URL입니다.
packages.description
string 가상 통화 패키지의 설명입니다(요청에서 전송된 언어).
packages.bonus_items
array 보너스로 제공된 항목에 대한 데이터가 포함된 배열입니다(프로모션의 경우).
packages.bonus_items.name
string 보너스 항목의 이름입니다.
packages.bonus_items.quantity
int 보너스 항목의 수량입니다.
packages.advertisement_label
object 가상 통화 패키지 레이블에 대한 데이터가 포함된 개체입니다.
packages.advertisement_label.type
string 가상 통화 패키지 레이블의 유형입니다. "recommended", "best_deal", "special_offer" 또는 null일 수 있습니다.
packages.advertisement_label.name
string packages.advertisement_label.type의 값에 따른 가상 통화 패키지 레이블의 지역화된 이름입니다.
packages.offer_label
string 프로모션의 레이블입니다.

요청

<?php

$response = $xsollaClient->GetStorefrontVirtualCurrency(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_currency' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = array (
    'packages' =>
        array (
            array (
                'id' => 16913,
                'quantity' => 500,
                'quantity_without_discount' => 500,
                'bonus_quantity' => 10,
                'amount' => 4,
                'amount_without_discount' => 4.99,
                'currency' => 'USD',
                'image' => '//cdn2.xsolla.com/img/misc/images/5df58528dee219c2ab48e003f8f1a8f1.jpg',
                'description' => '500 Gold',
                'bonus_items' =>
                    array (
                        array (
                            'name' => 'Rabbit',
                            'quantity' => 1,
                        ),
                    ),
                'advertisement_label' =>
                    array (
                        'type' => 'recommended',
                        'name' => 'Most Popular',
                    ),
                'offer_label' => '',
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "packages": [
        {
            "id": 16913,
            "quantity": 500,
            "quantity_without_discount": 500,
            "bonus_quantity": 10,
            "amount": 4,
            "amount_without_discount": 4.99,
            "currency": "USD",
            "image": "\/\/cdn2.xsolla.com\/img\/misc\/images\/5df58528dee219c2ab48e003f8f1a8f1.jpg",
            "description": "500 Gold",
            "bonus_items": [
                {
                    "name": "Rabbit",
                    "quantity": 1
                }
            ],
            "advertisement_label": {
                "type": "recommended",
                "name": "Most Popular"
            },
            "offer_label": ""
         }
    ]
}
{
    "packages": [
        {
            "id": 16913,
            "quantity": 500,
            "quantity_without_discount": 500,
            "bonus_quantity": 10,
            "amount": 4,
            "amount_without_discount": 4.99,
            "currency": "USD",
            "image": "\/\/cdn2.xsolla.com\/img\/misc\/images\/5df58528dee219c2ab48e003f8f1a8f1.jpg",
            "description": "500 Gold",
            "bonus_items": [
                {
                    "name": "Rabbit",
                    "quantity": 1
                }
            ],
            "advertisement_label": {
                "type": "recommended",
                "name": "Most Popular"
            },
            "offer_label": ""
         }
    ]
}

Storefront 그룹

가상 항목의 모든 그룹을 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/groups

요청 매개 변수:

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다. 필수
user_id
string 사용자 ID입니다. 필수
currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다. 필수
language
string 인터페이스 언어입니다. ISO 639-1 표준에 따른 2자리 언어 코드(소문자)입니다. 필수

응답 매개 변수:

매개 변수 유형 설명
groups
array 가상 항목의 그룹에 대한 데이터가 포함된 개체 배열입니다.
groups.id
int Xsolla 시스템의 그룹에 대한 ID입니다.
groups.external_id
string 그룹의 외부 ID입니다.
groups.name
string 그룹의 지역화된 이름입니다.
groups.description
string 그룹의 지역화된 설명입니다.
groups.level
int 그룹의 수준입니다.
groups.children
array 자식 그룹에 대한 정보가 포함된 배열입니다. 모든 자식 그룹에 대한 구조는 부모 그룹에 대한 구조와 동일합니다.

요청

<?php

$response = $xsollaClient->GetStorefrontVirtualGroups(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/groups' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = array (
    'groups' =>
        array (
            array (
                'id' => 1,
                'external_id' => '21',
                'name' => 'Group name 21',
                'description' => 'Group description 21',
                'children' =>
                    array (),
                'level' => 0,
            ),
            array (
                'id' => 2,
                'external_id' => '22',
                'name' => 'Group name 22',
                'description' => 'Group description 22',
                'children' =>
                    array (
                        array (
                            'id' => 3,
                            'external_id' => NULL,
                            'name' => 'Child group 1',
                            'description' => 'Child group 1',
                            'children' =>
                                array (),
                            'level' => 1,
                        ),
                        array (
                            'id' => 8,
                            'external_id' => NULL,
                            'name' => 'Child group 2',
                            'description' => 'Child group 2',
                            'children' =>
                                array (),
                            'level' => 1,
                        ),
                    ),
                'level' => 0,
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "groups": [
        {
            "id": 1,
            "external_id": "21",
            "name": "Group name 21",
            "description": "Group description 21",
            "children": [],
            "level": 0
        },
        {
            "id": 2,
            "external_id": "22",
            "name": "Group name 22",
            "description": "Group description 22",
            "children": [
                {
                    "id": 3,
                    "external_id": null,
                    "name": "Child group 1",
                    "description": "Child group 1",
                    "children": [],
                    "level": 1
                },
                {
                    "id": 8,
                    "external_id": null,
                    "name": "Child group 2",
                    "description": "Child group 2",
                    "children": [],
                    "level": 1
                }
            ],
            "level": 0
        }
    ]
}
{
    "groups": [
        {
            "id": 1,
            "external_id": "21",
            "name": "Group name 21",
            "description": "Group description 21",
            "children": [],
            "level": 0
        },
        {
            "id": 2,
            "external_id": "22",
            "name": "Group name 22",
            "description": "Group description 22",
            "children": [
                {
                    "id": 3,
                    "external_id": null,
                    "name": "Child group 1",
                    "description": "Child group 1",
                    "children": [],
                    "level": 1
                },
                {
                    "id": 8,
                    "external_id": null,
                    "name": "Child group 2",
                    "description": "Child group 2",
                    "children": [],
                    "level": 1
                }
            ],
            "level": 0
        }
    ]
}

Storefront 가상 항목

모든 가상 항목을 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/items

요청 매개 변수:

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다. 필수
user_id
string 사용자 ID입니다. 필수
group_id
int 가상 항목 그룹의 ID입니다. 필수
currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다. 필수
language
string 인터페이스 언어입니다. ISO 639-1 표준에 따른 2자리 언어 코드(소문자)입니다. 필수

응답 매개 변수:

매개 변수 유형 설명
items
array 가상 통화에 대한 데이터가 포함된 개체의 배열입니다.
items.id
int Xsolla 시스템의 가상 항목에 대한 ID입니다.
items.sku
string 가상 항목의 SKU입니다.
items.name
string 가상 항목의 지역화된 이름입니다.
items.image_url
string 가상 항목 이미지의 URL입니다.
items.description
string 가상 항목의 지역화된 설명입니다.
items.long_description
string 가상 항목의 지역화된 긴 설명입니다.
items.currency
string 가상 항목의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다.
items.amount
float 가상 항목의 비용입니다(요청에서 전송된 통화).
items.amount_without_discount
float 할인 없는 가상 항목의 비용입니다(프로모션의 경우).
items.vc_amount
float 가상 통화의 가상 항목에 대한 비용입니다.
items.vc_amount_without_discount
float 할인 없는 가상 통화의 가상 항목에 대한 비용입니다(프로모션의 경우).
items.bonus_virtual_currency
object 보너스로 제공된 가상 통화에 대한 데이터가 포함된 개체입니다(프로모션의 경우).
items.bonus_virtual_currency.vc_amount
float 보너스로 제공된 가상 통화의 수량입니다.
items.bonus_virtual_items
array 보너스로 제공된 가상 항목에 대한 데이터가 포함된 배열입니다(프로모션의 경우).
items.bonus_virtual_items.name
string 가상 항목의 지역화된 이름입니다.
items.bonus_virtual_items.quantity
int 가상 항목의 수량입니다.
items.advertisement_label
object 가상 항목 레이블에 대한 데이터가 포함된 개체입니다.
items.advertisement_label.type
string 가상 항목 레이블의 유형입니다. "recommended", "best_deal", "special_offer" 또는 null일 수 있습니다.
items.advertisement_label.name
string items.advertisement_label.type의 값에 따른 가상 항목 레이블의 지역화된 이름입니다.
items.offer_label
string 프로모션의 레이블입니다.

요청

<?php

$response = $xsollaClient->GetStorefrontVirtualItems(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID,
    'group_id' => GROUP_ID
));
GET /merchant/v2/projects/{project_id}/storefront/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = array (
    'items' =>
        array (
            array (
                'id' => 1678,
                'sku' => '1468',
                'name' => 'Rabbit',
                'image_url' => 'https://cdn3.xsolla.com/img/misc/merchant-digital-goods/4376c004fa33dc74483906561d617cb3.png',
                'description' => 'Rabbits are small mammals in the family Leporidae',
                'long_description' => NULL,
                'currency' => 'USD',
                'amount' => 0,
                'amount_without_discount' => 0,
                'vc_amount' => 2,
                'vc_amount_without_discount' => 2,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'advertisement_label' => NULL,
                'offer_label' => '',
            ),
        ),
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "items": [
        {
            "id": 1678,
            "sku": "1468",
            "name": "Rabbit",
            "image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/merchant-digital-goods\/4376c004fa33dc74483906561d617cb3.png",
            "description": "Rabbits are small mammals in the family Leporidae",
            "long_description": null,
            "currency": "USD",
            "amount": 0,
            "amount_without_discount": 0,
            "vc_amount": 2,
            "vc_amount_without_discount": 2,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "advertisement_label": null,
            "offer_label": ""
        }
    ]
}
{
    "items": [
        {
            "id": 1678,
            "sku": "1468",
            "name": "Rabbit",
            "image_url": "https:\/\/cdn3.xsolla.com\/img\/misc\/merchant-digital-goods\/4376c004fa33dc74483906561d617cb3.png",
            "description": "Rabbits are small mammals in the family Leporidae",
            "long_description": null,
            "currency": "USD",
            "amount": 0,
            "amount_without_discount": 0,
            "vc_amount": 2,
            "vc_amount_without_discount": 2,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "advertisement_label": null,
            "offer_label": ""
        }
    ]
}

Storefront 구독 계획

모든 구독 계획을 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/subscriptions

요청 매개 변수:

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다. 필수
user_id
string 사용자 ID입니다. 필수
currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다. 필수
language
string 인터페이스 언어입니다. ISO 639-1 표준에 따른 2자리 언어 코드(소문자)입니다. 필수

응답 매개 변수:

매개 변수 유형 설명
packages
array 구독 계획에 대한 데이터가 포함된 개체의 배열입니다.
packages.id
int Xsolla 시스템의 구독 계획에 대한 ID입니다.
packages.is_active
boolean 플랜이 활성화되었는지 여부입니다.
packages.charge_amount
float 구독 계획의 비용입니다.
packages.charge_amount_without_discount
float 할인 없는 구독 계획의 비용입니다(프로모션의 경우).
packages.charge_currency
string 구독 계획의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다.
packages.period
int 구독 계획의 청구 주기입니다.
packages.period_unit
string 청구 주기 유형입니다(일/월).
packages.name
string 구독 계획의 지역화된 이름입니다.
packages.description
string 구독 계획의 지역화된 설명입니다.
packages.bonus_virtual_currency
object 보너스로 제공된 가상 통화에 대한 데이터가 포함된 개체입니다(프로모션의 경우).
packages.bonus_virtual_currency.vc_amount
float 보너스로 제공된 가상 통화 수량입니다.
packages.bonus_virtual_items
array 보너스로 제공된 가상 항목에 대한 데이터가 포함된 배열입니다(프로모션의 경우).
packages.bonus_virtual_items.name
string 가상 항목의 지역화된 이름입니다.
packages.bonus_virtual_items.quantity
int 가상 항목의 수량입니다.
packages.offer_label
string 프로모션의 레이블입니다.
packages.is_trial
boolean 이 구독 계획에 대해 평가판 기간이 존재하는지 여부입니다.
packages.period_trial
int 평가판 기간(일)입니다.
active_user_package
object 사용자의 활성 구독에 대한 데이터가 포함된 개체입니다.
active_user_package.date_next_charge
string 활성 구독의 다음 요금 부과 날짜입니다. ISO 8601에 따른 날짜 및 시간입니다.
active_user_package.id
string 활성 구독의 플랜 ID입니다.

요청

<?php

$response = $xsollaClient->GetStorefrontSubscriptions(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/subscriptions HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/subscriptions' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = array (
    'packages' =>
        array (
            array (
                'id' => '2.99_1_months',
                'is_active' => true,
                'charge_amount' => 2.99,
                'charge_amount_without_discount' => 2.99,
                'charge_currency' => 'USD',
                'period' => 1,
                'period_unit' => 'month',
                'name' => 'Silver Status',
                'description' => NULL,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'offer_label' => '',
                'is_trial' => false,
                'period_trial' => 0,
            ),
            array (
                'id' => '4.99_1_months',
                'is_active' => true,
                'charge_amount' => 4.99,
                'charge_amount_without_discount' => 4.99,
                'charge_currency' => 'USD',
                'period' => 1,
                'period_unit' => 'month',
                'name' => 'Gold Status',
                'description' => NULL,
                'bonus_virtual_currency' => NULL,
                'bonus_virtual_items' =>
                    array (),
                'offer_label' => '',
                'is_trial' => false,
                'period_trial' => 0,
            ),
        ),
    'active_user_package' =>
        array (
            'date_next_charge' => '2016-06-28T06:35:02+00:00',
            'id' => '2.99_1_months'
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "packages": [
        {
            "id": "2.99_1_months",
            "is_active": true,
            "charge_amount": 2.99,
            "charge_amount_without_discount": 2.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Silver Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        },
        {
            "id": "4.99_1_months",
            "is_active": true,
            "charge_amount": 4.99,
            "charge_amount_without_discount": 4.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Gold Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        }
    ],
    "active_user_package": {
            "date_next_charge": "2016-06-28T06:35:02+00:00",
            "id": "2.99_1_months"
        }
}
{
    "packages": [
        {
            "id": "2.99_1_months",
            "is_active": true,
            "charge_amount": 2.99,
            "charge_amount_without_discount": 2.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Silver Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        },
        {
            "id": "4.99_1_months",
            "is_active": true,
            "charge_amount": 4.99,
            "charge_amount_without_discount": 4.99,
            "charge_currency": "USD",
            "period": 1,
            "period_unit": "month",
            "name": "Gold Status",
            "description": null,
            "bonus_virtual_currency": null,
            "bonus_virtual_items": [],
            "offer_label": "",
            "is_trial": false,
            "period_trial": 0
        }
    ],
    "active_user_package": {
            "date_next_charge": "2016-06-28T06:35:02+00:00",
            "id": "2.99_1_months"
        }
}

Storefront 프로모션

활성 프로모션에 대한 정보를 표시합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/bonus

요청 매개 변수:

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다. 필수
user_id
string 사용자 ID입니다. 필수
currency
string 가상 통화 패키지의 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다. 필수
language
string 인터페이스 언어입니다. ISO 639-1 표준에 따른 2자리 언어 코드(소문자)입니다. 필수

응답 매개 변수:

매개 변수 유형 설명
seconds
int 프로모션이 끝나기까지 남은 시간(초)입니다.
name
string 프로모션의 지역화된 이름입니다.
description
string 프로모션의 지역화된 설명입니다.

요청

<?php

$response = $xsollaClient->GetStorefrontBonus(array(
    'project_id' => PROJECT_ID,
    'language' => LANGUAGE_ISO,
    'currency' => CURRENCY_ISO,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/storefront/bonus HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/storefront/bonus' \
-X GET \
-u merchant_id:merchant_api_key

Response

<?php

// 응답 예
$response = array (
    'seconds' => 619513283,
    'name' => 'Promotion name',
    'description' => 'Promotion description',
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "seconds": 619513283,
    "name": "Promotion name",
    "description": "Promotion description"
}
{
    "seconds": 619513283,
    "name": "Promotion name",
    "description": "Promotion description"
}

저장된 결제 계정 나열

사용자의 저장된 결제 계정을 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts

매개 변수 유형 설명
project_id
int 게임 ID입니다.
user_id
string 사용자 ID입니다.

요청

<?php

$response = $xsollaClient->ListPaymentAccounts(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = array (
    array (
        'type' => 'card',
        'id' => 1,
        'name' => '411111******1111',
        'payment_system' =>
            array (
                'id' => 1380,
                'name' => 'Credit/Debit Cards',
            ),
    ),
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "type": "card",
        "id": 1,
        "name": "411111******1111",
        "payment_system": {
            "id": 1380,
            "name": "Credit/Debit Cards"
        }
    }
]
[
    {
        "type": "card",
        "id": 1,
        "name": "411111******1111",
        "payment_system": {
            "id": 1380,
            "name": "Credit/Debit Cards"
        }
    }
]

저장된 결제 계정을 사용하여 청구

저장된 결제 계정을 사용하여 청구합니다.

HTTP 요청

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

매개 변수 유형 설명
project_id
int 게임 ID입니다. 필수.
user_id
int 사용자 ID입니다. 필수.
type
string 결제 계정의 유형: 카드 / paypal. 필수.
account_id
int Xsolla 시스템의 저장된 계정에 대한 ID입니다. 필수.
user
object 사용자에 대한 데이터가 포함된 개체입니다.
user.ip
string 사용자 IP입니다. 필수.
user.name
string 사용자 이름입니다.
purchase
object 구매에 대한 데이터가 포함된 개체입니다.
purchase.virtual_currency
object 가상 통화에 대한 데이터가 포함된 개체입니다.
purchase.virtual_currency.quantity
float 가상 통화로 구매한 수량입니다.
purchase.checkout
object 체크아웃 매개 변수에 대한 데이터가 포함된 개체입니다.
purchase.checkout.currency
string 구매 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다.
purchase.checkout.amount
float 구매 금액입니다.
settings
object 구매 설정에 대한 데이터가 포함된 개체입니다.
settings.mode
string "sandbox" 값을 설정하여 결제 프로세스를 테스트합니다. 실제 결제의 경우 이 매개 변수는 제거되어야 합니다.

요청

<?php

$response = $xsollaClient->ChargePaymentAccount(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'type' => TYPE,
    'account_id' => ACCOUNT_ID,
    'request' => array (
         'user' =>
             array (
                 'ip' => '127.0.0.1',
                 'name' => 'John Smith',
             ),
         'purchase' =>
             array (
                 'virtual_currency' =>
                     array (
                         'quantity' => 100,
                     ),
                 'description' =>
                     array (
                         'value' => 'Test Purchase',
                     ),
             ),
         'settings' =>
             array (
                 'mode' => 'sandbox',
             ),
    )
));
POST /merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "user": {
        "ip": "127.0.0.1",
        "name": "John Smith"
    },
    "purchase": {
        "virtual_currency": {
            "quantity": 100
        },
        "description": {
            "value": "Test Purchase"
        }
    },
    "settings": {
        "mode": "sandbox"
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "user": {
        "ip": "127.0.0.1",
        "name": "John Smith"
    },
    "purchase": {
        "virtual_currency": {
            "quantity": 100
        },
        "description": {
            "value": "Test Purchase"
        }
    },
    "settings": {
        "mode": "sandbox"
    }
}'

응답

<?php

// 응답 예
$response = array (
    'transaction_id' => 119478390
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "transaction_id": 119478390
}
{
    "transaction_id": 119478390
}

저장된 결제 계정 삭제

저장된 결제 계정 삭제.

HTTP 요청

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

매개 변수 유형 설명
project_id
int 게임 ID입니다.
user_id
string 사용자 식별 매개 변수입니다.
type
string 결제 계정 유형: 카드 / paypal.
account_id
int Xsolla 시스템의 저장된 계정에 대한 ID입니다.

요청

<?php

$response = $xsollaClient->DeletePaymentAccount(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'type' => TYPE,
    'account_id' => ACCOUNT_ID
));
DELETE /merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

// 응답 예
$response = null;
HTTP/1.1 204 No Content

요금제 생성

정기결제 요금제를 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans

파라미터 유형 설명
project_id
int 게임 ID입니다.
external_id
string 외부 요금제 식별자입니다. (옵션)
name
array of strings 요금제 이름입니다. <지역화>:<요금제 이름> 쌍으로 구성된 값입니다.
description
array of strings 요금제 설명입니다. <지역화>:<요금제 설명> 쌍으로 구성된 값입니다. (옵션)
group_id
string 그룹 ID입니다.
charge
object 충전 데이터 관련 개체입니다.
charge.period
object 충전 기간 데이터와 관련된 개체입니다.
charge.period.value
int 충전 사이 기간입니다.
charge.period.type
string 기간 형식(일/월)입니다.
charge.amount
float 지불 금액입니다.
charge.currency
string 구매 통화입니다. ISO 4217에 따른 3자로 된 통화 코드를 사용합니다.
expiration
object 정기결제 만료 데이터 관련 개체입니다.
expiration.value
int 만료 전 남은 기간입니다.
expiration.type
string 만료 기간 형식(일/월)입니다.
trial
object 뮤료체험 기간 데이터 관련 개체입니다. (옵션)
trial.value
int 뮤료체험 기간 길이입니다.
trial.type
string 뮤료체험 기간 형식(일)입니다.
grace_period
object 유예 기간에 대한 데이터가 포함된 개체입니다. ()옵션)
grace_period.value
int 유예 기간에 대한 시간입니다.
grace_period.type
string 유예 기간 유형: day.

요청

<?php

$response = $xsollaClient->CreateSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'external_id' => 'sample_plan',
         'name' =>
             array (
                 'en' => 'Sample Plan',
             ),
         'description' =>
             array (
                 'en' => 'Basic options plan',
             ),
         'group_id' => 'USA Products',
         'charge' =>
             array (
                 'period' =>
                     array (
                         'value' => 1,
                         'type' => 'month',
                     ),
                 'amount' => 10,
                 'currency' => 'USD',
             ),
         'expiration' =>
             array (
                 'value' => '',
                 'type' => '',
             ),
     )

));
POST /merchant/v2/projects/{project_id}/subscriptions/plans HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "group_id": "USA Products",
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "group_id": "USA Products",
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD",
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}'

응답

<?php

// example response
$response = array (
    'plan_id' => 54
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "plan_id": 54
}
{
    "plan_id": 54
}

요금제 업데이트

정기결제 요금제를 업데이트합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

파라미터 유형 Description
project_id
int 게임 ID입니다.
plan_id
int 요금제 ID입니다.
external_id
string 외부 요금제 식별자입니다. (옵션)
name
array of strings 요금제 이름입니다. <지역화>:<요금제 이름> 쌍으로 구성된 값입니다.
description
array of strings 요금제 설명입니다. <지역화>:<요금제 설명> 쌍으로 구성된 값입니다. (옵션)
group_id
string 그룹 ID입니다.
charge
object 충전 데이터 관련 개체입니다.
charge.period
object 충전 기간 데이터와 관련된 개체입니다.
charge.period.value
int 충전 사이 기간입니다.
charge.period.type
string 기간 형식(일/월)입니다.
charge.amount
float 지불 금액입니다.
charge.currency
string 구매 통화입니다. ISO 4217에 따른 3자로 된 통화 코드를 사용합니다.
expiration
object 정기 결제 만료 데이터 관련 개체입니다.
expiration.value
int 만료 전 남은 기간입니다.
expiration.type
string 만료 기간 형식(일/월)입니다.
trial
object 무료체험 기간 데이터 관련 개체입니다. (옵션)
trial.value
int 무료체험 기간 길이입니다.
trial.type
string 무료체험 기간 형식(일)입니다.
grace_period
object 유예 기간에 대한 데이터가 포함된 개체입니다. (옵션)
grace_period.value
int 유예 기간에 대한 시간입니다.
grace_period.type
string 유예 기간 유형: day.

요청

<?php

$response = $xsollaClient->UpdateSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID,
    'request' => array (
         'external_id' => 'sample_plan',
         'name' =>
             array (
                 'en' => 'Sample Plan',
             ),
         'description' =>
             array (
                 'en' => 'Basic options plan',
             ),
         'charge' =>
             array (
                 'period' =>
                     array (
                         'value' => 1,
                         'type' => 'month',
                     ),
                 'amount' => 10,
                 'currency' => 'USD',
             ),
         'expiration' =>
             array (
                 'value' => '',
                 'type' => '',
             ),
     )
));
PUT /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    }
}'

응답

<?php

// example response
$response = array (
    'id' => '54',
    'external_id' => 'sample_plan',
    'name' =>
        array (
            'en' => 'Sample Plan'
        ),
    'description' =>
        array (
            'en' => 'Basic options plan'
        ),
    'charge' =>
        array (
            'period' =>
                array (
                    'value' => 1,
                    'type' => 'month'
                ),
            'amount' => 10,
            'currency' => 'USD'
        ),
    'expiration' =>
        array (
            'value' => '',
            'type' => ''
        ),
    'trial' =>
        array (
            'value' => 14,
            'type' => 'day'
        ),
    'status' =>
        array (
            'value' => 'disabled',
            'counters' =>
                array (
                    'active' => 0,
                    'canceled' => 0,
                    'expired' => 0
                )
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "54",
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    },
    "trial": {
        "value": 14,
        "type": "day"
    },
    "status": {
        "value": "disabled",
        "counters": {
            "active": 0,
            "canceled": 0,
            "expired": 0
        }
    }
}
{
    "id": "54",
    "external_id": "sample_plan",
    "name": {
        "en": "Sample Plan"
    },
    "description": {
        "en": "Basic options plan"
    },
    "charge": {
        "period": {
            "value": 1,
            "type": "month"
        },
        "amount": 10,
        "currency": "USD"
    },
    "expiration": {
        "value": "",
        "type": ""
    },
    "trial": {
        "value": 14,
        "type": "day"
    },
    "status": {
        "value": "disabled",
        "counters": {
            "active": 0,
            "canceled": 0,
            "expired": 0
        }
    },
    "type":
}

요금제 삭제

정기결제 요금제를 삭제합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete

파라미터 유형 설명
project_id
int 게임 ID입니다.
plan_id
int 요금제 ID입니다.

요청


<?php

$response = $xsollaClient->DeleteSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}/delete' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

요금제 비활성화

정기결제 요금제를 비활성화합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
plan_id
int 요금제 ID입니다.

요청


<?php

$response = $xsollaClient->DisableSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

요금제 활성화

정기결제 요금제를 활성화합니다.

HTTP REQUEST

PATCH https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
plan_id
int 요금제 ID입니다.

요청


<?php

$response = $xsollaClient->EnableSubscriptionPlan(array(
    'project_id' => PROJECT_ID,
    'plan_id' => PLAN_ID
));
PATCH /merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans/{plan_id}' \
-X PATCH \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든 요금제 나열

모든 정기결제 요금제를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans

파라미터 유형 설명
project_id
int 게임 ID입니다.
external_id
string 외부 요금제 식별자입니다.
limit
int 정기결제 요금제 목록 가져오기의 한계값입니다.
offset
int 정기결제 요금제 목록의 시작 페이지입니다.
group_id
string 이러한 요금제가 연결된 그룹의 ID입니다.
product_id
int 이러한 요금제가 연결된 상품의 ID입니다.

요청


<?php

$response = $xsollaClient->ListSubscriptionPlans(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/plans?external_id=1&limit=1&offset=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/plans?external_id=1&limit=1&offset=1' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => '54',
        'external_id' => 'sample_plan',
        'name' =>
            array (
                'en' => 'Sample Plan'
            ),
        'description' =>
            array (
                'en' => 'Basic options plan'
            ),
        'group_id' => 'USA Products',
        'charge' =>
            array (
                'period' =>
                    array (
                        'value' => 1,
                        'type' => 'month'
                    ),
                'amount' => 10,
                'currency' => 'USD'
            ),
        'expiration' =>
            array (
                'value' => 90,
                'type' => 'day'
            ),
        'trial' =>
            array (
                'value' => 14,
                'type' => 'day'
            ),
        'status' =>
            array (
                'value' => 'disabled',
                'counters' =>
                    array (
                        'active' => 0,
                        'canceled' => 0,
                        'expired' => 0
                    )
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": "54",
        "external_id": "sample_plan",
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "group_id": "USA Products",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "disabled",
            "counters": {
                "active": 0,
                "canceled": 0,
                "expired": 0
            }
        }
    }
]
[
    {
        "id": "54",
        "external_id": "sample_plan",
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "group_id": "USA Products",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD",
        },
        "expiration": {
            "value": 90,
            "type": "day",
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "disabled",
            "counters": {
                "active": 0,
                "canceled": 0,
                "expired": 0
            }
        }
    }
]

상품 생성

상품 생성.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products

파라미터 유형 설명
project_id
int 게임 ID입니다.
name
string 상품 이름입니다.
group_id
string 그룹 ID입니다.

요청

<?php

$response = $xsollaClient->CreateSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'name' => 'Demo Product',
        'group_id' => 'USA Products'
    ),
));
POST /merchant/v2/projects/{project_id}/subscriptions/products HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": "Demo Product",
    "group_id": "USA Products"
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
        "name": "Demo Product",
        "group_id": "USA Products"
    }'

응답

<?php

// example response
$response = array (
    'product_id' => '64'
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "product_id": "64"
}
{
    "product_id": "64"
}

상품 업데이트

상품 업데이트.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
product_id
int 상품 ID입니다.
name
string 상품 이름입니다.
group_id
string 그룹 ID입니다.

요청

<?php

$response = $xsollaClient->UpdateSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'name' => 'Demo Product',
        'group_id' => 'USA Products'
    ),
));
PUT /merchant/v2/projects/{project_id}/subscriptions/products/{product_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
        "name": "Demo Product",
        "group_id": "USA Products"
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
            "name": "Demo Product",
            "group_id": "USA Products"
    }'

응답

<?php

// example response
$response = array (
    'id' => '64',
    'name' => 'Demo Product',
    'group_id' => 'USA Products'
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": "64",
    "name": "Demo Product",
    "group_id": "USA Products"
}
{
    "id": "64",
    "name": "Demo Product",
    "group_id": "USA Products"
}

상품 삭제

상품을 삭제합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
product_id
string 상품 ID입니다.

요청


<?php

$response = $xsollaClient->DeleteSubscriptionProduct(array(
    'project_id' => PROJECT_ID,
    'product_id' => PRODUCT_ID
));
DELETE /merchant/v2/projects/{project_id}/subscriptions/products/{product_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products/{product_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든상품나열

모든 정기결제 상품을 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products

파라미터 유형 설명
project_id
int 게임 ID입니다.
group_id
string 이러한 상품이 연결된 그룹의 ID입니다.
product_id
string 상품 ID입니다.
limit
int 정기결제 요금제 목록 가져오기의 한계값입니다.
offset
int 정기결제 요금제 목록의 시작 페이지입니다.

요청


<?php

$response = $xsollaClient->DeleteSubscriptionProduct(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/products?group_id=USA%20Products&limit=1&offset=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/products?group_id=USA%20Products&limit=1&offset=1' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 3,
        'group_id' => 'USA Products',
        'name' => 'Demo Product'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 3,
        "group_id": "USA Products",
        "name": "Demo Product"
    }
]
[
    {
        "id": 3,
        "group_id": "USA Products",
        "name": "Demo Product"
    }
]

정기결제 업데이트

자동 정기결제를 업데이트합니다. 정기결제 상태(활성 또는 취소됨)를 갱신하고 현재 정기결제 요금제에 대한 다음 결제의 시행 날짜를 연기할 수 있습니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
subscription_id
int 정기결제 ID입니다.
user_id
string 유저 ID입니다.
status
string 정기결제 상태(active/canceled)입니다.
cancel_subscription_payment
boolean true로 설정된 경우, 이 구독에서 이루어진 지난 결제액이 환불됩니다. 이 옵션은 상태가 canceled로 변경된 경우에만 작동합니다.
timeshift
object 다음번 충전일자를 늘리거나 줄일 때 사용하는 객체입니다.
timeshift.value
string 다음번 충전일자 변경일(마이너스일 수 있음) 정보입니다.
timeshift.type
string 시간이동 기간 형식(day/month)입니다.

요청

<?php

$response = $xsollaClient->UpdateSubscription(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'subscription_id' => SUBSCRIPTION_ID,
    'request' => array (
         'status' => 'canceled',
         'timeshift' =>
             array (
                 'value' => '30',
                 'type' => 'day',
             )
    )
));
PUT /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "status": "canceled",
    "timeshift": {
         "value": "30",
         "type": "day"
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "status": "canceled",
    "timeshift": {
         "value": "30",
         "type": "day"
    }
}'

응답

<?php

// example response
$response = array (
    'id' => 45,
    'plan' =>
        array (
            'id' => '54',
            'external_id' => 'sample_plan',
            'group_id' => 'USA Products',
            'project_id' => 14004,
            'name' =>
                array (
                    'en' => 'Sample Plan'
                ),
            'description' =>
                array (
                    'en' => 'Basic options plan'
                ),
            'localized_name' => 'Basic Plan',
            'charge' =>
                array (
                    'period' =>
                        array (
                            'value' => 1,
                            'type' => 'month'
                        ),
                    'amount' => 10,
                    'currency' => 'USD'
                ),
            'expiration' =>
                array (
                    'value' => 90,
                    'type' => 'day'
                ),
            'trial' =>
                array (
                    'value' => 14,
                    'type' => 'day'
                ),
            'status' =>
                array (
                    'value' => 'active',
                    'counters' =>
                        array (
                            'active' => 0,
                            'canceled' => 1,
                            'expired' => 0
                        )
                )
        ),
    'user' =>
        array (
            'id' => '20',
        ),
    'product' => null,
    'charge_amount' => 10,
    'currency' => 'USD',
    'date_create' => '2014-09-30T15:34:17+06:00',
    'date_end' => '2014-10-07T15:34:17+06:00',
    'date_last_charge' => '2014-10-01T15:34:17+06:00',
    'date_next_charge' => '2014-11-01T15:34:17+06:00',
    'status' => 'canceled'
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 45,
    "plan": {
        "id": "54",
        "external_id": "sample_plan",
        "group_id": "USA Products",
        "project_id": 14004,
        "name": {
                "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "localized_name": "Basic Plan",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "active",
            "counters": {
                "active": 0,
                "canceled": 1,
                "expired": 0
            }
        }
    },
    "user": {
        "id": "20"
    },
    "product": null,
    "charge_amount": 10,
    "currency": "USD",
    "date_create": "2014-09-30T15:34:17+06:00",
    "date_end": "2014-10-07T15:34:17+06:00",
    "date_last_charge": "2014-10-01T15:34:17+06:00",
    "date_next_charge": "2014-11-01T15:34:17+06:00",
    "status": "canceled"
}
{
    "id": 45,
    "plan": {
        "id": "54",
        "external_id": "sample_plan",
        "group_id": "USA Products",
        "project_id": 14004,
        "name": {
            "en": "Sample Plan"
        },
        "description": {
            "en": "Basic options plan"
        },
        "localized_name": "Basic Plan",
        "charge": {
            "period": {
                "value": 1,
                "type": "month"
            },
            "amount": 10,
            "currency": "USD"
        },
        "expiration": {
            "value": 90,
            "type": "day"
        },
        "trial": {
            "value": 14,
            "type": "day"
        },
        "status": {
            "value": "active",
            "counters": {
                "active": 0,
                "canceled": 1,
                "expired": 0
            }
        }
    },
    "user": {
        "id": "20"
    },
    "product": null,
    "charge_amount": 10,
    "currency": "USD",
    "date_create": "2014-09-30T15:34:17+06:00",
    "date_end": "2014-10-07T15:34:17+06:00",
    "date_last_charge": "2014-10-01T15:34:17+06:00",
    "date_next_charge": "2014-11-01T15:34:17+06:00",
    "status": "canceled"
}

모든 정기결제 나열

모든 자동 정기결제를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임 내 유저 ID입니다.
status
string 정기결제 상태(active / canceled / expired / new)입니다.
limit
int 결제 가져오기의 한계값입니다.
offset
int 결제 목록의 시작 페이지입니다.
datetime_from
datetime 날짜 범위의 시작입니다.
datetime_to
datetime 날짜 범위의 끝입니다.
plan_id
string 플랜의 ID입니다.
product_id
string 제품의 ID입니다.

요청


<?php

$response = $xsollaClient->ListSubscriptions(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions?status=active&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions?status=active&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 45,
        'plan' =>
            array (
                'id' => '54',
                'external_id' => 'sample_plan',
                'group_id' => 'USA Products',
                'project_id' => 14004,
                'name' =>
                    array (
                        'en' => 'Sample Plan'
                    ),
                'description' =>
                    array (
                        'en' => 'Basic options plan'
                    ),
                'localized_name' => 'Basic Plan',
                'charge' =>
                    array (
                        'period' =>
                            array (
                                'value' => 1,
                                'type' => 'month'
                            ),
                        'amount' => 10,
                        'currency' => 'USD'
                    ),
                'expiration' =>
                    array (
                        'value' => 90,
                        'type' => 'day'
                    ),
                'trial' =>
                    array (
                        'value' => 14,
                        'type' => 'day'
                    ),
                'status' =>
                    array (
                        'value' => 'disabled',
                        'counters' =>
                            array (
                                'active' => 0,
                                'canceled' => 0,
                                'expired' => 0
                            )
                    )
            ),
        'user' =>
            array (
                'id' => '20'
            ),
        'product' => null,
        'charge_amount' => 10,
        'currency' => 'USD',
        'date_create' => '2014-09-30T15:34:17+04:00',
        'date_end' => '2014-10-07T15:34:17+04:00',
        'date_last_charge' => '2014-10-01T15:34:17+04:00',
        'date_next_charge' => null,
        'status' => 'active'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 45,
        "plan": {
            "id": "54",
            "external_id": "sample_plan",
            "group_id": "USA Products",
            "project_id": 14004,
            "name": {
                "en": "Sample Plan"
            },
            "description": {
                "en": "Basic options plan"
            },
            "localized_name": "Basic Plan",
            "charge": {
                "period": {
                    "value": 1,
                    "type": "month"
                },
                "amount": 10,
                "currency": "USD"
            },
            "expiration": {
                "value": 90,
                "type": "day"
            },
            "trial": {
                "value": 14,
                "type": "day"
            },
            "status": {
                "value": "disabled",
                "counters": {
                    "active": 0,
                    "canceled": 0,
                    "expired": 0
                }
            }
        },
        "user": {
            "id": "20"
        },
        "product": null,
        "charge_amount": 10,
        "currency": "USD",
        "date_create": "2014-09-30T15:34:17+04:00",
        "date_end": "2014-10-07T15:34:17+04:00",
        "date_last_charge": "2014-10-01T15:34:17+04:00",
        "date_next_charge": null,
        "status": "active"
    }
]
[
    {
        "id": 45,
        "plan": {
            "id": "54",
            "external_id": "sample_plan",
            "group_id": "USA Products",
            "project_id": 14004,
            "name": {
                "en": "Sample Plan"
            },
            "description": {
                "en": "Basic options plan"
            },
            "localized_name": "Basic Plan",
            "charge": {
                "period": {
                    "value": 1,
                    "type": "month"
                },
                "amount": 10,
                "currency": "USD"
            },
            "expiration": {
                "value": 90,
                "type": "day"
            },
            "trial": {
                "value": 14,
                "type": "day"
            },
            "status": {
                "value": "disabled",
                "counters": {
                    "active": 0,
                    "canceled": 0,
                    "expired": 0
                }
            }
        },
        "user": {
            "id": "20"
        },
        "product": null,
        "charge_amount": 10,
        "currency": "USD",
        "date_create": "2014-09-30T15:34:17+04:00",
        "date_end": "2014-10-07T15:34:17+04:00",
        "date_last_charge": "2014-10-01T15:34:17+04:00",
        "date_next_charge": null,
        "status": "active"
    }
]

모든 결제 나열

모든 정기결제를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/payments

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임 내 유저 ID입니다.
status
string 정기결제 상태(processing / canceled / done)입니다.
limit
int 충전 목록 가져오기의 한계값입니다.
offset
int 충전 목록의 시작 페이지입니다.
datetime_from
datetime 날짜 범위의 시작입니다.
datetime_to
datetime 날짜 범위의 끝입니다.
subscription_id
int 정기결제 ID입니다.

요청


<?php

$response = $xsollaClient->ListSubscriptionPayments(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 35,
        'id_payment' => 118441192,
        'date_payment' => '2014-09-30T15:34:17+04:00',
        'status' => 'done',
        'subscription' =>
            array (
                'id' => 45,
                'plan' =>
                    array (
                        'id' => '54',
                        'external_id' => 'sample_plan',
                        'group_id' => 'USA Products',
                        'name' =>
                            array (
                                'en' => 'Sample Plan'
                            ),
                        'description' =>
                            array (
                                'en' => 'Basic options plan'
                            ),
                        'localized_name' => 'Basic Plan',
                        'charge' =>
                            array (
                                'period' =>
                                    array (
                                        'value' => 1,
                                        'type' => 'month'
                                    ),
                                'amount' => 10,
                                'currency' => 'USD'
                            ),
                        'expiration' =>
                            array (
                                'value' => 90,
                                'type' => 'day'
                            ),
                        'trial' =>
                            array (
                                'value' => 14,
                                'type' => 'day'
                            ),
                        'status' =>
                            array (
                                'value' => 'disabled',
                                'counters' =>
                                    array (
                                        'active' => 0,
                                        'closed' => 0,
                                        'expired' => 0
                                    )
                            )
                    ),
                'user' =>
                    array (
                        'id' => 20,
                        'name' => 'John Smith'
                    ),
                'product' => null,
                'charge_amount' => 10,
                'currency' => 'USD',
                'date_create' => '2014-09-30T15:34:17+04:00',
                'date_end' => '2014-10-07T15:34:17+04:00',
                'date_last_charge' => '2014-10-01T15:34:17+04:00',
                'date_next_charge' => '2014-11-01T15:34:17+04:00',
                'status' => 'done'
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]
[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]

모든 게임유저 결제 나열

게임유저에 의한 모든 정기결제를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
status
string 정기결제 상태(processing / canceled / done)입니다.
limit
int 충전 목록 가져오기의 한계값입니다.
offset
int 충전 목록의 시작 페이지입니다.
datetime_from
datetime 날짜 범위의 시작입니다.
datetime_to
datetime 날짜 범위의 끝입니다.
subscription_id
int 정기 결제 ID입니다.

요청


<?php

$response = $xsollaClient->ListUserSubscriptionPayments(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/subscriptions/payments?status=done&limit=1&offset=1&datetime_from=2014-10-01T00%3A00%3A00Z&datetime_to=2014-10-02T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 35,
        'id_payment' => 118441192,
        'date_payment' => '2014-09-30T15:34:17+04:00',
        'status' => 'done',
        'subscription' =>
            array (
                'id' => 45,
                'plan' =>
                    array (
                        'id' => '54',
                        'external_id' => 'sample_plan',
                        'group_id' => 'USA Products',
                        'project_id' => 14004,
                        'name' =>
                            array (
                                'en' => 'Sample Plan'
                            ),
                        'description' =>
                            array (
                                'en' => 'Basic options plan'
                            ),
                        'localized_name' => 'Basic Plan',
                        'charge' =>
                            array (
                                'period' =>
                                    array (
                                        'value' => 1,
                                        'type' => 'month'
                                    ),
                                'amount' => 10,
                                'currency' => 'USD'
                            ),
                        'expiration' =>
                            array (
                                'value' => 90,
                                'type' => 'day'
                            ),
                        'trial' =>
                            array (
                                'value' => 14,
                                'type' => 'day'
                            ),
                        'status' =>
                            array (
                                'value' => 'disabled',
                                'counters' =>
                                    array (
                                        'active' => 0,
                                        'closed' => 0,
                                        'expired' => 0
                                    )
                            )
                    ),
                'user' =>
                    array (
                        'id' => 20,
                        'name' => 'John Smith'
                    ),
                'product' => null,
                'charge_amount' => 10,
                'currency' => 'USD',
                'date_create' => '2014-09-30T15:34:17+04:00',
                'date_end' => '2014-10-07T15:34:17+04:00',
                'date_last_charge' => '2014-10-01T15:34:17+04:00',
                'date_next_charge' => '2014-11-01T15:34:17+04:00',
                'status' => 'done'
            )
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "project_id": 14004,
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]
[
    {
        "id": 35,
        "id_payment": 118441192,
        "date_payment": "2014-09-30T15:34:17+04:00",
        "status": "done",
        "subscription": {
            "id": 45,
            "plan": {
                "id": "54",
                "external_id": "sample_plan",
                "group_id": "USA Products",
                "project_id": 14004,
                "name": {
                    "en": "Sample Plan"
                },
                "description": {
                    "en": "Basic options plan"
                },
                "localized_name": "Basic Plan",
                "charge": {
                    "period": {
                        "value": 1,
                        "type": "month"
                    },
                    "amount": 10,
                    "currency": "USD"
                },
                "expiration": {
                    "value": 90,
                    "type": "day"
                },
                "trial": {
                    "value": 14,
                    "type": "day"
                },
                "status": {
                    "value": "disabled",
                    "counters": {
                        "active": 0,
                        "closed": 0,
                        "expired": 0
                    }
                }
            },
            "user": {
                "id": 20,
                "name": "John Smith"
            },
            "product": null,
            "charge_amount": 10,
            "currency": "USD",
            "date_create": "2014-09-30T15:34:17+04:00",
            "date_end": "2014-10-07T15:34:17+04:00",
            "date_last_charge": "2014-10-01T15:34:17+04:00",
            "date_next_charge": "2014-11-01T15:34:17+04:00",
            "status": "done"
        }
    }
]

모든 통화 나열

모든 정기결제 통화를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/currencies

파라미터 유형 설명
project_id
int 게임 ID입니다.

요청


<?php

$response = $xsollaClient->ListSubscriptionCurrencies(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/subscriptions/currencies HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/subscriptions/currencies' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array(
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
]
[
    "AED",
    "ALL",
    "AMD",
    "ARS",
    "AUD",
    "AZN",
    "BGN",
    "BRL",
    "BYR",
    "CAD",
    "CHF",
    "CLP",
    "CNY",
    "COP",
    "CZK",
    "DKK",
    "DZD",
    "EGP",
    "EUR",
    "GBP",
    "GEL",
    "HKD",
    "HRK",
    "HUF",
    "IDR",
    "ILS",
    "INR",
    "JPY",
    "KES",
    "KGS",
    "KRW",
    "KZT",
    "MAD",
    "MDL",
    "MKD",
    "MNT",
    "MXN",
    "MYR",
    "NGN",
    "NOK",
    "NZD",
    "PEN",
    "PHP",
    "PKR",
    "PLN",
    "RON",
    "RSD",
    "RUB",
    "SAR",
    "SEK",
    "SGD",
    "THB",
    "TRY",
    "UAH",
    "USD",
    "UYU",
    "UZS",
    "VND",
    "ZAR"
]

모든 게임유저 특성 나열

모든 게임유저 특성 목록을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes

파라미터 유형 설명
project_id
int 게임 ID입니다.

요청


<?php

$response = $xsollaClient->ListUserAttributes(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/user_attributes HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 2,
        'key' => 'level',
        'localized_name' =>
            array (
                'en' => 'Level'
            ),
        'name' => 'Level',
        'type' => 'int',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 3,
        'key' => 'class',
        'localized_name' =>
            array (
            )
        'name' => null,
        'type' => 'string',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 4,
        'key' => 'type',
        'localized_name' =>
            array (
            )
        'name' => null,
        'type' => 'enum',
        'list_of_values' =>
            array (
                0 => 'class1',
                1 => 'class2',
                2 => 'class3'
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    ),
    array (
        'id' => 5,
        'key' => 'date',
        'localized_name' =>
            array (
                'en' => 'Date'
            ),
        'name' => 'Date',
        'type' => 'date',
        'list_of_values' =>
            array (
            ),
        'visible' => true,
        'skip_condition_on_nonexistent_key' => false
    )
);
HTTP/1.1 200 OK
Content-Type: application/json
[
    {
        "id": 2,
        "key": "level",
        "localized_name": {
            "en": "Level"
        },
        "name": "Level",
        "type": "int",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 3,
        "key": "class",
        "localized_name": [],
        "name": null,
        "type": "string",
        "list_of_values": [],
        "visible":true
    },
    {
        "id": 4,
        "key": "type",
        "localized_name": [],
        "name": null,
        "type": "enum",
        "list_of_values": [
            "class1",
            "class2",
            "class3"
        ],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 5,
        "key": "date",
        "localized_name": {
            "en": "Date"
        },
        "name": "Date",
        "type": "date",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    }
]
[
    {
        "id": 2,
        "key": "level",
        "localized_name": {
            "en": "Level"
        },
        "name": "Level",
        "type": "int",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 3,
        "key": "class",
        "localized_name": [],
        "name": null,
        "type": "string",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 4,
        "key": "type",
        "localized_name": [],
        "name": null,
        "type": "enum",
        "list_of_values": [
            "class1",
            "class2",
            "class3"
        ],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    },
    {
        "id": 5,
        "key": "date",
        "localized_name": {
            "en": "Date"
        },
        "name": "Date",
        "type": "date",
        "list_of_values": [],
        "visible":true,
        "skip_condition_on_nonexistent_key": false
    }
]

게임유저 특성 가져오기

게임유저 특성을 표시합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_attribute_id
int 개임유저 특성 ID입니다.

요청


<?php

$response = $xsollaClient->GetUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID
));
GET /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'id' => 2,
    'key' => 'level',
    'localized_name' =>
        array (
            'en' => 'level',
            'de' => 'niveau'
        ),
    'name' => 'Level',
    'type' => 'int',
    'list_of_values' =>
        array (),
    'visible' => true,
    'skip_condition_on_nonexistent_key' => false
);
HTTP/1.1 200 OK
Content-Type: application/json
{
    "id": 2,
    "key": "level",
    "localized_name": {
        "en": "level",
        "de": "niveau"
    },
    "name": "Level",
    "type": "int",
    "list_of_values": [],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}
{
    "id": 2,
    "key": "level",
    "localized_name": {
        "en": "level",
        "de": "niveau"
    },
    "name": "Level",
    "type": "int",
    "list_of_values": [],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}

게임유저 특성 생성

게임유저 특성을 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes

파라미터 유형 설명
project_id
int 게임 ID입니다. (필수)
key
string 게임유저 특성 키입니다. (필수)
name
array of strings 게임유저 특성의 현지화된 이름의 배열입니다. (필수)
type
string 키 형식입니다. 'int', 'string', 'enum' 또는 'date'가 가능합니다. (필수)
list_of_values
array enum형 값의 배열입니다. (필수)
skip_condition_on_nonexistent_key
boolean 키가 존재하지 않는 경우 조건을 건너뛰어야 하는지 여부입니다.

요청

<?php

$response = $xsollaClient->CreateUserAttribute(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'key' => 'class',
         'name' =>
             array (
                 'en' => 'Сlass',
                 'de' => 'Classe',
             ),
         'type' => 'enum',
         'list_of_values' =>
             array (
                 'Warrior',
                 'magic',
             ),
     )
));
POST /merchant/v2/projects/{project_id}/user_attributes HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "key": "class",
    "name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "key": "class",
    "name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true
}'

응답

<?php

// example response
$response = array (
    'id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "id": 77
}
{
    "id": 77
}

게임유저 특성 업데이트

게임유저 특성을 갱신합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_attribute_id
int 게임유저 특성 ID입니다.
key
string 게임유저 특성 키입니다.
name
array of strings 게임유저 특성의 현지화된 이름의 배열입니다.
type
string 키 형식입니다. 'int', 'string', 'enum' 또는 'date'가 가능합니다. 업데이트되지 않음
list_of_values
array enum형 값의 배열입니다.
skip_condition_on_nonexistent_key
boolean 키가 존재하지 않는 경우 조건을 건너뛰어야 하는지 여부입니다.

요청

<?php

$response = $xsollaClient->UpdateUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID,
    'request' => array(
         'key' => 'class',
         'name' =>
             array (
                 'en' => 'Сlass',
                 'de' => 'Classe',
             ),
         'type' => 'enum',
         'list_of_values' =>
             array (
                 'Warrior',
                 'magic',
             ),
         'skip_condition_on_nonexistent_key' => false
     )
));
PUT /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "key": "class",
    "localized_name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "key": "class",
    "localized_name": {
        "en": "Сlass",
        "de": "Classe"
    },
    "type": "enum",
    "list_of_values": ["Warrior", "magic"],
    "visible":true,
    "skip_condition_on_nonexistent_key": false
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

게임유저 특성 삭제

게임유저 특성을 삭제합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_attribute_id
int 유저 특성 ID입니다.

요청


<?php

$response = $xsollaClient->DeleteUserAttribute(array(
    'project_id' => PROJECT_ID,
    'user_attribute_id' => USER_ATTRIBUTE_ID
));
DELETE /merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/user_attributes/{user_attribute_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

아이템 생성

게임 아이템을 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

파라미터 유형 설명
project_id
int 게임 ID입니다.
sku
string 항목의 고유한 ID입니다. SKU에는 소문자 라틴 문자, 숫자, 대시 및 밑줄만 포함되어야 합니다.
item_code
string 항목의 추가적인 코드입니다. (옵션).
name
array of strings 항목에 대한 지역화된 이름의 배열입니다.
description
array of strings 항목에 대한 지역화된 설명의 배열입니다.
long_description
array of strings 항목에 대한 자세한 지역화된 설명의 배열입니다.
prices
array 항목 가격의 배열입니다.
default_currency
string 기본 구매 통화입니다. ISO 4217에 따라 통화의 3자 정의가 사용됩니다.
enabled
boolean 구입용으로 활성화합니다.
permanent
boolean 게임유저가 두 번 이상 항목을 구입할 수 있는지 여부입니다.
image_url
string 이미지의 URL입니다.
item_type
string 항목의 유형: Consumable / Expiration / Permanent / Lootboxes / Physical
expiration
int 초 단위 만료 시간입니다. "Expiration" 항목 유형에만 사용됨.
groups
array of integers 항목 그룹의 목록입니다.
deleted
boolean 이 항목이 삭제되었는지 여부입니다.
user_attribute_conditions
array of objects 게임유저 특성 조건의 목록입니다.
user_attribute_conditions.right_operand
array of values 현재 게임유저 특성 값과의 비교를 위한 값입니다.
user_attribute_conditions.user_attribute_key
string 게임유저 특성 조건의 키입니다.
user_attribute_conditions.operation
string 비교 연산자의 유형입니다. 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn'일 수 있습니다.
user_attribute_conditions.action
string 작업의 유형입니다. 'hide', 'block' 또는 'warning'일 수 있습니다.
advertisement_type
string 특수 레이블이 결제 UI에 나타납니다. 'recommended', 'best_deal', 'special_offer' 또는 null일 수 있습니다.
virtual_currency_price
int 이 항목에 대한 게임머니의 가격입니다. 항목을 실제 통화로만 구매할 수 있는 경우 'Null'입니다.
purchase_limit
int 이 항목을 구입할 수 있는 횟수입니다. 제한이 없는 경우 'Null'입니다.
keywords
array 결제 UI에서 항목을 검색할 수 있는 기준이 되는 키워드입니다.

요청

<?php

$response = $xsollaClient->CreateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'Expiration',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}'

응답

<?php

// example response
$response = array (
    'item_id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "item_id": 77
}
{
    "item_id": 77
}

아이템 가져오기

게임 아이템을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

파라미터 유형 설명
item_id
int 아이템 ID입니다.

요청


<?php

$response = $xsollaClient->GetVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'id' => 77,
    'sku' => 'T-43-3-unique-id',
    'item_code' => 'chinese-medium-tank',
    'name' =>
        array (
            'en' => 'T-34-3'
        ),
    'description' =>
        array (
            'en' => 'Chinese Tier VIII medium tank.'
        ),
    'long_description' =>
        array (
            'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.'
        ),
    'prices' =>
        array (
            'USD' => 40.09
        ),
    'default_currency' => 'USD',
    'enabled' => true,
    'permanent' => false,
    'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
    'item_type' => 'Expiration',
    'expiration' => 1296000,
    'groups' =>
        array (
            24,
            25
        ),
    'user_attribute_conditions' =>
        array (
        array (
                'right_operand' =>
                     array (
                        'magic',
                    ),
                'id' => 2015,
                'user_attribute_key' => 'type',
                'operation' => 'equal',
                'action' => 'hide',
                'name' => null,
            ),
        ),
    'virtual_currency_price' => null,
    'purchase_limit' => null,
    'keywords' =>
        array (
            'de' =>
                array (
                    'Inhalt',
                    'Aufgaben',
                    'Region',
                    'Landschaft',
                ),
            'en' =>
                array (
                    'content',
                    'quests',
                    'region',
                    'landscape',
                ),
        ),
    'advertisement_type' => 'recommended',
    'deleted' => false,
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
{
    "id": 77,
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}

아이템 업데이트

게임 아이템을 업데이트합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

파라미터 유형 설명
item_id
int 아이템 ID입니다.
sku
string 아이템 고유 ID입니다. SKU는 로마자 소문자, 숫자, 대시, 밑줄만 포함해야 합니다.
item_code
string 아이템의 추가 코드입니다. Optional.
name
array of strings 아이템의 현지화된 이름의 배열입니다.
description
array of strings 아이템의 현지화된 설명의 배열입니다.
prices
array 아이템 가격의 배열입니다
default_currency
string 기본 구매 통화입니다. ISO 4217에 따른 3자로 된 통화 코드를 사용합니다.
enabled
boolean 구매를 허용합니다.
permanent
boolean 게임유저가 아이템을 한번 이상 구입할 수 있는지 여부를 나타냅니다.
item_type
string 아이템 유형: Consumable / Expiration / Permanent / Lootboxes / Physical
expiration
int 만료 시간(초)입니다. "Expiration" 아이템 유형에만 사용됩니다.
groups
array of integers 아이템 그룹 목록입니다.
user_attribute_conditions
array of objects 게임유저 특성 조건의 목록입니다.
user_attribute_conditions.right_operand
array of values 현재 게임유저 특성값과 비교를 위한값입니다.
user_attribute_conditions.user_attribute_key
string 게임유저 특성 조건의 키입니다.
user_attribute_conditions.operation
string 비교 연산 유형입니다. 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn' 이 가능합니다.
user_attribute_conditions.action
string 작업의 유형입니다. 'hide', 'block' 또는 'warning'일 수 있습니다.
advertisement_type
string 특수 레이블이 결제 UI에 나타납니다. 'recommended', 'best_deal' 또는 null일 수 있습니다.
virtual_currency_price
int 이 항목에 대한 게임머니의 가격입니다. 항목을 실제 통화로만 구매할 수 있는 경우 'Null'입니다.
purchase_limit
int 이 항목을 구입할 수 있는 횟수입니다. 제한이 없는 경우 'Null'입니다.
keywords
array 결제 UI에서 항목을 검색할 수 있는 기준이 되는 키워드입니다.

요청

<?php

$response = $xsollaClient->UpdateVirtualItem(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'T-43-3-unique-id',
         'item_code' => 'chinese-medium-tank',
         'name' =>
             array (
                 'en' => 'T-34-3',
             ),
         'description' =>
             array (
                 'en' => 'Chinese Tier VIII medium tank.',
             ),
         'long_description' =>
             array (
                 'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
             ),
         'prices' =>
             array (
                 'USD' => 40.09,
             ),
         'default_currency' => 'USD',
         'enabled' => true,
         'permanent' => false,
         'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
         'item_type' => 'Expiration',
         'expiration' => 1296000,
         'groups' =>
             array (
                 24,
                 25,
             ),
         'user_attribute_conditions' =>
             array (
             array (
                     'right_operand' =>
                         array (
                             'magic',
                         ),
                     'id' => 2015,
                     'user_attribute_key' => 'type',
                     'operation' => 'equal',
                     'action' => 'hide',
                     'name' => null,
                 ),
             ),
         'virtual_currency_price' => null,
         'purchase_limit' => null,
         'keywords' =>
             array (
                 'de' =>
                     array (
                         'Inhalt',
                         'Aufgaben',
                         'Region',
                         'Landschaft',
                     ),
                 'en' =>
                     array (
                         'content',
                         'quests',
                         'region',
                         'landscape',
                     ),
             ),
         'advertisement_type' => 'recommended',
         'deleted' => false,
    )
));
PUT /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku": "T-43-3-unique-id",
    "item_code": "chinese-medium-tank",
    "name": {
        "en": "T-34-3"
    },
    "description": {
        "en": "Chinese Tier VIII medium tank."
    },
    "long_description": {
            "en": "This Chinese Tier VIII medium tank is a real beast in its class."
    },
    "prices": {
        "USD": 40.09
    },
    "default_currency": "USD",
    "enabled": true,
    "permanent": false,
    "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
    "item_type": "Expiration",
    "expiration": 1296000,
    "groups": [
        24,
        25
    ],
    "user_attribute_conditions": [
         {
             "right_operand": [
                 "magic"
             ],
             "id": 2015,
             "user_attribute_key": "type",
             "operation": "equal",
             "action": "hide",
             "name":null
         }
    ],
    "virtual_currency_price": null,
    "purchase_limit": null,
    "keywords": {
        "de":[
            "Inhalt","Aufgaben","Region","Landschaft"
        ],
        "en":[
            "content","quests","region","landscape"
        ]
    },
    "advertisement_type": "recommended",
    "deleted": false
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

아이템 삭제

게임 아이템을 삭제합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

파라미터 유형 설명
item_id
int 아이템 ID입니다.

요청


<?php

$response = $xsollaClient->DeleteVirtualItem(array(
    'project_id' => PROJECT_ID,
    'item_id' => ITEM_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든 아이템 나열

게임 아이템을 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

파라미터 유형 설명
project_id
int 게임 ID입니다.
offset
int 사용자 항목 목록의 시작 페이지입니다.
limit
int 사용자 항목 목록 가져오기의 제한입니다.
has_price
string 항목 판매의 유형입니다. 'virtual_currency'(항목을 게임머니로 구매할 수 있는 경우) 또는 'real_currency'(항목을 실제 통화로 구매할 수 있는 경우)일 수 있습니다.

요청


<?php

$response = $xsollaClient->ListVirtualItems(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
            'id' => 46,
            'sku' => 'T-43-3-unique-id',
            'localized_name' => 'T-34-3',
            'prices' =>
                array (
                    'USD' => 40.09
                ),
            'default_currency' => 'USD',
            'enabled' => true,
            'permanent' => false,
            'groups' =>
                array (
                    25
                ),
            'advertisement_type' => null,
            'virtual_currency_price' => null
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]
[
    {
        "id": 46,
        "sku": "T-43-3-unique-id",
        "localized_name": "T-34-3",
        "prices": {
            "USD": 40.09
        },
        "default_currency": "USD",
        "enabled": true,
        "permanent": false,
        "groups": [
            25
        ],
        "advertisement_type": null,
        "virtual_currency_price": null
    }
]

그룹 생성

게임 아이템 그룹을 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups

파라미터 유형 설명
project_id
int 게임 ID입니다.
name
array of strings 아이템 그룹의 현지화된 이름의 배열입니다.
description
array of strings 아이템 그룹의 현지화된 설명의 배열입니다.
enabled
boolean 이 그룹을 사용할 수 있는지 여부를 나타냅니다.
parent_id
int 상위 그룹의 ID입니다.
code
int 그룹의 고유한 코드입니다.

요청

<?php

$response = $xsollaClient->CreateVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'name' =>
             array (
                 'en' => 'Tanks',
             ),
         'description' =>
             array (
                 'en' => 'Tanks Group',
             ),
         'enabled' => true,
         'parent_id' => null,
         'code' => null
     )
));
POST /merchant/v2/projects/{project_id}/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}'

응답

<?php

// example response
$response = array (
    'group_id' => 7
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "group_id": 7
}
{
    "group_id": 7
}

그룹 가져오기

게임 아이템 그룹을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

파라미터 유형 설명
group_id
int 아이템 그룹 ID입니다.

요청


<?php

$response = $xsollaClient->GetVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'id' => 25,
    'name' =>
        array (
            'en' => 'Tanks'
        ),
    'description' =>
        array (
            'en' => 'Tanks Group'
        ),
    'enabled' => true,
    'parent_id' => null,
    'code' => null
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 25,
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
{
    "id": 25,
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}

그룹 업데이트

게임 아이템 그룹을 가져옵니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

파라미터 유형 설명
group_id
int 아이템 그룹 ID입니다.
name
array of strings 아이템 그룹의 현지화된 이름의 배열입니다.
description
array of strings 아이템 그룹의 현지화된 설명의 배열입니다.
enabled
boolean 이 그룹을 사용할 수 있는지 여부를 나타냅니다.
parent_id
int 상위 그룹의 ID입니다.
code
int 그룹의 고유한 코드입니다.

요청

<?php

$response = $xsollaClient->UpdateVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID,
    'request' => array (
         'name' =>
             array (
                 'en' => 'Tanks',
             ),
         'description' =>
             array (
                 'en' => 'Tanks Group',
             ),
         'enabled' => true,
         'parent_id' => null,
         'code' => null
     )
));
PUT /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "name": {
        "en": "Tanks"
    },
    "description": {
        "en": "Tanks Group"
    },
    "enabled": true,
    "parent_id": null,
    "code": null
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

그룹 삭제

게임 아이템 그룹을 삭제합니다.

HTTP REQUEST

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}

파라미터 유형 설명
group_id
int 아이템 그룹 ID입니다.

요청


<?php

$response = $xsollaClient->DeleteVirtualItemsGroup(array(
    'project_id' => PROJECT_ID,
    'group_id' => GROUP_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/groups/{group_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups/{group_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든 그룹 나열

모든 게임 아이템 그룹을 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups

파라미터 유형 설명
project_id
int 게임 ID입니다.

요청


<?php

$response = $xsollaClient->ListVirtualItemsGroups(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/groups HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/groups' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 25,
        'localized_name' => 'Tanks',
        'enabled' => true,
        'parent_id' => null,
        'has_groups' => false,
        'has_virtual_items' => true,
        'virtual_items_count' => 6,
        'code' => null
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 25,
        "localized_name": "Tanks",
        "enabled": true,
        "parent_id": null,
        "has_groups": false,
        "has_virtual_items": true,
        "virtual_items_count": 6,
        "code": null
    }
]
[
    {
        "id": 25,
        "localized_name": "Tanks",
        "enabled": true,
        "parent_id": null,
        "has_groups": false,
        "has_virtual_items": true,
        "virtual_items_count": 6,
        "code": null
    }
]

확률 상자 (BETA)

확률 상자 생성

확률 상자를 생성합니다.

HTTP 요청

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

매개변수 유형 설명
project_id
int 게임 ID.
sku
string 아이템 고유 ID. SKU에는 소문자 라틴어 영숫자, 대시, 밑줄만 사용할 수 있습니다.
item_code
string 아이템 추가 코드. 옵션.
name
array of strings 현지화 한 아이템 이름.
description
array of strings 현지화 한 아이템 설명.
long_description
array of strings 현지화 한 아이템 긴 설명.
prices
array 아이템 가격.
default_currency
string 기본 주문 통화. ISO 4217에 따른 세자리 코드.
enabled
boolean 아이템을 활성화합니다.
permanent
boolean true인 경우, 아이템을 한 번만 구매할 수 있습니다.
image_url
string 아이템 이미지 URL.
item_type
string 아이템 유형: 'lootbox'
expiration
int 유효 시간(초). Expiration 유형 아이템만 해당
groups
array of integers 아이템이 속한 그룹.
deleted
boolean 아이템이 삭제된 여부.
user_attribute_conditions
array of objects 사용자 특성 조건.
user_attribute_conditions.right_operand
array 사용자 특성을 비교하는 값.
user_attribute_conditions.user_attribute_key
string 사용자 특성 조건 키
user_attribute_conditions.operation
string 조건 유형. 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn' 등.
user_attribute_conditions.action
string 동작 유형. 'hide', 'block', 'warning' 등.
advertisement_type
string 결제 UI에서 아이템에 표시되는 특수 배너 유형. 'recommended', 'best_deal', 'special_offer', null 등.
virtual_currency_price
int 게임 내 통화 가격. 'null'인 경우, 실제 통화로만 아이템 구매 가능.
purchase_limit
int 아이템을 구매할 수 있는 횟수. 'null'인 경우, 구매 횟수 제한 없음.
keywords
array 결제 UI에서 아이템을 찾을 때 사용할 수 있는 키워드.
key_virtual_item_id
int 확률 상자를 여는 가상 아이템의 ID.
opening_price_vc
int 가상 통화로 확률 상자를 여는 가격.
slots
array 확률 상자 슬롯. 각 슬롯에 드롭될 수 있는 아이템 세트를 지정하는 배열.
slots.id
int 슬롯 ID.
slots.value
object 슬롯 콘텐츠. 각 슬롯의 drop_rate 합계는 100%이어야 함.
slots.value.virtual_item
array 슬롯에 드롭될 수 있는 가상 아이템.
slots.value.virtual_item.id
int 아이템 ID.
slots.value.virtual_item.amount
float 아이템 수량.
slots.value.virtual_item.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.virtual_currency
object 슬롯에 드롭될 수 있는 가상 통화.
slots.value.virtual_currency.amount
float 통화 수량.
slots.value.virtual_currency.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.attribute
array 슬롯에 드롭될 수 있는 아이템의 특성.
slots.value.attribute.type
int 확률 상자에 드롭될 아이템을 선택하는 데 사용할 특성 유형.
slots.value.attribute.value
string 특성 값. 예: "rare".
slots.value.attribute.drop_rate
string 슬롯에 해당 특성의 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.compensation_for_duplicate_percent
int 가상 통화에 아이템이 중복될 경우 보상(아이템 가격 백분율).
slots.compensation_for_duplicate_value
float 가상 통화에 아이템이 중복될 경우 보상(절대값).
limits
object 확률 상자의 아이템 수량 제약 사항.
limits.virtual_item
object 가상 아이템 제약 사항.
limits.virtual_item.id
int 아이템 ID.
limits.virtual_item.max_items
int 확률 상자에 아이템이 드롭될 수 있는 최대 횟수.
limits.attribute
object 특성 제약 사항.
limits.attribute.type
int 제약 사항에 사용할 수 있는 특성 유형.
limits.attribute.value
string 제약 사항에 사용할 수 있는 특성 값.
limits.attribute.max_items
int 확률 상자에 해당 특성을 가진 아이템이 드롭될 수 있는 최대 횟수.

요청

<?php

$response = $xsollaClient->CreateVirtualItem(array(
'project_id' => PROJECT_ID,
'request' => array (
'sku' => 'T-43-3-unique-id',
'item_code' => 'chinese-medium-tank',
'name' =>
array (
'en' => 'T-34-3',
),
'description' =>
array (
'en' => 'Chinese Tier VIII medium tank.',
),
'long_description' =>
array (
'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
),
'prices' =>
array (
'USD' => 40.09,
),
'default_currency' => 'USD',
'enabled' => true,
'permanent' => false,
'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
'item_type' => 'lootbox',
'expiration' => 1296000,
'groups' =>
array (
24,
25,
),
'user_attribute_conditions' =>
array (
array (
'right_operand' =>
array (
'magic',
),
'id' => 2015,
'user_attribute_key' => 'type',
'operation' => 'equal',
'action' => 'hide',
'name' => null,
),
),
'virtual_currency_price' => null,
'purchase_limit' => null,
'keywords' =>
array (
'de' =>
array (
'Inhalt',
'Aufgaben',
'Region',
'Landschaft',
),
'en' =>
array (
'content',
'quests',
'region',
'landscape',
),
),
'advertisement_type' => 'recommended',
'deleted' => false,
)
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false,
"slots":[
{
"id":123,
"value":{
"virtual_items":[
{
"id":123,
"amount":10,
"drop_rate":20
},
{
"id":321,
"amount":15,
"drop_rate":50
}
],
"attribute":[
{
"type":1,
"value":"rare",
"drop_rate":20
}
],
"virtual_currency":[
{
"amount":100,
"drop_rate":10
}
]
},
"compensation_for_duplicate_percent":10,
"compensation_for_duplicate_value":50
}
],
"limits":{
"virtual_item":{
"id":123,
"max_items":5
},
"attribute":{
"type":1,
"value":"rare",
"max_items":5
}
}
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false,
"slots":[
{
"id":123,
"value":{
"virtual_items":[
{
"id":123,
"amount":10,
"drop_rate":20
},
{
"id":321,
"amount":15,
"drop_rate":50
}
],
"attribute":[
{
"type":1,
"value":"rare",
"drop_rate":20
}
],
"virtual_currency":[
{
"amount":100,
"drop_rate":10
}
]
},
"compensation_for_duplicate_percent":10,
"compensation_for_duplicate_value":50
}
],
"limits":{
"virtual_item":{
"id":123,
"max_items":5
},
"attribute":{
"type":1,
"value":"rare",
"max_items":5
}
}
}'

응답

<?php

// example response
$response = array (
'item_id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
"item_id": 77
}
{
"item_id": 77
}

확률 상자 업데이트

확률 상자를 업데이트합니다.

HTTP 요청

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

매개변수 유형 설명
project_id
int 게임 ID.
sku
string 아이템 고유 ID. SKU에는 소문자 라틴어 영숫자, 대시, 밑줄만 사용할 수 있습니다.
item_code
string 아이템 추가 코드. 옵션.
name
array of strings 현지화 한 아이템 이름.
description
array of strings 현지화 한 아이템 설명.
long_description
array of strings 현지화 한 아이템 긴 설명.
prices
array 아이템 가격.
default_currency
string 기본 주문 통화. ISO 4217에 따른 세자리 코드.
enabled
boolean 아이템을 활성화합니다.
permanent
boolean true인 경우, 아이템을 한 번만 구매할 수 있습니다.
image_url
string 아이템 이미지 URL.
item_type
string 아이템 유형: 'lootbox'
expiration
int 유효 시간(초). Expiration 유형 아이템만 해당
groups
array of integers 아이템이 속한 그룹.
deleted
boolean 아이템이 삭제된 여부.
user_attribute_conditions
array of objects 사용자 특성 조건.
user_attribute_conditions.right_operand
array 사용자 특성을 비교하는 값.
user_attribute_conditions.user_attribute_key
string 사용자 특성 조건 키
user_attribute_conditions.operation
string 조건 유형. 'greater', 'greaterOrEqual', 'equal', 'notEqual', 'less', 'lessOrEqual', 'between', 'in', 'notIn' 등.
user_attribute_conditions.action
string 동작 유형. 'hide', 'block', 'warning' 등.
advertisement_type
string 결제 UI에서 아이템에 표시되는 특수 배너 유형. 'recommended', 'best_deal', 'special_offer', null 등.
virtual_currency_price
int 게임 내 통화 가격. 'null'인 경우, 실제 통화로만 아이템 구매 가능.
purchase_limit
int 아이템을 구매할 수 있는 횟수. 'null'인 경우, 구매 횟수 제한 없음.
keywords
array 결제 UI에서 아이템을 찾을 때 사용할 수 있는 키워드.
key_virtual_item_id
int 확률 상자를 여는 가상 아이템의 ID.
opening_price_vc
int 가상 통화로 확률 상자를 여는 가격.
slots
array 확률 상자 슬롯. 각 슬롯에 드롭될 수 있는 아이템 세트를 지정하는 배열.
slots.id
int 슬롯 ID.
slots.value
object 슬롯 콘텐츠. 각 슬롯의 drop_rate 합계는 100%이어야 함.
slots.value.virtual_item
array 슬롯에 드롭될 수 있는 가상 아이템.
slots.value.virtual_item.id
int 아이템 ID.
slots.value.virtual_item.amount
float 아이템 수량.
slots.value.virtual_item.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.virtual_currency
object 슬롯에 드롭될 수 있는 가상 통화.
slots.value.virtual_currency.amount
float 통화 수량.
slots.value.virtual_currency.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.attribute
array 슬롯에 드롭될 수 있는 아이템의 특성.
slots.value.attribute.type
int 확률 상자에 드롭될 아이템을 선택하는 데 사용할 특성 유형.
slots.value.attribute.value
string 특성 값. 예: "rare".
slots.value.attribute.drop_rate
string 슬롯에 해당 특성의 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.compensation_for_duplicate_percent
int 가상 통화에 아이템이 중복될 경우 보상(아이템 가격 백분율).
slots.compensation_for_duplicate_value
float 가상 통화에 아이템이 중복될 경우 보상(절대값).
limits
object 확률 상자의 아이템 수량 제약 사항.
limits.virtual_item
object 가상 아이템 제약 사항.
limits.virtual_item.id
int 아이템 ID.
limits.virtual_item.max_items
int 확률 상자에 아이템이 드롭될 수 있는 최대 횟수.
limits.attribute
object 특성 제약 사항.
limits.attribute.type
int 제약 사항에 사용할 수 있는 특성 유형.
limits.attribute.value
string 제약 사항에 사용할 수 있는 특성 값.
limits.attribute.max_items
int 확률 상자에 해당 특성을 가진 아이템이 드롭될 수 있는 최대 횟수.

요청

<?php

$response = $xsollaClient->CreateVirtualItem(array(
'project_id' => PROJECT_ID,
'request' => array (
'sku' => 'T-43-3-unique-id',
'item_code' => 'chinese-medium-tank',
'name' =>
array (
'en' => 'T-34-3',
),
'description' =>
array (
'en' => 'Chinese Tier VIII medium tank.',
),
'long_description' =>
array (
'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
),
'prices' =>
array (
'USD' => 40.09,
),
'default_currency' => 'USD',
'enabled' => true,
'permanent' => false,
'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
'item_type' => 'lootbox',
'expiration' => 1296000,
'groups' =>
array (
24,
25,
),
'user_attribute_conditions' =>
array (
array (
'right_operand' =>
array (
'magic',
),
'id' => 2015,
'user_attribute_key' => 'type',
'operation' => 'equal',
'action' => 'hide',
'name' => null,
),
),
'virtual_currency_price' => null,
'purchase_limit' => null,
'keywords' =>
array (
'de' =>
array (
'Inhalt',
'Aufgaben',
'Region',
'Landschaft',
),
'en' =>
array (
'content',
'quests',
'region',
'landscape',
),
),
'advertisement_type' => 'recommended',
'deleted' => false,
)
));
POST /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

확률 상자 가져오기

확률 상자에 대한 정보를 가져옵니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

매개변수 유형 설명
item_id
int 아이템 ID.

요청


<?php

$response = $xsollaClient->GetVirtualItem(array(
'project_id' => PROJECT_ID,
'item_id' => ITEM_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
'id' => 77,
'sku' => 'T-43-3-unique-id',
'item_code' => 'chinese-medium-tank',
'name' =>
array (
'en' => 'T-34-3'
),
'description' =>
array (
'en' => 'Chinese Tier VIII medium tank.'
),
'long_description' =>
array (
'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.'
),
'prices' =>
array (
'USD' => 40.09
),
'default_currency' => 'USD',
'enabled' => true,
'permanent' => false,
'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
'item_type' => 'lootbox',
'expiration' => 1296000,
'groups' =>
array (
24,
25
),
'user_attribute_conditions' =>
array (
array (
'right_operand' =>
array (
'magic',
),
'id' => 2015,
'user_attribute_key' => 'type',
'operation' => 'equal',
'action' => 'hide',
'name' => null,
),
),
'virtual_currency_price' => null,
'purchase_limit' => null,
'keywords' =>
array (
'de' =>
array (
'Inhalt',
'Aufgaben',
'Region',
'Landschaft',
),
'en' =>
array (
'content',
'quests',
'region',
'landscape',
),
),
'advertisement_type' => 'recommended',
'deleted' => false,
);
HTTP/1.1 200 OK
Content-Type: application/json

{
"id": 77,
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false
}
{
"id": 77,
"sku": "T-43-3-unique-id",
"item_code": "chinese-medium-tank",
"name": {
"en": "T-34-3"
},
"description": {
"en": "Chinese Tier VIII medium tank."
},
"long_description": {
"en": "This Chinese Tier VIII medium tank is a real beast in its class."
},
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
"item_type": "lootbox",
"expiration": 1296000,
"groups": [
24,
25
],
"user_attribute_conditions": [
{
"right_operand": [
"magic"
],
"id": 2015,
"user_attribute_key": "type",
"operation": "equal",
"action": "hide",
"name":null
}
],
"virtual_currency_price": null,
"purchase_limit": null,
"keywords": {
"de":[
"Inhalt","Aufgaben","Region","Landschaft"
],
"en":[
"content","quests","region","landscape"
]
},
"advertisement_type": "recommended",
"deleted": false
}

확률 상자 목록 나열

확률 상자 목록을 나열합니다.

HTTP 요청

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items

매개변수 유형 설명
project_id
int 게임 ID.
offset
int 페이지 번호.
limit
int 페이지 별로 기록.
has_price
string 아이템 구매에 사용할 수 있는 통화 종류. 가상 또는 실제 통화로 구매할 수 있는 아이템에 각각 'virtual_currency' 또는 'real_currency' 지정 가능.

요청


<?php

$response = $xsollaClient->ListVirtualItems(array(
'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_items/items HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
array (
'id' => 46,
'sku' => 'T-43-3-unique-id',
'localized_name' => 'T-34-3',
'prices' =>
array (
'USD' => 40.09
),
'default_currency' => 'USD',
'enabled' => true,
'permanent' => false,
'groups' =>
array (
25
),
'advertisement_type' => null,
'virtual_currency_price' => null
)
);
HTTP/1.1 200 OK
Content-Type: application/json

[
{
"id": 46,
"sku": "T-43-3-unique-id",
"localized_name": "T-34-3",
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"groups": [
25
],
"advertisement_type": null,
"virtual_currency_price": null
}
]
[
{
"id": 46,
"sku": "T-43-3-unique-id",
"localized_name": "T-34-3",
"prices": {
"USD": 40.09
},
"default_currency": "USD",
"enabled": true,
"permanent": false,
"groups": [
25
],
"advertisement_type": null,
"virtual_currency_price": null
}
]

확률 상자 열기

HTTP 요청

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open

매개변수 유형 설명
slots
array 확률 상자 슬롯. 각 슬롯에 드롭될 수 있는 아이템 세트를 지정하는 배열.
slots.id
int 슬롯 ID.
slots.value
object 슬롯 콘텐츠. 각 슬롯의 drop_rate 합계는 100%이어야 함.
slots.value.virtual_item
array 슬롯에 드롭될 수 있는 가상 아이템.
slots.value.virtual_item.id
int 아이템 ID.
slots.value.virtual_item.amount
float 아이템 수량.
slots.value.virtual_item.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.virtual_currency
object 슬롯에 드롭될 수 있는 가상 통화.
slots.value.virtual_currency.amount
float 통화 수량.
slots.value.virtual_currency.drop_rate
decimal 슬롯에 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.value.attribute
array 슬롯에 드롭될 수 있는 아이템의 특성.
slots.value.attribute.type
int 확률 상자에 드롭될 아이템을 선택하는 데 사용할 특성 유형.
slots.value.attribute.value
string 특성 값. 예: "rare".
slots.value.attribute.drop_rate
string 슬롯에 해당 특성의 아이템이 드롭될 수 있는 확률(소수점 아래 2자리까지).
slots.compensation_for_duplicate_percent
int 가상 통화에 아이템이 중복될 경우 보상(아이템 가격 백분율).
slots.compensation_for_duplicate_value
float 가상 통화에 아이템이 중복될 경우 보상(절대값).

요청

<?php

$response = $xsollaClient->GetVirtualItem(array(
'project_id' => PROJECT_ID,
'item_id' => ITEM_ID
));
POST /merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}/open' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \

응답

<?php
HTTP/1.1 200 OK

확률 상자 삭제

확률 상자를 삭제합니다.

HTTP 요청

DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}

매개변수 유형 설명
item_id
int 아이템 ID.

요청


<?php

$response = $xsollaClient->DeleteVirtualItem(array(
'project_id' => PROJECT_ID,
'item_id' => ITEM_ID
));
DELETE /merchant/v2/projects/{project_id}/virtual_items/items/{item_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_items/items/{item_id}' \
-X DELETE \
-u merchant_id:merchant_api_key

응답

<?php

$response = null;
HTTP/1.1 204 No Content

게임머니 패키지 나열

프로젝트 게임머니 설정을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency

파라미터 유형 설명
project_id
int 게임 ID입니다.

요청


<?php

$response = $xsollaClient->GetProjectVirtualCurrencySettings(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'id' => 1,
    'vc_name' =>
        array (
            'en' => 'Golden Coins'
        ),
    'base' =>
        array (
            'USD' => 0.04,
            'EUR' => 0.03
        ),
    'default_currency' => 'USD',
    'min' => 0,
    'max' => 0,
    'is_currency_discrete' => true,
    'allow_user_sum' => true,
    'packets' =>
        array (
            'USD' =>
                array (
                    array (
                        'id' => 1,
                        'sku' => 'vc_usd',
                        'amount' => 100,
                        'price' => 10,
                        'image_url' => '//images.storage.com/some_image',
                        'description' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'label' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'bonus' => 0,
                        'advertisement_type' => 'recommended'
                        'enabled' => true
                    )
                ),
            'EUR' =>
                array (
                    array (
                        'id' => 2,
                        'sku' => 'vc_eur',
                        'amount' => 80,
                        'price' => 5,
                        'image_url' => null,
                        'description' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'label' =>
                            array (
                                'en' => 'Standard Package'
                            ),
                        'bonus' => 0,
                        'advertisement_type' => 'recommended'
                        'enabled' => true
                    )
                )
        ),
    'type' => 'packets',
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 1,
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    },
    "type": "packets"
}
{
    "id": 1,
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    },
    "type": "packets"
}

게임머니 패키지 업데이트

프로젝트 게임머니 설정을 업데이트합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency

파라미터 유형 설명
project_id
int 게임 ID입니다.
vc_name
array of strings 제품 이름입니다. 값은 <localization>:<product name> 쌍으로 구성되어 있습니다.
base
array 기본 제품 통화의 Json 개체입니다. 여기서 키는 통화(ISO 4217)에 따라 통화의 3자 정의가 사용됨)이고 값은 해당 통화 금액입니다.
default_currency
string 기본 통화입니다.
min
float 최소 구매 금액입니다.
max
float 최대 구매 금액입니다.
is_currency_discrete
boolean 게임머니에 센트를 사용할 수 있는지 여부입니다.
allow_user_sum
boolean 패키지 간에 어느 금액이든지 지불하도록 허용되는지 여부입니다.
amount
float 패키지의 게임머니 금액입니다.
sku
string 게임머니 패키지의 고유한 ID입니다.
price
float 게임머니 패키지 가격입니다.
image_url
string 패키지 이미지 URL입니다.
description
array of strings 지역화된 패키지 이름이 포함된 배열입니다. 값은 <localization>:<package description> 쌍으로 구성되어 있습니다.
label
array of strings 지역화된 패키지 레이블이 포함된 배열입니다. 값은 <localization>:<package description> 쌍으로 구성되어 있습니다.
bonus
float 패키지에 대한 할인율 금액입니다.
advertisement_type
string 게임머니 패키지에 대한 레이블 유형입니다. 'recommended', 'best_deal', 'special_offer' 또는 null일 수 있습니다.
enabled
boolean 게임머니 패키지가 사용되는지 여부입니다.

요청

<?php

$response = $xsollaClient->UpdateProjectVirtualCurrencySettings(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'vc_name' =>
             array (
                 'en' => 'Golden Coins'
             ),
         'base' =>
             array (
                 'USD' => 0.04,
                 'EUR' => 0.02,
             ),
         'default_currency' => 'USD',
         'min' => 0,
         'max' => 0,
         'is_currency_discrete' => true,
         'allow_user_sum' => true,
         'packets' =>
             array (
                 'USD' =>
                     array (
                         array (
                             'id' => 1,
                             'sku' => 'vc_usd',
                             'amount' => 100,
                             'price' => 10,
                             'image_url' => '//images.storage.com/some_image',
                             'description' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'label' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'bonus' => 0,
                             'advertisement_type' => 'recommended'
                             'enabled' => true
                         )
                     ),
                 'EUR' =>
                     array (
                         array (
                             'id' => 2,
                             'sku' => 'vc_eur',
                             'amount' => 80,
                             'price' => 5,
                             'image_url' => null,
                             'description' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'label' =>
                                 array (
                                     'en' => 'Standard Package'
                                 ),
                             'bonus' => 0,
                             'advertisement_type' => 'recommended'
                             'enabled' => true
                         )
                     )
             ),
         'type' => 'packets',
     )
));
PUT /merchant/v2/projects/{project_id}/virtual_currency HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    }
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/virtual_currency' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "vc_name": {
        "en": "Golden Coins"
    },
    "base": {
        "USD": 0.04,
        "EUR": 0.03
    },
    "default_currency": "USD",
    "min": 0,
    "max": 0,
    "is_currency_discrete": true,
    "allow_user_sum": true,
    "packets": {
        "USD": [
            {
                "id": 1,
                "sku": "vc_usd",
                "amount": 100,
                "price": 10,
                "image_url": "//images.storage.com/some_image",
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ],
        "EUR": [
            {
                "id": 2,
                "sku": "vc_eur",
                "amount": 80,
                "price": 5,
                "image_url": null,
                "description": {
                    "en": "Standard Package"
                },
                "label": {
                    "en": "Standard Package"
                },
                "bonus": 0,
                "advertisement_type": "recommended",
                "enabled": true
            }
        ]
    }
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

전자지갑

이 섹션은 게임유저 잔액과 관련된 작업에 대해 다룹니다. 잔액확인, 재충전, 인출, 그외 게임유저관련 기능 등을 설정할 수 있습니다.

새 게임유저 생성

새 게임유저를 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users

파라미터 유형 설명
project_id
int 게임 ID입니다. (필수)
user_id
string 게임유저 ID입니다. (필수)
user_name
string 게임유저의 이름입니다.
user_custom
string 게임유저 식별을 위한 파라미터를 사용자 지정합니다.
email
string 이메일입니다.

요청

<?php

$response = $xsollaClient->CreateWalletUser(array(
    'project_id' => PROJECT_ID,
    'request' => array(
        'user_id' => USER_ID
    )
));
POST /merchant/v2/projects/{project_id}/users HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "user_id": 1
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "user_id": 1
}'

응답

HTTP/1.1 204 No Content

게임유저 데이터 가져오기

게임유저 데이터를 찾아옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.

요청

<?php

$response = $xsollaClient->GetWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID
));
GET /merchant/v2/projects/{project_id}/users/{user_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'user_id' => 0,
    'user_name' => 'John',
    'user_custom' => 'Smith',
    'email' => 'email@example.com',
    'register_date' => '2014-10-08T21:44:32+04:00',
    'balance' => 100,
    'wallet_amount' => 1.5,
    'wallet_currency' => 'USD',
    'enabled' => true
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "user_id": 0,
    "user_name": "John",
    "user_custom": "Smith",
    "email": "email@example.com",
    "register_date": "2014-10-08T21:44:32-08:00",
    "balance": 100,
    "wallet_amount": 1.5,
    "wallet_currency": "USD",
    "enabled": true
}
{
    "user_id": 0,
    "user_name": "John",
    "user_custom": "Smith",
    "email": "email@example.com",
    "register_date": "2014-10-08T21:44:32-08:00",
    "balance": 100,
    "wallet_amount": 1.5,
    "wallet_currency": "USD",
    "enabled": true
}

게임유저 업데이트

게임유저 정보를 업데이트합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}

파라미터 유형 설명
project_id
int 게임 ID입니다. (필수)
user_id
string 게임유저 ID입니다. (필수)
user_name
string 게임유저의 이름입니다.
user_custom
string 게임유저 식별을 위한 파라미터를 사용자 지정합니다.
email
string 이메일입니다.
enabled
boolean 이 게임유저가 활성화되었는지 여부를 나타냅니다, (필수)

요청

<?php

$response = $xsollaClient->UpdateWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'request' => array(
        'enabled' => true
    )
));
PUT /merchant/v2/projects/{project_id}/users/{user_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "enabled": true
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "enabled": true
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든 게임유저 나열

모든 게임유저를 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users

파라미터 유형 설명
project_id
int 게임 ID입니다. (필수)
user_requisites
string 게임유저 ID입니다.
email
string 게임유저 이메일입니다.
offset
int 게임유저 검색의 오프셋입니다. (필수)
limit
int 응답 게임유저 수의 한계값입니다. (필수)

요청

<?php

$response = $xsollaClient->ListWalletUsers(array(
    'project_id' => PROJECT_ID,
    'limit' => 1,
    'offset' => 0
));
GET /merchant/v2/projects/{project_id}/users?offset=1&limit=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users?offset=1&limit=1' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'recordsTotal' => 1,
    'data' =>
        array (
            array (
                'user_id' => 0,
                'user_name' => 'John',
                'user_custom' => 'Smith',
                'email' => 'email@example.com',
                'register_date' => '2014-10-08T21:44:32-08:00',
                'balance' => 100,
                'wallet_amount' => 1.5,
                'wallet_currency' => 'USD',
                'enabled' => true
            )
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "recordsTotal": 1,
    "data": [
        {
            "user_id": 0,
            "user_name": "John",
            "user_custom": "Smith",
            "email": "email@example.com",
            "register_date": "2014-10-08T21:44:32-08:00",
            "balance": 100,
            "wallet_amount": 1.5,
            "wallet_currency": "USD",
            "enabled": true
        }
    ]
}
{
    "recordsTotal": 1,
    "data": [
        {
            "user_id": 0,
            "user_name": "John",
            "user_custom": "Smith",
            "email": "email@example.com",
            "register_date": "2014-10-08T21:44:32-08:00",
            "balance": 100,
            "wallet_amount": 1.5,
            "wallet_currency": "USD",
            "enabled": true
        }
    ]
}

모든 작업 나열

모든 작업을 나열합니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/transactions

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
datetime_from
datetime 날짜 범위의 시작입니다.
datetime_to
datetime 날짜 범위의 끝입니다.
transaction_type
string 작업의 유형입니다. "payment", "coupon", "inGamePurchase", "internal" 또는 "cancellation"일 수 있습니다.

요청

<?php

$response = $xsollaClient->ListWalletUserOperations(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'datetime_from' => '2015-01-01T00:00:00Z',
    'datetime_to' => '2016-01-01T00:00:00Z'
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/transactions?datetime_from=2014-10-14T00%3A00%3A00Z&datetime_to=2014-10-15T00%3A00%3A00Z HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/transactions?datetime_from=2014-10-14T00%3A00%3A00Z&datetime_to=2014-10-15T00%3A00%3A00Z' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'operation_id' => 647287,
        'transaction_id' => 1234567,
        'coupon_id' => null,
        'coupon_code' => null,
        'transaction_type' => 'invoice',
        'comment' => 'Incoming payment',
        'date' => '2014-10-28T12:00:00+04:00',
        'amount' => 1000,
        'sum' => 10,
        'currency' => 'USD',
        'status' => 'notified',
        'user_balance' => 100,
        'user_id' => '1234567'
    ),
    array (
        'operation_id' => 647288,
        'transaction_id' => null,
        'coupon_id' => null,
        'coupon_code' => 'DemoCoupon',
        'transaction_type' => 'coupon',
        'comment' => 'Coupon Redeem',
        'date' => '2014-10-28T14:00:00+04:00',
        'amount' => 0,
        'sum' => null,
        'currency' => null,
        'status' => 'failed',
        'user_balance' => 100,
        'user_id' => '1234567'
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "operation_id": 647287,
        "transaction_id": 1234567,
        "coupon_id": null,
        "coupon_code": null,
        "transaction_type": "invoice",
        "comment": "Incoming payment",
        "date": "2014-10-28T12:00:00+04:00",
        "amount": 1000,
        "sum": 10,
        "currency": "USD",
        "status": "notified",
        "user_balance": 100,
        "user_id": "1234567"
    },
    {
        "operation_id": 647288,
        "transaction_id": null,
        "coupon_id": 12345,
        "coupon_code": "DemoCoupon",
        "transaction_type": "coupon",
        "comment": "Coupon Redeem",
        "date": "2014-10-28T14:00:00+04:00",
        "amount": 0,
        "sum": null,
        "currency": null,
        "status": "failed",
        "user_balance": 100,
        "user_id": "1234567"
    }
]
[
    {
        "operation_id": 647287,
        "transaction_id": 1234567,
        "coupon_id": null,
        "coupon_code": null,
        "transaction_type": "invoice",
        "comment": "Incoming payment",
        "date": "2014-10-28T12:00:00+04:00",
        "amount": 1000,
        "sum": 10,
        "currency": "USD",
        "status": "notified",
        "user_balance": 100,
        "user_id": "1234567"
    },
    {
        "operation_id": 647288,
        "transaction_id": null,
        "coupon_id": 12345,
        "coupon_code": "DemoCoupon",
        "transaction_type": "coupon",
        "comment": "Coupon Redeem",
        "date": "2014-10-28T14:00:00+04:00",
        "amount": 0,
        "sum": null,
        "currency": null,
        "status": "failed",
        "user_balance": 100,
        "user_id": "1234567"
    }
]

잔액 변경

잔액을 변경합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/recharge

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
amount
float 게임머니 금액입니다.
comment
string 잔액 변경 사유를 설명합니다.

요청

<?php

$response = $xsollaClient->RechargeWalletUserBalance(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'request' => array(
        'amount' => 10,
        'comment' => 'Incoming payment'
    )
));
POST /merchant/v2/projects/{project_id}/users/{user_id}/recharge HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "amount": 10,
    "comment": "Incoming payment"
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/recharge' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "amount": 10,
    "comment": "Incoming payment"
}'

응답

<?php

// example response
$response = array (
    'amount' => 110
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "amount": 110
}
{
    "amount": 110
}

모든 게임 아이템 나열

게임유저의 게임 아이템을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
offset
int 게임유저 아이템 목록의 시작 페이지입니다.
limit
int 게임유저 아이켐 목록 가져오기의 한계값입니다.

요청

<?php

$response = $xsollaClient->ListWalletUserVirtualItems(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'limit' => 1,
    'offset' => 0
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/virtual_items?offset=1&limit=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items?offset=1&limit=1' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 1,
        'sku' => 'item1',
        'quantity' => 10
    ),
    array (
        'id' => 2,
        'sku' => 'item2',
        'quantity' => 5
    ),
);
HTTP/1.1 200 OK
Content-Type: application/json

[
         {
            "id": 1,
            "sku": "item1",
            "quantity": 10
         },
         {
            "id": 2,
            "sku": "item2",
            "quantity": 5
         }
]
[
         {
            "id": 1,
            "sku": "item1",
            "quantity": 10
         },
         {
            "id": 2,
            "sku": "item2",
            "quantity": 5
         }
]

모든 사용자의 가상 항목 나열

모든 프로젝트 사용자의 가상 항목을 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/virtual_items/total

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
offset
int 게임유저 아이템 목록의 시작 페이지입니다.
limit
int 게임유저 아이켐 목록 가져오기의 한계값입니다.

요청

<?php

$response = $xsollaClient->ListWalletUserVirtualItems(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'limit' => 1,
    'offset' => 0
));
GET /merchant/v2/projects/{project_id}/users/{user_id}/virtual_items?offset=1&limit=1 HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items?offset=1&limit=1' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
  array (
      'user_id' => 'V1',
      'virtual_items' =>
          array (
              'id' => 1,
              'sku' => 'item1',
              'quantity' => '10'
            ),
            array (
                'id' => 2,
                'sku' => 'item2',
                'quantity' => '5'
              ),
        ),   
  array (
      'user_id' => 'V2',
      'virtual_items' =>
          array (
              'id' => 1,
              'sku' => 'item1',
              'quantity' => '9'
              ),
        ),            
);
HTTP/1.1 200 OK
Content-Type: application/json

[
{
   "user_id": "V1",
   "virtual_items": [
      {
         "id": 1,
         "sku": "item1",
         "quantity": 10
      },
      {
         "id": 2,
         "sku": "item2",
         "quantity": 5
      }
   ]
},
{
   "user_id": "V2",
   "virtual_items": [
      {
         "id": 1,
         "sku": "item1",
         "quantity": 9
      }
   ]      
}
]
[
{
   "user_id": "V1",
   "virtual_items": [
      {
         "id": 1,
         "sku": "item1",
         "quantity": 10
      },
      {
         "id": 2,
         "sku": "item2",
         "quantity": 5
      }
   ]
},
{
   "user_id": "V2",
   "virtual_items": [
      {
         "id": 1,
         "sku": "item1",
         "quantity": 9
      }
   ]
}
]

게임유저에 아이템 추가

게임유저 계정에 게임 아이템을 추가합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/add

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임유저 ID입니다.
virtual_items
array 게임 아이템 데이터와 관련된 배열입니다.
virtual_items.virtual_item
object 게임 아이템 데이터와 관련된 값입니다.
virtual_items.virtual_item.sku
string 아이템 고유 ID입니다.
virtual_items.amount
int 아이템의 수량입니다.

요청

<?php

$response = $xsollaClient->AddVirtualItemToWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'request' => array(
        'virtual_items' => array(
            array(
                'virtual_item' => array(
                    'sku' => 'ar23_shop_expiration_3'
                ),
                'amount' => 2
            )
        )
    )
));
POST /merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/add HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "virtual_items": [
        {
            "virtual_item":
                {
                    "sku" : "ar23_shop_expiration_3"
                },
            "amount": 2
        }
    ]
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/add' \
-X POST \
-u merchant_id:merchant_api_key
-d '{
        "virtual_items": [
            {
                "virtual_item":
                    {
                        "sku" : "ar23_shop_expiration_3"
                    },
                "amount": 2
            }
        ]
    }'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

게임유저로부터 아이템 삭제

유저 계정에서 가상 아이템을 삭제합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/remove

파라미터 유형 설명
project_id
int 게임 ID입니다.
user_id
string 게임 내 유저 ID입니다.
virtual_items
array 가상 아이템 데이터와 관련된 배열입니다.
virtual_items.virtual_item
object 가상 아이템 데이터와 관련된 개체입니다.
virtual_items.virtual_item.sku
string 아이템 고유 ID입니다.
virtual_items.amount
int 아이템의 수량입니다.

요청

<?php

$response = $xsollaClient->DeleteVirtualItemFromWalletUser(array(
    'project_id' => PROJECT_ID,
    'user_id' => USER_ID,
    'request' => array(
        'virtual_items' => array(
            array(
                'virtual_item' => array(
                    'sku' => 'ar23_shop_expiration_3'
                ),
                'amount' => 2,
            )
        )
    )
));
POST /merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/remove HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "virtual_items": [
        {
            "virtual_item":
                {
                    "sku" : "ar23_shop_expiration_3"
                },
            "amount": 2
        }
    ]
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/virtual_items/remove' \
-X POST \
-u merchant_id:merchant_api_key
-d '{
        "virtual_items": [
            {
                "virtual_item":
                    {
                        "sku" : "ar23_shop_expiration_3"
                    },
                "amount": 2
            }
        ]
    }'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

게임 제공 엔터티 생성

게임 제공 엔터티를 만듭니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다.
sku
string 게임 제공 고유 ID입니다. SKU에는 소문자 라틴 문자, 숫자, 대시 및 밑줄만 포함되어야 합니다.
name
object 게임 제공 엔터티에 대한 지역화된 이름의 배열입니다.
description
object 게임 제공 엔터티에 대한 지역화된 설명의 배열입니다.
system_requirements
string 현재 게임에 대한 시스템 요구 사항입니다.
image_url
string 이미지의 URL입니다. (옵션)
long_description
string 게임 제공 엔터티에 대한 자세한 설명입니다. (옵션)
locales_list
string 쉼표로 구분된 지역화 목록입니다. (옵션)
publisher
string 게임 퍼블리셔입니다. (옵션)
developer
string 게임 개발자입니다. (옵션)
video_link string 게임에 대한 비디오의 링크입니다. (옵션)
genre
string 게임 장르입니다. (옵션)
additional_info
string 게임에 대한 추가 정보입니다. (옵션)
forum_link string 포럼의 링크입니다. (옵션)
support_link string 지원부 연락처가 제공되는 페이지의 링크입니다. (옵션)
old_price
string 이 게임의 이전 가격입니다. (옵션)
parent_id
int 부모 게임의 ID입니다. (옵션)
default_currency
string 구매의 기본 통화입니다. ISO 4217에 따라 통화의 3자 정의가 사용됩니다.
release_date
string 게임의 예상 릴리스 날짜입니다. (옵션)
drm
array DRM에 대한 데이터가 포함된 배열입니다.
drm.id
int 이 게임에 사용 가능한 DRM의 ID입니다.
drm.prices
array DRM에 대한 게임 가격의 배열입니다. (옵션)
drm.platforms
array DRM 플랫폼에 대한 데이터가 포함된 배열입니다.
drm.platforms.id
int 이 DRM에 의해 지원되는 플랫폼의 ID입니다.
drm.enabled
boolean DRM이 이 게임에 사용되는지 여부입니다.
obtain_code_from_db
boolean 당사 데이터베이스에서 PIN 코드를 사용하는지 여부입니다. (옵션)
obtain_code_from_api
boolean API를 통해 받은 PIN 코드를 사용하는지 여부입니다. (옵션)

요청

<?php

$response = $xsollaClient->CreateGameDeliveryEntity(array(
    'project_id' => PROJECT_ID,
    'request' => array (
         'sku' => 'GTA5',
         'name' =>
             array (
                 'en' => 'GTA V',
             ),
         'description' =>
             array (
                 'en' => 'Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games.',
             ),
         'system_requirements' => 'OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)',
         'image_url' => '//cdn2.xsolla.com/img/misc/merchant/default-item.png',
         'long_description' => NULL,
         'locales_list' => NULL,
         'publisher' => NULL,
         'developer' => NULL,
         'video_link' => NULL,
         'genre' => NULL,
         'additional_info' => NULL,
         'forum_link' => NULL,
         'support_link' => NULL,
         'old_price' => NULL,
         'parent_id' => NULL,
         'default_currency' => 'EUR',
         'release_date' => '2016-01-01T00:00:00+00:00',
         'drm' =>
             array (
                 array (
                     'id' => 1,
                     'platforms' =>
                         array (
                             array (
                                 'id' => 1,
                             ),
                             array (
                                 'id' => 2,
                             ),
                         ),
                     'prices' =>
                         array (
                             'USD' => 19.99,
                             'EUR' => 18.5,
                         ),
                     'enabled' => true
                 ),
             ),
         'obtain_code_from_api' => false,
         'obtain_code_from_db' => false,
     )
));
POST /merchant/v2/projects/{project_id}/game_delivery HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "sku":"GTA5",
    "name":{
        "en":"GTA V"
    },
    "description":{
        "en":"Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements":"OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url":"//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description":null,
    "locales_list":null,
    "publisher":null,
    "developer":null,
    "video_link":null,
    "genre":null,
    "additional_info":null,
    "forum_link":null,
    "support_link":null,
    "old_price":null,
    "parent_id":null,
    "default_currency":"EUR",
    "release_date":"2016-01-01T00:00:00+00:00",
    "drm":[
        {
            "id":1,
            "platforms":[
                {
                    "id":1
                },
                {
                    "id":2
                }
            ],
            "prices":{
                "USD":19.99,
                "EUR":18.5
            },
            "enabled":true
        }
    ],
    "obtain_code_from_api":false,
    "obtain_code_from_db":false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku":"GTA5",
    "name":{
        "en":"GTA V"
    },
    "description":{
        "en":"Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements":"OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url":"//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description":null,
    "locales_list":null,
    "publisher":null,
    "developer":null,
    "video_link":null,
    "genre":null,
    "additional_info":null,
    "forum_link":null,
    "support_link":null,
    "old_price":null,
    "parent_id":null,
    "default_currency":"EUR",
    "release_date":"2016-01-01T00:00:00+00:00",
    "drm":[
        {
            "id":1,
            "platforms":[
                {
                    "id":1
                },
                {
                    "id":2
                }
            ],
            "prices":{
                "USD":19.99,
                "EUR":18.5
            },
            "enabled":true
        }
    ],
    "obtain_code_from_api":false,
    "obtain_code_from_db":false
}'

응답

<?php

// example response
$response = array (
    'id' => 77
);
HTTP/1.1 201 Created
Content-Type: application/json

{
    "id": 77
}
{
    "id": 77
}

게임 제공 엔터티 가져오기

게임 제공 엔터티를 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id}

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다.
game_delivery_id
int 게임 제공 엔터티의 ID입니다.

요청

<?php

$response = $xsollaClient->GetGameDeliveryEntity(array(
    'project_id' => PROJECT_ID,
    'game_delivery_id' => GAME_DELIVERY_ID
));
GET /merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'id' => 9,
        'sku' => 'GTA5',
        'name' =>
            array (
                'en' => 'GTA V',
            ),
        'description' =>
            array (
                'en' => 'Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games.',
            ),
        'system_requirements' => 'OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)',
        'image_url' => '//cdn2.xsolla.com/img/misc/merchant/default-item.png',
        'long_description' => NULL,
        'locales_list' => NULL,
        'publisher' => NULL,
        'developer' => NULL,
        'video_link' => NULL,
        'genre' => NULL,
        'additional_info' => NULL,
        'forum_link' => NULL,
        'support_link' => NULL,
        'old_price' => NULL,
        'parent_id' => NULL,
        'default_currency' => 'EUR',
        'release_date' => '2016-01-01T00:00:00+00:00',
        'drm' =>
            array (
                array (
                    'id' => 1,
                    'name' => 'Steam',
                    'image' => NULL,
                    'platforms' =>
                        array (
                            array (
                                'id' => 1,
                                'name' => 'Windows',
                            ),
                            array (
                                'id' => 2,
                                'name' => 'Linux',
                            ),
                        ),
                    'prices' =>
                        array (
                            'USD' => 19.99,
                            'EUR' => 18.5,
                        ),
                    'codes' =>
                        array (
                            'total' => 0,
                            'active' => 0,
                            'used' => 0,
                        ),
                ),
            ),
        'obtain_code_from_api' => false,
        'obtain_code_from_db' => false,
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "id": 9,
    "sku": "GTA5",
    "name": {
        "en": "GTA V"
    },
    "description": {
        "en": "Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements": "OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url": "//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description": null,
    "locales_list": null,
    "publisher": null,
    "developer": null,
    "video_link": null,
    "genre": null,
    "additional_info": null,
    "forum_link": null,
    "support_link": null,
    "old_price": null,
    "parent_id": null,
    "default_currency": "EUR",
    "release_date": "2016-01-01T00:00:00+00:00",
    "drm": [
        {
            "id": 1,
            "name": "Steam",
            "image": null,
            "platforms": [
                {
                    "id": 1,
                    "name": "Windows"
                },
                {
                    "id": 2,
                    "name": "Linux"
                }
            ],
            "prices": {
                "USD": 19.99,
                "EUR": 18.5
            },
            "codes": {
                "total": 0,
                "active": 0,
                "used": 0
            }
        },
        {
            "id": 2,
            "name": "Playstation",
            "image": null,
            "platforms": [
                {
                    "id": 3,
                    "name": "Playstation 3"
                },
                {
                    "id": 4,
                    "name": "Playstation 4"
                }
            ],
            "prices": {
                "USD": 19.99,
                "EUR": 18.5
            },
            "codes": {
                "total": 0,
                "active": 0,
                "used": 0
            }
        }
    ],
    "obtain_code_from_api": false,
    "obtain_code_from_db": false
}
{
    "id": 9,
    "sku": "GTA5",
    "name": {
        "en": "GTA V"
    },
    "description": {
        "en": "Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements": "OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url": "//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description": null,
    "locales_list": null,
    "publisher": null,
    "developer": null,
    "video_link": null,
    "genre": null,
    "additional_info": null,
    "forum_link": null,
    "support_link": null,
    "old_price": null,
    "parent_id": null,
    "default_currency": "EUR",
    "release_date": "2016-01-01T00:00:00+00:00",
    "drm": [
        {
            "id": 1,
            "name": "Steam",
            "image": null,
            "platforms": [
                {
                    "id": 1,
                    "name": "Windows"
                },
                {
                    "id": 2,
                    "name": "Linux"
                }
            ],
            "prices": {
                "USD": 19.99,
                "EUR": 18.5
            },
            "codes": {
                "total": 0,
                "active": 0,
                "used": 0
            }
        },
        {
            "id": 2,
            "name": "Playstation",
            "image": null,
            "platforms": [
                {
                    "id": 3,
                    "name": "Playstation 3"
                },
                {
                    "id": 4,
                    "name": "Playstation 4"
                }
            ],
            "prices": {
                "USD": 19.99,
                "EUR": 18.5
            },
            "codes": {
                "total": 0,
                "active": 0,
                "used": 0
            }
        }
    ],
    "obtain_code_from_api": false,
    "obtain_code_from_db": false
}

게임 제공 엔터티 업데이트

게임 제공 엔터티를 업데이트합니다.

HTTP REQUEST

PUT https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id}

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다.
game_delivery_id
int 게임 제공 엔터티의 ID입니다.
sku
string 게임 제공 고유 ID입니다. SKU에는 소문자 라틴 문자, 숫자, 대시 및 밑줄만 포함되어야 합니다.
name
object 게임 제공 엔터티에 대한 지역화된 이름의 배열입니다.
description
object 게임 제공 엔터티에 대한 지역화된 설명의 배열입니다.
system_requirements
string 현재 게임에 대한 시스템 요구 사항입니다.
image_url
string 이미지의 URL입니다. (옵션)
long_description
string 게임 제공 엔터티에 대한 자세한 설명입니다. (옵션)
locales_list
string 쉼표로 구분된 지역화 목록입니다. (옵션)
publisher
string 게임 퍼블리셔입니다. (옵션)
developer
string 게임 개발자입니다. (옵션)
video_link string 게임에 대한 비디오의 링크입니다. (옵션)
genre
string 게임 장르입니다. (옵션)
additional_info
string 게임에 대한 추가 정보입니다. (옵션)
forum_link string 포럼의 링크입니다. (옵션)
support_link string 지원부 연락처가 제공되는 페이지의 링크입니다. (옵션)
old_price
string 이 게임의 이전 가격입니다. (옵션)
parent_id
int 부모 게임의 ID입니다. (옵션)
default_currency
string 구매의 기본 통화입니다. ISO 4217에 따라 통화의 3자 정의가 사용됩니다.
release_date
string 게임의 예상 릴리스 날짜입니다. (옵션)
drm
array DRM에 대한 데이터가 포함된 배열입니다.
drm.id
int 이 게임에 사용 가능한 DRM의 ID입니다.
drm.prices
array DRM에 대한 게임 가격의 배열입니다. (옵션)
drm.platforms
array DRM 플랫폼에 대한 데이터가 포함된 배열입니다.
drm.platforms.id
int 이 DRM에 의해 지원되는 플랫폼의 ID입니다.
drm.enabled
boolean DRM이 이 게임에 사용되는지 여부입니다.
obtain_code_from_db
boolean 당사 데이터베이스에서 PIN 코드를 사용하는지 여부입니다. (옵션)
obtain_code_from_api
boolean API를 통해 받은 PIN 코드를 사용하는지 여부입니다. (옵션)

요청

<?php

$response = $xsollaClient->UpdateGameDeliveryEntity(array(
    'project_id' => PROJECT_ID,
    'game_delivery_id' => GAME_DELIVERY_ID
    'request' => array (
         'sku' => 'GTA5',
         'name' =>
             array (
                 'en' => 'GTA V',
             ),
         'description' =>
             array (
                 'en' => 'Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games.',
             ),
         'system_requirements' => 'OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)',
         'image_url' => '//cdn2.xsolla.com/img/misc/merchant/default-item.png',
         'long_description' => NULL,
         'locales_list' => NULL,
         'publisher' => NULL,
         'developer' => NULL,
         'video_link' => NULL,
         'genre' => NULL,
         'additional_info' => NULL,
         'forum_link' => NULL,
         'support_link' => NULL,
         'old_price' => NULL,
         'parent_id' => NULL,
         'default_currency' => 'EUR',
         'release_date' => '2016-01-01T00:00:00+00:00',
         'drm' =>
             array (
                 array (
                     'id' => 1,
                     'platforms' =>
                         array (
                             array (
                                 'id' => 1,
                             ),
                             array (
                                 'id' => 2,
                             ),
                         ),
                     'prices' =>
                         array (
                             'USD' => 19.99,
                             'EUR' => 18.5,
                         ),
                     'enabled' => true
                 ),
             ),
         'obtain_code_from_api' => false,
         'obtain_code_from_db' => false,
     )
));
PUT /merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
{
    "sku":"GTA5",
    "name":{
        "en":"GTA V"
    },
    "description":{
        "en":"Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements":"OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url":"//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description":null,
    "locales_list":null,
    "publisher":null,
    "developer":null,
    "video_link":null,
    "genre":null,
    "additional_info":null,
    "forum_link":null,
    "support_link":null,
    "old_price":null,
    "parent_id":null,
    "default_currency":"EUR",
    "release_date":"2016-01-01T00:00:00+00:00",
    "drm":[
        {
            "id":1,
            "platforms":[
                {
                    "id":1
                },
                {
                    "id":2
                }
            ],
            "prices":{
                "USD":19.99,
                "EUR":18.5
            },
            "enabled":true
        }
    ],
    "obtain_code_from_api":false,
    "obtain_code_from_db":false
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery/{game_delivery_id}' \
-X PUT \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "sku":"GTA5",
    "name":{
        "en":"GTA V"
    },
    "description":{
        "en":"Grand Theft Auto V is an open world, action-adventure video game developed by Rockstar North and published by Rockstar Games."
    },
    "system_requirements":"OS: Windows 8.1 64 Bit, Windows 8 64 Bit, Windows 7 64 Bit Service Pack 1, Windows Vista 64 Bit Service Pack 2* (*NVIDIA video card recommended if running Vista OS)",
    "image_url":"//cdn2.xsolla.com/img/misc/merchant/default-item.png",
    "long_description":null,
    "locales_list":null,
    "publisher":null,
    "developer":null,
    "video_link":null,
    "genre":null,
    "additional_info":null,
    "forum_link":null,
    "support_link":null,
    "old_price":null,
    "parent_id":null,
    "default_currency":"EUR",
    "release_date":"2016-01-01T00:00:00+00:00",
    "drm":[
        {
            "id":1,
            "platforms":[
                {
                    "id":1
                },
                {
                    "id":2
                }
            ],
            "prices":{
                "USD":19.99,
                "EUR":18.5
            },
            "enabled":true
        }
    ],
    "obtain_code_from_api":false,
    "obtain_code_from_db":false
}'

응답

<?php

$response = null;
HTTP/1.1 204 No Content

모든 게임 제공 엔터티의 목록

모든 게임 제공 엔터티의 목록입니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery

매개 변수 유형 설명
project_id
int 프로젝트 ID입니다.

요청

<?php

$response = $xsollaClient->ListGameDeliveryEntities(array(
    'project_id' => PROJECT_ID
));
GET /merchant/v2/projects/{project_id}/game_delivery HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/game_delivery' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        array (
            'id' => 9,
            'localized_name' => 'GTA V',
            'parent_id' => NULL,
            'default_currency' => 'EUR',
            'drm' =>
                array (
                    array (
                        'id' => 1,
                        'name' => 'Steam',
                        'image' => NULL,
                        'platforms' =>
                            array (
                                array (
                                    'id' => 1,
                                    'name' => 'Windows',
                                ),
                                array (
                                    'id' => 2,
                                    'name' => 'Linux',
                                ),
                            ),
                        'prices' =>
                            array (
                                'USD' => 19.99,
                                'EUR' => 18.5,
                            ),
                        'codes' =>
                            array (
                                'total' => 1000,
                                'active' => 999,
                                'used' => 1,
                            ),
                        ),
                    array (
                        'id' => 2,
                        'name' => 'Playstation',
                        'image' => NULL,
                        'platforms' =>
                            array (
                                array (
                                    'id' => 3,
                                    'name' => 'Playstation 3',
                                ),
                                array (
                                    'id' => 4,
                                    'name' => 'Playstation 4',
                                ),
                            ),
                        'prices' =>
                            array (
                                'USD' => 19.99,
                                'EUR' => 18.5,
                            ),
                        'codes' =>
                            array (
                                'total' => 1000,
                                'active' => 999,
                                'used' => 1,
                            ),
                    ),
                ),
        ),
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "id": 9,
        "localized_name": "GTA V",
        "parent_id": null,
        "default_currency": "EUR",
        "drm": [
            {
                "id": 1,
                "name": "Steam",
                "image": null,
                "platforms": [
                    {
                        "id": 1,
                        "name": "Windows"
                    },
                    {
                        "id": 2,
                        "name": "Linux"
                    }
                ],
                "prices": {
                    "USD": 19.99,
                    "EUR": 18.5
                },
                "codes": {
                    "total": 1000,
                    "active": 999,
                    "used": 1
                }
            },
            {
                "id": 2,
                "name": "Playstation",
                "image": null,
                "platforms": [
                    {
                        "id": 3,
                        "name": "Playstation 3"
                    },
                    {
                        "id": 4,
                        "name": "Playstation 4"
                    }
                ],
                "prices": {
                    "USD": 19.99,
                    "EUR": 18.5
                },
                "codes": {
                    "total": 1000,
                    "active": 999,
                    "used": 1
                }
            }
        ]
    }
]
[
    {
        "id": 9,
        "localized_name": "GTA V",
        "parent_id": null,
        "default_currency": "EUR",
        "drm": [
            {
                "id": 1,
                "name": "Steam",
                "image": null,
                "platforms": [
게임 제공 엔터티 목록  {
                        "id": 1,
                        "name": "Windows"
                    },
                    {
                        "id": 2,
                        "name": "Linux"
                    }
                ],
                "prices": {
                    "USD": 19.99,
                    "EUR": 18.5
                },
                "codes": {
                    "total": 1000,
                    "active": 999,
                    "used": 1
                }
            },
            {
                "id": 2,
                "name": "Playstation",
                "image": null,
                "platforms": [
                    {
                        "id": 3,
                        "name": "Playstation 3"
                    },
                    {
                        "id": 4,
                        "name": "Playstation 4"
                    }
                ],
                "prices": {
                    "USD": 19.99,
                    "EUR": 18.5
                },
                "codes": {
                    "total": 1000,
                    "active": 999,
                    "used": 1
                }
            }
        ]
    }
]

사용 가능 DRM 플랫폼

사용 가능한 DRM 플랫폼의 목록입니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/drm

매개 변수 유형 설명
merchant_id
int 판매자의 ID입니다.

요청

<?php

$response = $xsollaClient->ListGameDeliveryDrmPlatforms();
GET /merchant/v2/merchants/{merchant_id}/drm HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/drm' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    array (
        'drm' =>
            array (
                array (
                    'id' => 1,
                    'name' => 'Steam',
                    'image' => '//cdn2.xsolla.com/misc/game_delivery/drms/set2/1.1450132085.png',
                ),
                array (
                    'id' => 2,
                    'name' => 'Playstation',
                    'image' => '//cdn2.xsolla.com/misc/game_delivery/drms/set2/2.1449183647.png',
                ),
                array (
                    'id' => 3,
                    'name' => 'XBox',
                    'image' => '//cdn2.xsolla.com/misc/game_delivery/drms/set2/3.1449183647.png',
                )
            ),
        'platforms' =>
            array (
                array (
                    'id' => 1,
                    'name' => 'Windows',
                ),
                array (
                    'id' => 2,
                    'name' => 'Linux',
                ),
                array (
                    'id' => 3,
                    'name' => 'Playstation 4',
                ),
            ),
    )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "drm": [
        {
            "id": 1,
            "name": "Steam",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/1.1450132085.png"
        },
        {
            "id": 2,
            "name": "Playstation",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/2.1449183647.png"
        },
        {
            "id": 3,
            "name": "XBox",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/3.1449183647.png"
        },
        {
            "id": 4,
            "name": "Uplay",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/4.1450201713.png"
        },
        {
            "id": 5,
            "name": "Origin",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/5.1450201747.png"
        },
        {
            "id": 6,
            "name": "DRM Free",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/6.1450201849.png"
        }
    ],
    "platforms": [
        {
            "id": 1,
            "name": "Windows"
        },
        {
            "id": 2,
            "name": "Linux"
        },
        {
            "id": 3,
            "name": "Playstation 3"
        },
        {
            "id": 4,
            "name": "Playstation 4"
        },
        {
            "id": 5,
            "name": "XBox One"
        },
        {
            "id": 6,
            "name": "Mac"
        },
        {
            "id": 7,
            "name": "XBox 360"
        }
    ]
}
{
    "drm": [
        {
            "id": 1,
            "name": "Steam",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/1.1450132085.png"
        },
        {
            "id": 2,
            "name": "Playstation",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/2.1449183647.png"
        },
        {
            "id": 3,
            "name": "XBox",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/3.1449183647.png"
        },
        {
            "id": 4,
            "name": "Uplay",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/4.1450201713.png"
        },
        {
            "id": 5,
            "name": "Origin",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/5.1450201747.png"
        },
        {
            "id": 6,
            "name": "DRM Free",
            "image": "//cdn2.xsolla.com/misc/game_delivery/drms/set2/6.1450201849.png"
        }
    ],
    "platforms": [
        {
            "id": 1,
            "name": "Windows"
        },
        {
            "id": 2,
            "name": "Linux"
        },
        {
            "id": 3,
            "name": "Playstation 3"
        },
        {
            "id": 4,
            "name": "Playstation 4"
        },
        {
            "id": 5,
            "name": "XBox One"
        },
        {
            "id": 6,
            "name": "Mac"
        },
        {
            "id": 7,
            "name": "XBox 360"
        }
    ]
}

쿠폰 가져오기

쿠폰 코드로 쿠폰에 대한 정보를 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/projects/{project_id}/coupons/{code}

파라미터 유형 설명
project_id
int 게임 ID입니다.
code
string 쿠폰 코드입니다.

요청

<?php

$response = $xsollaClient->GetCoupon(array(
    'project_id' => PROJECT_ID,
    'code' => COUPON_CODE
));
GET /merchant/v2/projects/{project_id}/coupons/{code} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/coupons/{code}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (
    'coupon_id' => 1,
    'project_id' => 1,
    'coupon_code' => 'CouPoNCoDe',
    'campaign_code' => 'CaMPaiGNCoDe',
    'virtual_currency_amount' => 0,
    'is_active' => 1,
    'redeems_count_remain' => 1,
    'redeems_count_for_user' => null,
    'expiration_date' => '2014-10-16 21:44:31',
    'virtual_items' =>
        array (
            'virtual_item' =>
                array (
                    'id' => 77,
                    'sku' => 'T-43-3-unique-id',
                    'item_code' => null,
                    'advertisement_type' => null,
                    'name' =>
                        array (
                            'en' => 'T-34-3',
                        ),
                    'description' =>
                        array (
                            'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
                        ),
                    'long_description' =>
                        array (
                        ),
                    'prices' =>
                        array (
                            'USD' => 40.09,
                        ),
                    'default_currency' => 'USD',
                    'enabled' => true,
                    'permanent' => false,
                    'purchase_limit' => 1,
                    'keywords' =>
                        array (
                        ),
                    'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
                    'groups' =>
                        array (25),
                    'item_type' => 'Expiration',
                    'expiration' => 1296000,
                    'virtual_currency_price' => null,
                ),
            'amount' => 1
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "coupon_id": 1,
    "project_id": 1,
    "coupon_code": "CouPoNCoDe",
    "campaign_code": "CaMPaiGNCoDe",
    "virtual_currency_amount": 0,
    "is_active": 1,
    "redeems_count_remain": 1,
    "redeems_count_for_user": null,
    "expiration_date": "2014-10-16 21:44:31",
    "virtual_items": {
        "virtual_item": {
            "id": 77,
            "sku": "T-43-3-unique-id",
            "item_code": "chinese-medium-tank",
            "advertisement_type": null,
            "name": {
                "en": "T-34-3"
            },
            "description": {
                "en": "This Chinese Tier VIII medium tank is a real beast in its class."
            },
            "long_description": [],
            "prices": {
                "USD": 40.09
            },
            "default_currency": "USD",
            "enabled": true,
            "permanent": false,
            "purchase_limit": 1,
            "keywords": [],
            "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
            "groups": [
                25
            ],
            "item_type": "Expiration",
            "expiration": 1296000,
            "virtual_currency_price": null,
            "item_code": null
        },
        "amount": 1
    }
}
{
    "coupon_id": 1,
    "project_id": 1,
    "coupon_code": "CouPoNCoDe",
    "campaign_code": "CaMPaiGNCoDe",
    "virtual_currency_amount": 0,
    "is_active": 1,
    "redeems_count_remain": 1,
    "redeems_count_for_user": null,
    "expiration_date": "2014-10-16 21:44:31",
    "virtual_items": {
        "virtual_item": {
            "id": 77,
            "sku": "T-43-3-unique-id",
            "item_code": "chinese-medium-tank",
            "advertisement_type": null,
            "name": {
                "en": "T-34-3"
            },
            "description": {
                "en": "This Chinese Tier VIII medium tank is a real beast in its class."
            },
            "long_description": [],
            "prices": {
                "USD": 40.09
            },
            "default_currency": "USD",
            "enabled": true,
            "permanent": false,
            "purchase_limit": 1,
            "keywords": [],
            "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
            "groups": [
                25
            ],
            "item_type": "Expiration",
            "expiration": 1296000,
            "virtual_currency_price": null,
            "item_code": null
        },
        "amount": 1
    }
}

쿠폰 사용

쿠폰 코드로 쿠폰을 사용합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/projects/{project_id}/coupons/{code}/redeem

파라미터 유형 설명
project_id
int 게임 ID입니다.
code
string 쿠폰 코드입니다.
user_id
string 게임유저 ID입니다.

요청

<?php

$response = $xsollaClient->RedeemCoupon(array(
    'project_id' => PROJECT_ID,
    'code' => COUPON_CODE,
    'request' => array(
        'user_id' => 1
    )
));
POST /merchant/v2/projects/{project_id}/coupons/{code}/redeem HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "user_id": 1
}
$ curl -v 'https://api.xsolla.com/merchant/v2/projects/{project_id}/coupons/{code}/redeem' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
    "user_id": 1
}'

응답

<?php

// example response
$response = array (
    'coupon_id' => 1,
    'project_id' => 1,
    'coupon_code' => 'CouPoNCoDe',
    'campaign_code' => 'CaMPaiGNCoDe',
    'virtual_currency_amount' => 0,
    'is_active' => 1,
    'redeems_count_remain' => 1,
    'redeems_count_for_user' => null,
    'expiration_date' => '2014-10-16 21:44:31',
    'virtual_items' =>
        array (
            'virtual_item' =>
                array (
                    'id' => 77,
                    'sku' => 'T-43-3-unique-id',
                    'item_code' => null,
                    'advertisement_type' => null,
                    'name' =>
                        array (
                            'en' => 'T-34-3',
                        ),
                    'description' =>
                        array (
                            'en' => 'This Chinese Tier VIII medium tank is a real beast in its class.',
                        ),
                    'long_description' =>
                        array (
                        ),
                    'prices' =>
                        array (
                            'USD' => 40.09,
                        ),
                    'default_currency' => 'USD',
                    'enabled' => true,
                    'permanent' => false,
                    'purchase_limit' => 1,
                    'keywords' =>
                        array (
                        ),
                    'image_url' => 'http://livedemo.xsolla.com/airplanes/tank5.jpg',
                    'groups' =>
                        array (25),
                    'item_type' => 'Expiration',
                    'expiration' => 1296000,
                    'virtual_currency_price' => null,
                ),
            'amount' => 1
        )
);
HTTP/1.1 200 OK
Content-Type: application/json

{
    "coupon_id": 1,
    "project_id": 1,
    "coupon_code": "CouPoNCoDe",
    "campaign_code": "CaMPaiGNCoDe",
    "virtual_currency_amount": 0,
    "is_active": 1,
    "redeems_count_remain": 1,
    "redeems_count_for_user": null,
    "expiration_date": "2014-10-16 21:44:31",
    "virtual_items": {
        "virtual_item": {
            "id": 77,
            "sku": "T-43-3-unique-id",
            "item_code": "chinese-medium-tank",
            "advertisement_type": null,
            "name": {
                "en": "T-34-3"
            },
            "description": {
                "en": "This Chinese Tier VIII medium tank is a real beast in its class."
            },
            "long_description": [],
            "prices": {
                "USD": 40.09
            },
            "default_currency": "USD",
            "enabled": true,
            "permanent": false,
            "purchase_limit": 1,
            "keywords": [],
            "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
            "groups": [
                25
            ],
            "item_type": "Expiration",
            "expiration": 1296000,
            "virtual_currency_price": null,
            "item_code": null
        },
        "amount": 1
    }
}
{
    "coupon_id": 1,
    "project_id": 1,
    "coupon_code": "CouPoNCoDe",
    "campaign_code": "CaMPaiGNCoDe",
    "virtual_currency_amount": 0,
    "is_active": 1,
    "redeems_count_remain": 1,
    "redeems_count_for_user": null,
    "expiration_date": "2014-10-16 21:44:31",
    "virtual_items": {
        "virtual_item": {
            "id": 77,
            "sku": "T-43-3-unique-id",
            "item_code": "chinese-medium-tank",
            "advertisement_type": null,
            "name": {
                "en": "T-34-3"
            },
            "description": {
                "en": "This Chinese Tier VIII medium tank is a real beast in its class."
            },
            "long_description": [],
            "prices": {
                "USD": 40.09
            },
            "default_currency": "USD",
            "enabled": true,
            "permanent": false,
            "purchase_limit": 1,
            "keywords": [],
            "image_url": "http:\/\/livedemo.xsolla.com\/airplanes\/tank5.jpg",
            "groups": [
                25
            ],
            "item_type": "Expiration",
            "expiration": 1296000,
            "virtual_currency_price": null,
            "item_code": null
        },
        "amount": 1
    }
}

새 프로모션 생성

새 프로모션을 생성합니다.

HTTP REQUEST

POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/promotions

파라미터 유형 설명
merchant_id
int 판매자 ID입니다.
technical_name
string 프로모션 기술명입니다.
label
array of strings 지역화된 레이블의 배열입니다. 결제 UI에 표시됩니다.
name
array of strings 현지화된 프로모션 이름의 배열입니다.
description
array of strings 현지화된 프로모션 설명의 배열입니다.
project_id
int 프로모션을 적용할 게임 ID입니다.

요청

<?php

$response = $xsollaClient->CreatePromotion(array(
    'request' => array (
         'technical_name' => 'Sample Promotion',
         'label' =>
              array (
                  'en' => '30% SAVE',
              ),
         'name' =>
             array (
                 'en' => '30% PayPal Discount',
             ),
         'description' =>
             array (
                 'en' => '30% PayPal Discount Sample',
             ),
         'project_id' => 1,
     )
));
POST /merchant/v2/merchants/{merchant_id}/promotions HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json

{
    "technical_name": "Sample Promotion",
    "label": {
        "en": "30% SAVE"
    },
    "name": {
        "en": "30% PayPal Discount"
    },
    "description": {
        "en": "30% PayPal Discount Sample"
    },
    "project_id": 1
}
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/promotions' \
-X POST \
-u merchant_id:merchant_api_key \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
        "technical_name": "Sample Promotion",
        "label": {
            "en": "30% SAVE"
        },
        "name": {
            "en": "30% PayPal Discount"
        },
        "description": {
            "en": "30% PayPal Discount Sample"
        },
        "project_id": 1
    }'

응답

<?php

// example response
$response = array (
    'id' => 1
);
HTTP/1.1 201 Created

{
    "id": 1
}
{
    "id": 1
}

프로모션 대상 가져오기

프로모션을 대상 가져옵니다.

HTTP REQUEST

GET https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/promotions/{promotion_id}

파라미터 유형 설명
merchant_id
int 판매자 ID입니다.
promotion_id
int 프로모션 ID입니다.

요청

<?php

$response = $xsollaClient->GetPromotion(array(
    'promotion_id' => 'PROMOTION_ID'
));
GET /merchant/v2/merchants/{merchant_id}/promotions/{promotion_id} HTTP/1.1
User-Agent: xsolla-api-client/1.0
Host: api.xsolla.com
Accept: application/json
Authorization: Basic ZGVtb0B4c29sbGEuY29tOmRlbW8=
Content-Type: application/json
$ curl -v 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/promotions/{promotion_id}' \
-X GET \
-u merchant_id:merchant_api_key

응답

<?php

// example response
$response = array (