플레이어 인벤토리 활성화

인벤토리는 사용자가 구매, 수입 혹은 지출할 수 있는 모든 아이템 세트를 뜻합니다.

엑솔라 플레이어 인벤토리는 파트너에게 다음을 허용합니다.

  • 모든 플랫폼 상에서 사용자의 모든 구매 및 프리미엄 보상을 동기화.
  • 엑솔라 API를 사용하여 사용자 인벤토리에서 아이템과 화폐를 부여 및 취소.

플레이어 인벤토리는 사용자 ID를 통해 사용자 인벤토리를 관리합니다. 사용자 식별은 엑솔라 로그인을 통해 이루어집니다. 사용자 식별 시스템을 자체적으로 구축하려면 클라이언트 API 메소드용 페이 스테이션 액세스 토큰을 사용할 수 있습니다.

플레이어 인벤토리 활성화 방법:

  1. 엑솔라 인게임 스토어 설정.
  2. 인증 설정.
  3. 인벤토리 관리 메소드 구현.

인증 설정

보안을 위하여 게임 서버가 부여 및 취소 메소드를 호출합니다. 위에서 언급한 메소드를 위하여 다음 기본 접근 인증을 구현해야 합니다.

SDK 혹은 API를 통해 게임 클라이언트의 사용자 인벤토리 가져오기와 아이템 사용 메소드는 호출이 이루어집니다. 사용할 수 있는 인증 옵션은 다음과 같습니다.

  1. 만약 엑솔라 로그인이 연결된 경우, 인증 요청을 위해 엑솔라 로그인 JWT 사용합니다.
  2. 자체적인 식별 시스템을 갖춘 경우, 페이 스테이션 액세스 토큰을 이용하여 인증 요청합니다.

알림
자체적인 사용자 식별 메소드를 사용하는 경우, 서버 기반의 아이템 부여 및 취소 메소드에 user.id를 전달합니다. 이는 반드시 여러분이 페이 스테이션 액세스 토큰에 사용한 user.id와 일치해야 합니다.

엑솔라 로그인을 통한 인증

  1. 관리자 페이지 프로젝트를 지침에 따라 설정합니다.
  2. JSON 웹 토큰 혹은 OAuth 2.0 프로토콜을 통하여 인증 메소드 호출을 구현합니다.

사용자 데이터가 엑솔라 데이터 스토리지에 보관되는 경우, 다음 메소드 호출을 구현합니다.

알림
엑솔라 API를 호출하기 위해 게임 엔진 및 플랫폼에 이미 만들어진 SDK 메소드를 사용할 수 있습니다.

사용자 데이터가 PlayFab 데이터 스토리지에 보관되는 경우, PlayFab 레시피 사용.

사용자 데이터를 여러분 자신이 보관하는 경우, 사용자 정의 스토리지 레시피.

페이 스테이션 액세스 토큰을 통한 인증

인증 절차:

  1. 앱(클라이언트)에서 서버에 인증 요청을 보냅니다.
  2. 여러분의 서버에서 엑솔라 서버로 판매자 ID 및 API 키를 보내고 access_token를 요청합니다.
  3. 엑솔라 서버는 access_token를 여러분의 서버 보냅니다.
  4. 여러분의 서버는 access_token를 여러분 클라이언트에게 송부합니다.

반환된 access_tokenCommerce API 인증 및 스토어 인터페이스 구축에 인증 토큰으로 사용됩니다.

기본 접근 인증 설정

엑솔라 API 인벤토리에 항목을 부여취소하는 서버 명령은 기본 접근 인증을 사용합니다. API에의 모든 요청은 Authorization: Basic <your_authorization_basic_key> 헤더를 반드시 포함해야 하며, <your_authorization_basic_key>는 Base64 표준에 따라 인코딩된 판매자 ID:API 키 쌍입니다.

