본문으로 건너뛰기

SDK API - 상품 상세 조회

기본정보

  1. 스팀은 다른 스토어와 다르게 스팀에서 상품관리 및 상품 정보를 제공해주지 않아서 직접 관리가 필요합니다.
    1. 빌링 시스템에서 상품을 관리해드리고 있으며 해당 상품의 상세 정보를 제공하는 API
  2. 현재 스팀에서 지원하는 통화만 처리하였으며, 이를 기반으로 국가 코드도 처리하고 있습니다.
    1. 관리툴에서 모든 통화를 등록할 필요는 없으며, 없을 경우 관리툴 등록 시 기본으로 설정한 값으로 응답합니다.
  3. 개발을 위해선 상품이 먼저 빌링 시스템에 등록되어있어야 합니다.
항목내용비고
호출주체Game Platform SDK
도메인각 환경별 도메인
인증 방식없음
HTTP 메소드POST
Content-Typeapplication/json

Request

HTTP Request end point

POST https://{각 환경별 빌링시스템 도메인}/billing/him-platform-sdk/v1/steam/product/details

HTTP Request Body

이름데이터타입필수 여부설명
pjidString(20)Y

프로젝트ID

  • 동일 게임이라면 서비스ID가 여러개일 수 있지만 프로젝트ID는 같음
1004
productTypeStringY

상품 종류

  • 현재는 INAPP만 지원
INAPP
productIds[String]Y

상품 정보를 조회하고자 하는 Product ID

  • 최소 1개, 최대 20개 가능
["test.item.gem","test.item.ruby"]
languageCode

StringY

사용자 디바이스에서 사용중인 Language code. BCP-47 format

  • 상품 이름, 상품 통화 등 Localization에 활용
  • 주의

    • 디바이스 OS가 아니라 해당 게임(어플리케이션)의 언어팩 언어코드
en-US
currencyStringY
  1. 통화 코드

    1. initTxn API의 steamCurrency 값
  2. ISO 4217 currency code

    1. See Supported Currencies for proper format of each currency. Supported Currencies (Steamworks Documentation)
  3. 빌링 시스템에 해당 통화로 상품이 등록이 안되어 있다면, 예약 때 요청된 productId의 ‘USD’로 요청

    1. 상품 등록시 해당 상품의 USD는 필수 입력되어야함
steamIdlongY

Steam ID of user making purchase

  • 스팀에서 구매를 진행하는 유저입니다. 추후 CS 대응 등에 중요하게 사용되기 때문에 정확히 전달 필요

    • 참고: 본인의 Seam ID는 Steam웹 → 계정정보에서 확인 가능합니다.(링크)
  • 클라에서는 ISteamUser Interface (Steamworks Documentation) 참고해서 얻을 수 있음

Response

  • ProductIds에 존재하지 않는 값인 경우 응답값에서 제외됩니다.
  • N건의 상품을 지원하기 위해서 아래 데이터셋이 array List로 응답됩니다.
이름데이터타입설명
productIdString조회 요청한 상품 아이디steam_test_product_01
productIdNouint32

uint32타입의 상품 아이디

  • 문자열 타입의 상품 아이디를 지원하지 않는 곳에서 활용
1827203053
nameString

상품 명

  • 요청 파라미터에 languageCode 값을 기반으로 처리

    • 매핑 되는 값이 없으면 관리툴에서 지정한 기본 값으로 처리
100 GEM
descriptionString

상품 상세 설명

  • 요청 파라미터에 languageCode 값을 기반으로 처리

    • 매핑 되는 값이 없으면 관리툴에서 지정한 기본 값으로 처리
Get 100 gems
priceMicrosString

micro 단위의 가격

  • currency 값을 기준으로 처리
1200000000
formattedPriceString

현지화된 가격 정보

  • pricecurrency 값을 조합하여 처리
₩1,200
currencyString

통화

  • 우선순위 : 요청 파라미터로 받은 currency > IP기반 국가 코드
KRW

Success sample

{
"resultCode": "SUCCESS",
"resultMessage": "request success",
"resultData": [
{
"productId": "steam_test_item_01",
"productIdNo": 850212141,
"name": "젬 100개",
"description": "젬 100개 지급",
"priceMicros": "990000",
"formattedPrice": "$0.99",
"currency": "USD"
},
{
"productId": "steam_test_item_02",
"productIdNo": 4003161157,
"name": "젬 100개",
"description": "젬 100개 지급",
"priceMicros": "990000",
"formattedPrice": "$0.99",
"currency": "USD"
},
{
"productId": "steam_test_item_03",
"productIdNo": 3628703750,
"name": "젬 100개",
"description": "젬 100개 지급",
"priceMicros": "990000",
"formattedPrice": "$0.99",
"currency": "USD"
}
]
}

Error sample

  • 조회된 데이터가 없는 경우 (요청한 모든 productIds의 데이터가 없는 경우도 해당)
{
"resultCode": "NOT_EXIST_DATA",
"resultMessage": "요청한 파라미터에 대한 데이터가 없음. pjid: '1201', payment: 'STEAM'.",
"resultData": null
}
  • 요청 값이 올바르지 않은 경우
{
"resultCode": "INVALID_PARAMETER",
"resultMessage": "'productIds' must be 1 ~ 20 in size. | productIds is not empty",
"resultData": null
}

요청 curl 샘플

  • 도메인 및 요청 값은 변경 필요
curl --location 'https://api-dev.pub-dev.hybegames.io/billing/him-platform-sdk/v1/steam/product/details' \
--header 'Content-Type: application/json' \
--data '{
"pjid":"1201",
"productType":"INAPP",
"productIds":["steam_test_item_01", "steam_test_item_02", "steam_test_item_03"],
"languageCode":"ko-KR",
"currency": "USD"

}'