게임에 스토어를 통합
관리자 페이지에서 상품(가상 아이템, 인게임 재화, 번들, 키)을 생성하고 구성한 후 게임에 인게임 스토어를 추가하기:
- 아이템 카탈로그 표시를 구현합니다.
- 아이템 판매 로직을 구현합니다.
아이템 카탈로그 표시
IGS 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를 엽니다.
장바구니 구매
로직 구현:- 장바구니 설정 및 토큰 받기:
- 결제 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 또는 IGS API를 통해 클라이언트 측에서 사용자 주문 상태 가져오기
서버가 없거나 클라이언트 측에서 구매 처리 로직을 구현하는 경우 사용할 수 있는 방법:WebSocket API를 사용하여 클라이언트 측에서 주문 상태 가져오기
이 솔루션은 websockets를 사용하여 주문 상태를 가져옵니다. 이때 주문에 대한 자세한 정보는 가져오지 않습니다. 이 메소드는 클라이언트(예: 웹사이트 또는 모바일 애플리케이션)와 엑솔라 서버 사이에 단 하나의 연결만 생성하므로 클라이언트나 서버에 추가 부하가 발생하지 않아 권장됩니다.
다음 단계를 완료해 주세요.
- 엑솔라 웹 소켓 서버와 클라이언트가 주문 상태 메시지를 식별할 수 있도록 연결을 생성합니다.
- javascript
const client = new Centrifuge(
connectionURL,
{
data: {
user_external_id: user_external_id,
auth: auth,
project_id: project_id
}
}
)
connectionURL - wss://ws-store.xsolla.com/connection/websocket
auth - user JWT token
- 주문 상태에 대한 새 메시지를 받으려면
client.on
함수를 사용하여 이벤트를 구독해 주세요.
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- 실제 연결 설정 트리거:
- javascript
client.connect()
- 주문 상태의 변경 사항 기록을 받으려면 API 기록 메소드를 연결합니다.
- javascript
client.on('subscribed', function (ctx) {
client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
resp.publications.forEach((ctx) => {
/handle the status
});
}, function (err) {
//handle the status
});
});
메시지 본문 예시:
- javascript
{
order_id: 59614241,
status: 'new'
}
다음 주문 상태가 가능합니다.
New
- 주문이 생성되었지만 지불되지 않음Paid
- 주문 지불 완료Done
- 주문 전달이 완료됨(모든 영수증 전송 완료, 엑솔라 및 외부 플랫폼 등에서 전달됨)Canceled
- 주문이 취소되었으며 사용자에게 환불이 완료됨
웹 소켓을 통한 응답에 필요한 시간은 5분입니다. 이후에 또는 웹 소켓에 문제가 있는 경우 쇼트 폴링을 사용하는 것이 좋습니다.
쇼트 폴링
상태로 전환한 후 주문 아이템에 대한 자세한 정보를 가져오려면 주문 가져오기 API를 호출하세요.
오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.