이러한 매개변수를 확인하려면 관리자 페이지으로 이동합니다.

  • 판매자 ID 표시 위치:
    • 프로젝트 설정 > 웹훅 섹션
    • 회사 설정 > 회사 섹션
    • 관리자 페이지 페이지의 브라우저 주소 표시줄에 있는 URL. 이 URL의 형식: `https://publisher.xsolla.com/​판매자 ID/관리자 페이지 섹션`

  • API 키는 생성할 때 한 번만 관리자 페이지에 표시되며 따로 저장하고 관리해야 합니다. 다음 섹션에서 새 키를 생성할 수 있습니다.
    • 회사 설정 > API 키
    • 프로젝트 설정 > API 키
주의

API 키 작업에 대한 자세한 정보는 API 참조를 확인하세요.

주요 권장 사항:

  • 본인의 공간에 생성된 API 키를 저장합니다.. 생성된 API 키는 관리자 페이지에서 한 번만 볼 수 있습니다.
  • API 키를 비밀로 유지해야 합니다. 이러한 API 키는 개인 계정과 관리자 페이지의 프로젝트에 대한 액세스를 제공합니다.
  • API 키는 서버에 저장해야 하며 바이너리나 프론트엔드에는 저장해선 안 됩니다.

Copy
Full screen
Small screen

http

  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
POST https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request POST \
--url 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward' \
--header 'authorization: Basic <your_authorization_basic_key>'
<?php

$uri = 'https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward';

$auth = base64_encode('your_merchant_id:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-Type: application/json',
    'Accept: application/json',
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, []);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);
var client = new RestClient("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
var request = new RestRequest(Method.POST);
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("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward
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://store.xsolla.com/api/v2/project/{project_id}/inventory/reward")
  .post()
  .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("POST", "https://store.xsolla.com/api/v2/project/{project_id}/inventory/reward");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);

인벤토리 관리 방식

인벤토리 관리 메소드는 다음 메소드 그룹을 포함합니다.

사용자에게 아이템 부여하기

사용자에게 아이템 부여하기 API 메소드를 구현하여 특정 아이템을 사용자 인벤토리에 추가하거나 인게임 재화를 잔고에 추가하기.

요청:

Copy
Full screen
Small screen
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/reward';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Quest completed",
          "platform": "xsolla",
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Daily reward",
          "platform": "xsolla",
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);

응답:

Copy
Full screen
Small screen
{
    "count": 2,
    "operations": [
        {
            "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
            "platform": "xsolla",
            "comment": "Quest completed",
            "items": [
                {
                    "sku": "boots_1",
                    "quantity": 5
                },
                {
                    "sku": "crystal_pack_1",
                    "quantity": 3
                }
            ]
        },
        {
            "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
            "platform": "xsolla",
            "comment": "Daily reward",
            "items": [
                {
                    "sku": "helmet_1",
                    "quantity": 2
                },
                {
                    "sku": "minigun_1",
                    "quantity": 3
                }
            ]
        }
  ]
}

인벤토리 아이템 해지하기

인벤토리 아이템 해지하기 API 메소드를 구현하여 사용자의 인벤토리에서 특정 아이템을 취소하거나 잔고에서 인게임 재화를 취소.

요청:

Copy
Full screen
Small screen
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/revoke';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Remove from inventory",        
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Cheater",
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);

응답:

Copy
Full screen
Small screen
{
    "count": 2,
    "operations": [
        {
            "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
            "platform": "xsolla",
            "comment": "Remove from inventory",
            "items": [
                {
                    "sku": "boots_1",
                    "quantity": 5
                },
                {
                    "sku": "crystal_pack_1",
                    "quantity": 3
                }
            ]
        },
        {
            "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
            "platform": "xsolla",
            "comment": "Cheater",
            "items": [
                {
                    "sku": "helmet_1",
                    "quantity": 2
                },
                {
                    "sku": "minigun_1",
                    "quantity": 3
                }
            ]
        }
    ]
}

구매를 통해 사용자에게 아이템 부여하기

