시작하기

개요

엑솔라 API 포함 사항:

엑솔라 API는 REST를 기반으로 구성되어 있습니다. 예측 가능한 리소스 중심의 URL과 함께 API 오류를 HTTP 응답 코드로 표시하도록 구성된 API입니다. 오류를 포함한 API의 모든 응답에서 JSON이 반환됩니다.

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

엑솔라 API는 다음 Endpoint 경로를 사용합니다.

  • https://api.xsolla.com — Pay Station API, Commerce API, Publisher Account API
  • https://login.xsolla.com/api — Login API
대부분의 Endpoint 경로에는 merchant_id 매개변수가 포함되어 있습니다. 이는 애플리케이션이 사용자를 대신하여 작업 중임을 나타냅니다.

요청및응답

엑솔라 API에 대한 요청은

  • HTTPS를 통해 전송해야 하며
  • TLS 1.2 이상을 사용해야 하고
  • 인증 매개변수를 포함해야 하며
  • PUT과 POST 요청에 대해추가 헤더(Content-Type: application/json)를 포함해야 합니다.

Copy
Full screen
Small screen
    Authorization: Basic <your_authorization_basic_key>
    Content-Type: application/json

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

    API 변경사항

    엑솔라는 API로 기능을 변경할 수 있습니다.

    • 엑솔라는 새로운 API 자원을 추가할 수 있습니다.
    • 엑솔라는 선택적 요청 매개변수를 추가할 수 있습니다.
    • 엑솔라는 기존 API 응답에 대한 새로운 속성을 추가할 수 있습니다.
    • 엑솔라는 나열된 값들의 묶음들로 이루어진 기존 매개변수에 새 값들을 추가할 수 있습니다.
    • 엑솔라는 JSON에 새 webhook 타입들과 매개변수들을 추가할 수 있습니다.
    • 엑솔라는 선택적 HTTP 요청 헤더를 추가할 수 있습니다.
    • 엑솔라는 유효한 매개변수에 유효하지 않은 매개변수 값이 포함된 요청을 거부할 수 있습니다.
    • 지나치게 관대한 파싱으로 인해 승인된 부적절한 형식의 요청들은 파싱로직이 올바르다면 거부될 수도 있습니다.
    • 엑솔라는 언제든지 문서화되지 않은 기능을 추가, 변경 또는 제거할 수 있습니다.

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

    버전 관리

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

    API를 처음으로 사용하는 경우 최신 버전을 사용하도록 합니다. 버전을 생략하는 경우, 기본값으로 첫 번째 버전을 사용합니다.

    Info: 동일한 버전을 사용하는 경우에만 API 무결성이 보장됩니다.

    인증

    엑솔라 API는 기본 액세스 인증을 사용합니다. 모든 API 요청에는 Authorization: Basic <your_authorization_basic_key> 헤더가 있어야 합니다. <your_authorization_basic_key>여기에는 Base64 표준에 따라 인코딩된 merchant_id:api_key 페어가 있습니다.

    엑솔라 게시자 계정으로 이동하여 merchant_idapi_key 매개변수를 찾으십시오.

    • merchant_id: 회사 설정 > 회사 > 판매자 ID
    • api_key: 회사 설정 > API 키

    Notice:
    • 여러분의 API 키를 잘 보관하세요. 이를 통해 개인 계정과 게시자 계정의 프로젝트에 접근할 수 있습니다.
    • API 키를 변경하면 모든 프로젝트에 대한 지불이 중단될 수 있습니다. 신규 키로 업데이트하기 전까지는 현재 키를 사용하는 API 호출은 작동하지 않게 됩니다.
    Copy
    Full screen
    Small screen
    http
    • http
    • curl
    • php
    • C#
    • python
    • ruby
    • java
    • js
    예시:
    GET https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages
    Headers:
      Authorization: Basic <your_authorization_basic_key>
    curl --request GET \
    --url 'https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages' \
    --header 'authorization: Basic <your_authorization_basic_key>'
    <?php
    
    // if you use Xsolla SDK for PHP
    use Xsolla\SDK\API\XsollaClient;
    $xsollaClient = XsollaClient::factory(array(
        'merchant_id' => MERCHANT_ID,
        'api_key' => API_KEY
    ));
    $eventsList = $client->ListEvents(array());
    
    // if you don’t use Xsolla SDK for PHP
    $client = new http\Client;
    $request = new http\Client\Request;
    
    $request->setRequestUrl('https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages');
    $request->setRequestMethod('GET');
    $request->setHeaders(array(
      'authorization' => 'Basic <your_authorization_basic_key>'
    ));
    
    $client->enqueue($request)->send();
    $response = $client->getResponse();
    
    echo $response->getBody();
    
    var client = new RestClient("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages");
    var request = new RestRequest(Method.GET);
    request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
    IRestResponse response = client.Execute(request);
    
    import http.client
    
    conn = http.client.HTTPSConnection("api.xsolla.com")
    
    headers = { 'authorization': "Basic <your_authorization_basic_key>" }
    
    conn.request("GET", "/merchant/v2/merchants/{merchant_id}/events/messages", headers=headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    require 'uri'
    require 'net/http'
    
    url = URI("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Get.new(url)
    request["authorization"] = 'Basic <your_authorization_basic_key>'
    
    response = http.request(request)
    puts response.read_body
    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
      .url("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages")
      .get()
      .addHeader("authorization", "Basic <your_authorization_basic_key>")
      .build();
    
    Response response = client.newCall(request).execute();
    var data = null;
    
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;
    
    xhr.addEventListener("readystatechange", function () {
      if (this.readyState === this.DONE) {
        console.log(this.responseText);
      }
    });
    
    xhr.open("GET", "https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/events/messages");
    xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");
    
    xhr.send(data);
    

    Endpoint 형식

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

    동작HTTP 방식설명
    CreatePOST해당 형식의 엔터티를 생성하고 유지합니다.
    ListGET입력한 쿼리 파라미터와 일치하는 모든 엔터티에 대한 요약 정보가 리턴됩니다. 특정 엔터티에 대한 전체 정보를 얻으려면 먼저 List endpoint를 통해 엔터티 ID를 가져온 다음 해당 Retrieve endpoint에 ID를 입력합니다.
    RetrieveGET입력한 식별자와 일치하는 단일 엔터티에 대한 전체 정보를 제공합니다.
    ReplacePUT입력한 식별자와 일치하는 기존 엔터티의 모든 필드를 수정합니다.
    UpdatePATCH입력한 식별자와 일치하는 기존 엔터티의 모든 필드를 수정합니다.
    DeleteDELETE입력한 식별자와 일치하는 기존 엔터티를 삭제합니다.

    날짜 형식

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

    페이징

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

    오류 처리

    지원 HTTP 오류 목록:

    • 200, 201, 204 — 오류 없음
    • 400 Bad Request — 보통 필수 매개 변수가 누락되었음을 나타냅니다. 자세한내용은 응답 본문을 참조합니다.
    • 401 Unauthorized — 제공된 유효한 API 키가 없습니다.
    • 402 Request Failed — 유효한 매개 변수이지만 요청이 실패했습니다.
    • 403 Forbidden — 권한이 없습니다. 자세한내용은 응답 본문을 참조합니다.
    • 404 Not Found — 요청한 항목이 존재하지 않습니다.
    • 409, 422 — 잘못된 요청 매개 변수입니다.
    • 412 Precondition Failed — 프로젝트가 아직 활성화되지 않았습니다(토큰 생성 방식에서 사용).
    • 415 Unsupported Media Type — HTTP 헤더에 Content-Type: application/json이 없습니다.
    • 500, 502, 503, 504 Server Errors — 문제가 발생했습니다.

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

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

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

    이름유형설명
    http_status_codeintegerHTTP 코드
    messagestring판독 가능한 메시지로서 오류를 설명합니다. 이 메시지는 항상 영문입니다. 특정 오류에 대한 설명은 나중에 변경될 수도 있습니다.
    extended_messagestring오류에 대한 확장된 설명입니다.
    request_idstring문제 해결에 도움이 될 수 있는 고유한 ID입니다.
    Copy
    Full screen
    Small screen
    {
        "http_status_code": 500,
        "message": "Internal Server Error",
        "extended_message": null,
        "request_id": "6445b85"
    }

    웹훅

    웹훅을 통해 엑솔라 측에서 구성된 이벤트에 대해 즉각적인 알림을 받을 수 있습니다. 웹훅 처리를 설정해 애플리케이션을 자동화할 수 있습니다. 문서를 참조해 사용할 수 있는 웹훅 목록과 작동 방법에 대한 자세한 설명을 확인할 수 있습니다.

    이 기사가 도움이 되었나요?
    감사합니다!
    개선해야 할 점이 있을까요? 메시지
    유감입니다
    이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
    의견을 보내 주셔서 감사드립니다!
    메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
    이 페이지 평가
    이 페이지 평가
    개선해야 할 점이 있을까요?

    답하기 원하지 않습니다

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

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