사용기간 제한 아이템

작동 방식

사용기간 제한 아이템는 일회성 구매 프리미엄 보너스입니다. 따라서, 만료 시에는 다시 구매해야 합니다.

주요 기능:

  • 사용기간 제한 아이템은 판매 수량이 무제한입니다.
  • 사용자가 아이템을 재구매한 경우 인벤토리의 아이템 수는 변하지 않지만 아이템 사용 기한이 늘어납니다.
  • 게시자 계정에서 아이템 사용 기한을 구성할 수 있습니다.

제한 사항:

  • 사용기간 제한 아이템은 게임 서버 측에서만 관리할 수 있습니다.

사용자

  • 인게임 스토어를 통합하고 새 아이템 유형인 사용기간 제한 아이템을 설정하려는 파트너.
  • Season Pass, Battle Pass를 판매하거나, 혹은 한정된 시간 동안 사용자에게 혜택을 주거나 추가 컨텐츠(인게임 아이템 혹은 태스크)를 제공하는 다른 유형의 아이템을 판매하려고 하는 파트너.

획득 방법

선행 조건

엑솔라 스토어를 아직 통합하지 않았다면, 다음을 따라하세요.

  1. 엑솔라 게시자 계정을 생성합니다.
  2. 프로젝트로 이동하여 프로젝트 생성 버튼을 클릭합니다.
  3. 프로젝트 이름을 추가하고 생성을 클릭합니다.
  4. 스토어를 프로젝트에 연결합니다.
  5. 가상 아이템 모듈을 연결합니다.

통합 절차

  1. 아이템 그룹 생성.
  2. 아이템 생성:
    1. 새 아이템 생성 시 아이템 속성 메뉴에서 사용기간 제한 아이템을 선택합니다.
    2. 만료 시간을 명시합니다.

  1. 카탈로그에서 사용기간 제한 아이템 가져오기를 구현합니다.
  2. 인벤토리에서 사용기간 제한 아이템 가져오기 를 구현합니다.
  3. 사용기간 제한 아이템 구매 를 구현합니다.

카탈로그에서 사용기간 제한 아이템 가져오기

스토어에 추가된 전체 게임 아이템 목록을 표시하려면 Get virtual items list 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/items/virtual_items?locale=en");

xhr.send(data);

//RESPONSE

"items": [
    {
      "attributes": [],
      "description": "Conquer your foes with vindication using the Basic Blaster! ",
      "groups": [
        "all",
        "featured",
        "Xsolla",
        "weapons"
      ],
      "image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
      "is_free": false,
      "name": "Xsolla Basic Blaster 1",
      "order": 1,
      "price": {
        "amount": "0.9950000000000000",
        "amount_without_discount": "1.9900000000000000",
        "currency": "USD"
      },
      "sku": "gun_1",
      "type": "virtual_good"

인벤토리에서 사용기간 제한 아이템 가져오기

사용자 인벤토리에서 Get the current user’s subscriptions 메소드를 사용하여 추가 기능에 접근할 수 있도록 합니다.

사용기간 제한 아이템 구매

첫 구매 이후 사용기간 제한 아이템이 인벤토리에 추가됩니다.

두 번째 및 향후 구매 시:

  1. 이미 사용기간 제한 아이템이 활성 상태이면 아이템 만료 시간이 남은 시간과 합산됩니다.
  2. 사용기간 제한 아이템이 활성 상태가 아니면 아이템 만료 시간이 기본값이 됩니다.

사용기간 제한 아이템 구매를 위해 다음 메소드를 구현하세요.

Get cart

가상 아이템 구매를 위하여 Get cart by ID 또는 Get current user’s cart API를 구현합니다. 카트 ID는 아이템 추가/제거에 사용됩니다.

예제

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/cart/custom_id?locale=en&currency=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "cart_id": "custom_id",
  "is_free": true,
  "items": [],
  "price": null
}

알림
카트 생성 없이 빠르게 아이템 구매를 사용하려면 Create order with specified item API 방식을 사용합니다.

Create order with all items

  1. 다음 API 메소드 중 하나를 구현합니다.
    1. Create order with all items from particular cart.
    2. Create order with all items from current cart 현재 카트의 경우에는.

생성한 주문은 New 주문 상태를 받게 됩니다.

  1. 새 창에서 결제 UI를 열려면, 다음 링크를 사용합니다. https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN, 여기서 ACCESS_TOKEN는 주문 생성 시 받은 토큰입니다.
  2. 결제 프로세스 테스트 방법:
    1. 다음 URL 사용: https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.
    2. 요청에서 sandbox 매개 변수를 true으로 설정합니다.
    3. 테스트용 은행 카드 목록을 사용합니다.

예제

Copy
Full screen
Small screen
var data = JSON.stringify({
  "currency": "USD",
  "locale": "en",
  "sandbox": false
});

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/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE  

{
  "order_id": 641,
  "token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}

Get order

Get order API 메소드를 구현하여 구매가 이미 처리되었는지 확인합니다. 다음 주문 상태가 가능합니다.

  • New — 주문이 생성되었으나 지불되지 않음
  • Paid — 주문이 지불됨
  • Cancelled — 주문이 취소됨
  • Done — 주문이 지불되고 아이템이 인벤토리에 추가됨

알림
주문에 새로운 상태가 부여되기 전에 일회성 확인 절차를 수행할 수있기에 상태 확인은 특정 빈도로 수행됩니다.

예제

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/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "content": {
    "is_free": false,
    "items": [
      {
        "is_free": false,
        "price": {
          "amount": "0.9950",
          "amount_without_discount": "1.9900",
          "currency": "USD"
        },
        "quantity": 123,
        "sku": "gun_1"
      }
    ],
    "price": {
      "amount": "122.3850",
      "amount_without_discount": "122.3850",
      "currency": "USD"
    }
  },
  "order_id": 656,
  "status": "new"
}

서버측 사용기간 제한 아이템 관리

부여

부여 메소드를 통해 게임 서버는 사용기간 제한 아이템을 사용자에게 부여할 수 있습니다.

사용기간 제한 아이템 만료 시간은 사용기간 제한 아이템 구매 방식과 동일한 방식으로 계산됩니다.

해지

게임 서버는 해지 메소드를 통해 사용자 아이템을 취소할 수 있습니다. 아이템 해지는 사용자 인벤토리에서 완전히 삭제됨을 의미합니다.

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

답하기 원하지 않습니다

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

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

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