구매를 통해 사용자에게 아이템 부여하기 API 메소드를 구현하여 서드파티 플랫폼 상에서 구매가 이루어진 경우 아이템을 사용자 인벤토리에 추가.

요청:

Copy
Full screen
Small screen
<?php
$uri = 'https://store.xsolla.com/api/v2/project/44056/inventory/purchase';
$body = '
    [
        {
          "user": {
            "id": "0125760a-6810-11e9-84c0-42010aa80029"
          },
          "comment": "Purchase in App Store",
          "platform": "app_store_ios",
          "purchase": {
            "amount": "3.99",
            "currency": "USD",
            "external_purchase_id": "MS6TGW7023",
            "external_purchase_date": "2020-01-25T05:00:00+05:00"
          },        
          "items": [
            {
              "sku": "boots_1",
              "quantity": 5
            },
            {
              "sku": "crystal_pack_1",
              "quantity": 3
            }
          ]
        },
        {
          "user": {
            "id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14"
          },
          "comment": "Purchase in Google Play",
          "platform": "google_play",
          "purchase": {
            "amount": "1.99",
            "currency": "EUR",
            "external_purchase_id": "GPA.3357-9348-5932-89841",
            "external_purchase_date": "2020-02-14T05:00:00+05:00"
          },
          "items": [
            {
              "sku": "helmet_1",
              "quantity": 2
            },
            {
              "sku": "minigun_1",
              "quantity": 3
            }
          ]
        }
    ]';

$auth = base64_encode('44056:your_merchant_api_key');

$headers = [
    'Authorization: Basic ' . $auth,
    'Content-type: application/json'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);

응답:

Copy
Full screen
Small screen

{
    "count": 2,
  "operations": [
    {
      "user_id": "0125760a-6810-11e9-84c0-42010aa80029",
      "platform": "app_store_ios",
      "comment": "Purchase in App Store",
      "items": [
        {
          "sku": "boots_1",
          "quantity": 5
        },
        {
          "sku": "crystal_pack_1",
          "quantity": 3
        }
      ],
      "order_id": 4125,
      "external_purchase_id": "MS6TGW7023",
      "external_purchase_date": "2020-01-25T05:00:00+05:00",
      "amount": "3.99",
      "currency": "USD"
    },
    {
      "user_id": "a7d10a4e-3f68-43cc-a6b2-893d2c68fd14",
      "platform": "google_play",
      "comment": "Purchase in Google Play",
      "items": [
        {
            "sku": "helmet_1",
          "quantity": 2
        },
        {
            "sku": "minigun_1",
          "quantity": 3
        }
      ],
      "order_id": 4126,
      "external_purchase_id": "GPA.3357-9348-5932-89841",
      "external_purchase_date": "2020-02-14T05:00:00+05:00",
      "amount": "1.99",
      "currency": "EUR"
    }
  ]
}

현재 사용자의 인벤토리 가져오기

알림
엑솔라 API를 호출하기 위해 게임 엔진 및 플랫폼에 이미 만들어진 SDK 메소드를 사용할 수 있습니다.

현재 사용자의 인벤토리 가져오기 API 메소드를 구현하여 구매 후 사용자 인벤토리에 추가된 아이템 목록 가져오기.

요청:

Copy
Full screen
Small screen
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://store.xsolla.com/api/v2/project/44056/user/inventory/items");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

응답:

Copy
Full screen
Small screen
{
  "items": [
    {
      "description": "Conquer your foes with vindication using the Basic Blaster! ",
      "image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
      "instance_id": null,
      "long_description": "Conquer your foes with vindication using the Basic Blaster! Conquer your foes with vindication using the Basic Blaster! ",
      "name": "Xsolla Basic Blaster 1",
      "quantity": 22,
      "sku": "gun_1",
      "type": "virtual_good"
    },
    {
      "description": "Protect your noggin' with style",
      "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
      "instance_id": null,
      "long_description": "merchant_virtual_items_virtual_item_long_description_159429",
      "name": "Xsolla Helmet",
      "quantity": 18,
      "sku": "helmet_1",
      "type": "virtual_good"
    }
  ]
}

