게임에 스토어를 통합
관리자 페이지에서 상품(가상 아이템, 인게임 재화, 번들, 키)을 생성하고 구성한 후 게임에 인게임 스토어를 추가하기:
- 아이템 카탈로그 표시를 구현합니다.
- 아이템 판매 로직을 구현합니다.
아이템 카탈로그 표시
인게임 스토어 및 직접 판매 API 호출을 통해 아이템 카탈로그 표시 구현:
작업 | API |
---|---|
스토어에 추가된 가상 아이템의 전체 목록 표시 | Get virtual items list |
클라이언트 측에서 판매 가능한 가상 아이템 그룹 목록 표시 | Get item groups list |
클라이언트 측 스토어에서 판매 가능한 인게임 재화 목록 가져오기 | Get virtual currency list |
클라이언트 측 스토어에 추가된 인게임 재화 패키지의 전체 목록 표시 | Get virtual currency package list |
스토어에 추가된 전체 세트 목록 표시 | Get list of bundles |
1
값으로 전달해야 합니다.아이템 판매
다음과 같은 방법으로 아이템을 판매할 수 있음:
- 하나의 아이템 빠른 구매. 이 경우, 수량에 관계 없이 하나의 SKU를 판매할 수 있습니다. 예: 100개의 동일한 물약.
- 장바구니 구매. 이 경우, 플레이어는 장바구니를 미리 채운 다음 아이템을 추가하거나 제거하거나 수량을 변경할 수 있습니다.
빠른 구매
- Create order with specified item API를 호출합니다. 결제 UI를 열기 위한 토큰이 응답으로 전달됩니다.
- 수신한 결제 토큰을 사용하여 결제 UI를 엽니다.
장바구니 구매
로직 구현:
- 장바구니 설정 및 토큰 받기:
- 클라이언트에서 — 직접 애플리케이션에 장바구니를 구현하려는 경우.
- 서버에서 — 장바구니를 관리하기 위해 엑솔라 솔루션(인게임 스토어 및 직접 판매 API 호출)을 사용하려는 경우.
- 결제 UI를 엽니다.
클라이언트에서 장바구니 및 구매 설정
아이템을 추가하고 제거하는 논리를 직접 구현합니다. 또한, 장바구니 설정을 위해 API를 호출하기 전에 구매에 적용할 프로모션에 대한 정보가 없다는 점을 고려해야 합니다. 이는 추가된 보너스 아이템의 총 비용 및 세부 정보를 알 수 없음을 의미합니다.
- 플레이어가 장바구니를 채운 후 아이템 API로 Fill cart with items를 호출합니다. 선택한 아이템에 대한 현재 정보(할인 전후 가격, 보너스 아이템)가 응답으로 전달됩니다.
- Create order with all items from current cart API를 호출합니다. 주문 ID와 결제 토큰이 응답으로 전달됩니다. 생성된 주문이 새 주문 상태를 수신합니다.
- 결제 UI를 엽니다.
서버에서 장바구니 및 구매 설정
이 변형은 장바구니에 대한 각 변경에 API 호출이 수반되어야 하기 때문에 장바구니 설정에 시간이 더 오래 걸릴 수 있습니다.
다음 단계 완료 필요.
- 장바구니 변경:
- 아이템을 추가하거나 아이템 수량을 변경하려면 Update cart item by card ID API를 호출하세요.
- 아이템을 제거하려면 Delete cart item by card ID를 호출하세요.
- Create order with all items from the current cart API를 호출합니다. 주문 ID 및 결제 토큰이 응답으로 전달됩니다. 생성된 주문은 새 주문 상태를 수신합니다.
- 결제 UI를 엽니다.
결제 인터페이스 열기
아이템 지불을 위해 결제 UI를 엽니다. 결제 UI를 열기 위한 토큰이 Create order with all items from current cart API에 대한 응답으로 전달됩니다.
다음 방법 중 하나로 결제 UI 열기를 구현합니다.
- 새 창에서: 새 브라우저 창에서 결제 UI를 열려면 링크
https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN
를 사용합니다. 여기서ACCESS_TOKEN
는 주문이 생성되었을 때 수신한 토큰입니다. - 위젯을 통해: 엑솔라 결제 스테이션 위젯 스크립트를 사용합니다(README 파일에 지침이 포함되어 있음).
결제 처리 테스트
샌드박스 모드에서 결제 흐름을 테스트할 수 있습니다. 테스트 은행 카드와 모든 계좌를 사용할 수 있습니다.
실제 첫 지불 이후, 엄격한 샌드박스 지불 정책이 적용됩니다. 샌드박스 모드에서의 지불은 관리자 페이지 > 회사 설정 > 사용자에서 지정된 사용자에 한해서만 가능합니다.
다이렉트 링크를 통해 실제 통화로 인게임 재화와 아이템을 구매하는 기능은 엑솔라와 라이선스 계약을 체결한 후에만 가능합니다. 이렇게 하려면 관리자 페이지에서 계약 및 세금 > 계약 섹션으로 이동하여 계약 양식을 작성한 후 확인을 기다립니다. 계약을 검토하는 데에는 영업일 기준 최대 3일이 소요될 수 있습니다.
샌드박스 모드를 활성화/비활성화하려면 빠른 구매 및 장바구니 구매 요청에서 sandbox
매개변수의 값을 변경해야 합니다. 샌드박스 모드는 기본값으로 꺼져 있습니다.
사용자 주문 상태 가져오기
사용자 주문 상태를 가져오는 방법:
웹훅을 통해 서버 측에서 사용자 주문 상태 가져오기
서버에서 웹훅을 구성한 후 이를 사용하여 주문 세부 정보 및 상태를 가져올 수 있습니다.
WebSocket API 또는 인게임 스토어 및 직접 판매 API를 통해 클라이언트 측에서 사용자 주문 상태 가져오기
서버가 없거나 클라이언트 측에서 구매 처리 로직을 구현하는 경우 사용할 수 있는 방법:
WebSocket API
이 메소드는 웹 소켓을 사용하여 주문 자체에 대한 세부 정보를 수신하지 않고 주문 상태를 가져오는 것과 관련됩니다. 이 메소드는 엑솔라 클라이언트와 서버 간에 하나의 연결만 설정되어 클라이언트나 서버에 추가 로드가 없기 때문에 선호됩니다.
다음 단계를 완료해야 합니다.
- WebSocket 서버와 클라이언트가 주문 상태가 있는 메시지를 식별하도록 하려면
Channel_id: order_id=$orderId&project_id=$projectId
와 같이 채널 식별자를 생성합니다(매개변수의 순서가 중요함). - 채널을 구독하려면 WebSocket 프로토콜을 통해 URL
wss://store-ws.xsolla.com/sub/order/status?order_id=$orderId&project_id=$projectId
과 연결합니다. 메시지 본문에 주문 ID와 주문 상태가 포함됩니다.
- js
{
"order_id": int,
"status": string
}
다음 주문 상태를 사용할 수 있습니다.
New
— 주문이 생성되었지만 지불되지 않음Paid
— 주문 지불 완료Done
— 주문 전달이 완료됨(모든 영수증 전송 완료, 엑솔라 및 외부 플랫폼 등에서 전달됨)Canceled
— 주문이 취소되었으며 사용자에게 환불이 완료됨
웹 소켓을 통한 응답에 필요한 시간은 5분입니다. 이후에 또는 웹 소켓에 문제가 있는 경우 쇼트 폴링을 사용하는 것이 좋습니다.
쇼트 폴링
상태로 전환한 후 주문 아이템에 대한 자세한 정보를 가져오려면 주문 가져오기 API를 호출하세요.
오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.