현재 사용자의 가상 잔액 가져오기

알림
엑솔라 API를 호출하기 위해 게임 엔진 및 플랫폼에 이미 만들어진 SDK 메소드를 사용할 수 있습니다.

현재 사용자의 가상 잔액 가져오기 API 메소드를 구현하여 현재 사용자의 인게임 재화 잔고 정보를 가져오기.

요청:

Copy
Full screen
Small screen
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://store.xsolla.com/api/v2/project/44056/user/virtual_currency_balance");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
xhr.send(data);

응답:

Copy
Full screen
Small screen

{
  "items": [
    {
      "amount": 683,
      "description": "Main in-game currency",
      "image_url": "https://cdn3.xsolla.com/img/misc/images/91df536af4616519f639664854c13d75.png",
      "name": "Crystals",
      "sku": "crystal",
      "type": "virtual_currency"
    },
    {
      "amount": 450,
      "description": "Money for in-store purchases",
      "image_url": "https://cdn3.xsolla.com/img/misc/images/fda67a3feedaa706b4e4ae05a9edd6ab.png",
      "name": "Gold",
      "sku": "gold",
      "type": "virtual_currency"
    }
  ]
}

아이템 소모

알림
엑솔라 API를 호출하기 위해 게임 엔진 및 플랫폼에 이미 만들어진 SDK 메소드를 사용할 수 있습니다.

사용자 인벤토리의 아이템을 소모하는 아이템 소모 API 방식을 구현합니다.

요청:

Copy
Full screen
Small screen
let data = JSON.stringify({
  "sku": "gun_1",
  "quantity": 1,
  "instance_id": null
});

let xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/user/inventory/item/consume");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

오류 목록

사용자 혹은 사용자 인벤토리 오류:
코드설명동작
0401-5002사용자 아이템 인벤토리 추가 시 잘못된 데이터 오류.item_id는 반드시 지정해야 하며 instance_id 혹은 quantity은 값을 입력해야 합니다null.
0401-5003사용자 ID를 지정해야 합니다.요구 사항에 사용자 ID가 있는지 확인하세요.
0401-5004사용자 인벤토리에서 항목을 찾을 수 없습니다.아이템이 인벤토리에 있는지 확인하세요. 인벤토리 상태는 Get user’s inventory 메소드로 확인할 수 있습니다.
0401-5006가상화폐 잔액이 부족하여 구매할 수 없습니다.-
0401-5007비소모성 아이템을 소모하려 시도했습니다.-
0401-5008사용자를 찾을 수 없습니다.-
0401-5009서드파티 플랫폼 구매 시 purchase 통과 실패.-
아이템 관리 오류:
코드설명동작
0401-4001기준에 의한 항목을 찾을 수 없습니다.아이템 목록은 Get user’s inventory 메소드로 확인할 수 있습니다.
Commerce API 관리 오류:
코드설명동작
0401-1101서비스 사용 불가(잘못된 주소, 연결 문제).시스템 상태는 status.xsolla.com에서 확인합니다; 엑솔라 고객 지원 팀 혹은 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내주세요.
0401-1102요청 항목 데이터 오류.API 스펙 확인.
0401-1016요청 매개변수 중 하나에 인코딩 오류.요청 콘텐츠 확인.
0401-1019지원되지 않는 메소드.요청 확인. 지원되는 메소드는 응답에서 찾을 수 있습니다.
0401-1020판매자 키 해쉬 이용 시 인증 오류.API 키 확인.
진행률
의견을 보내 주셔서 감사드립니다!
마지막 업데이트: 2024년 1월 22일

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

문제 보고
콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
후속 조치를 위해 이메일을 제공해 주세요
의견을 보내 주셔서 감사드립니다!