샵 아이템 구매 체크, 구매 정보 저장 및 임시 구매 번호, 1회 용 결제 URL 전달 내용이 포함되어 있습니다.
기본정보
POST /bill-store/v1.0/{{service_id}}/purchase
Host:
https://api.onstove.com (LIVE)
https://api.gate8.com (SB)
Content-Type: application/json
JavaScript
복사
Request
Header
Name | Type | Required | Default Value | Example | Description |
authorization | String | Y | - | {access_token} | 사용자의 인증을 통해 발급 되는 access token
※ Web에서는 “SUAT 쿠키값” 사용 |
X-Lang | String | Y | - | ko | 언어 코드 |
X-Nation | String | Y | - | KR | 국가 코드 |
X-Timezone | String | Y | - | Asia/Seoul | Timezone |
X-Utc-Offset | Int32 | Y | - | 540 | UTC Offset |
caller-id | String | Y | - | clientapp | API 호출자 정보
예) 서비스명_GAME_SERVER |
Path Variable
Name | Type | Required | Default Value | Example | Description |
service_id | String | Y | - | GAME_ID | 스튜디오에서 발급된 게임ID |
Body
Name | Type | Required | Default Value | Example | Description |
shop_key | String | Y | - | indie | 인게임상점의 상점키 |
pguid | String | N | - | - | Authorization에 SUAT 쿠키값으로 인증하는 경우는 사용안함 |
character_no | String | N | - | - | 미사용 |
world_id | String | N | - | AAA | 미사용 |
guid | Int64 | Y | - | 123456 | Guid가 있는 경우 GUID 입력
없으면 member_no 입력 |
shop_purchase_tran_id | String | N | - | 38dc674b-1c06-407e-bfb3-ea12641d2b36 | 유니크한 구매 Key
• NULL일 경우 상점 자체적으로 발급
• 현재는 사용 되지 않음 |
access_token | String | Y | - | - | 사용자의 인증을 통해 발급 되는 access token
• 빌링 웹 쿠키 값 생성을 위한 토큰 값 |
product_infos | List<json object> | Y | - | - | 구매 상품 정보 |
price | Double | Y | - | 1000 | 구매 총 가격
• 상품 리스트 sale_price 합계 |
ingame_flag | bool | Y | true | true | 인 게임 여부 |
test_mode | bool | N | false | false | 테스트 모드
• 스토어(스튜디오) 입점 게임만 허용 |
billing_token | String | N | - | e994539c1f96494da83c49cf7ecd90cc | 빌링 토큰(내부 용)
• 개발자 센터에서는 제외 |
service_txn_no | String(50) | N | - | "123456789" | 서비스 주문 번호
• 게임에서 발급 한 주문 번호
• NOTI 서버를 통해 전달 |
extra_data | String(500) | N | - | "{\"birth_dt\": 593871400000, \"rating\": \"18\"}" | 요청 추가 데이터(json string)
• 게임에서 전달 받고자 하는 추가 정보
• NOTI 서버를 통해 전달 |
product_infos
Name | Type | Required | Default Value | Example | Description |
product_id | Int64 | Y | - | 1001 | 플랫폼 고유 아이템 ID |
quantity | Int32 | N | 1 | 1 | 수량
• 구매 하고자 하는 수량 |
Response
Body
Name | Type | Required | Default Value | Example | Description |
code | Integer | Y | - | 0 | 응답 코드 |
message | String | Y | - | OK | 응답 메시지 |
value | Object | N | - | 응답 값 |
Value
Name | Type | Required | Default Value | Example | Description |
txn_mst_no | Int64 | Y | - | 4613050609508317204 | 거래 고유 마스터 번호(결제 TID) |
shop_purchase_tran_id | String | Y | - | 81f71693-5239-49e3-beff-8e70fea4b15d | 샵 구매 트랜젝션 아이디 |
temp_payment_url | String | Y | - | 1회 용 결제 URL | |
purchase_progress | Int | Y | - | 0 | 구매 진행 상태
• 1: 결재 중: 충전 창 호출 필요
• 2: 구매 완료: 0원 구매로 아이템 지급 완료 |
extra_data | String | N | - | {\"birth_dt\": 593871400000, \"rating\": \"18\"} | 응답 추가 데이터(json string)
• 호출 처 필요 정보 협의 |
Sample
Request
curl --location --request POST'https://api.onstove.com/bill-store/v1.0/{{service_id}}/purchase' \
--header 'Authorization: Bearer {{access_token}}'
--header 'X-Lang: ko'
--header 'X-Nation: KR'
--header 'X-Timezone: Asia/Seoul'
--header 'X-Utc-Offset: 540'
--header 'caller-id: {{caller-id}}'
{
"shop_key": "TESTKEY",
"pguid": "123456789",
"character_no": "123456789",
"world_id": "AAA",
"guid": null,
"shop_purchase_tran_id": null,
"access_token": "{access_token}"
"product_infos": [
{
"product_id": 1835,
"quantity": 1
}
],
"price": 1000,
"ingame_flag": true
}
JavaScript
복사
Response
Content-Type : application/json
{
"value": {
"txn_mst_no": 4613050609508317204,
"shop_purchase_tran_id": "de43fed6-ab97-46b9-9ae4-76ad7e824a4f",
"temp_payment_url": "http://pay-dev.onstove.com/payment/BP/649edc28a5e04176b4be754321558b92",
"extra_data": "{\"birth_dt\": 593871400000, \"rating\": \"18\"}",
"purchase_progress": 1
},
"code": 0,
"message": "OK"
}
JavaScript
복사
응답 실패 예제
{
"code": "999999",
"message": "정의되지 않은 오류입니다."
}
JavaScript
복사
Return Code
HTTP Status code | response_code | response_message | Description |
200 | 0 | OK | 성공 |
200 | 999999 | 정의되지 않은 오류입니다. | 아이템 샵 API 오류 |
50001 | 상점이 존재하지 않거나, 점검 중 입니다. | 아이템 샵 API 오류 | |
50002 | 상품이 존재 하지 않거나 판매 불가능 상품 입니다. | 아이템 샵 API 오류 | |
50003 | 비 전시 상품 입니다. | 아이템 샵 API 오류 | |
50004 | 판매 기간이 아닌 상품 입니다. | 아이템 샵 API 오류 | |
50005 | 상품 가격이 일치 하지 않습니다.(상품 가격이 변경 되었을 경우)
• 상품 가격이 음수일 경우도 포함 | 아이템 샵 API 오류 | |
50009 | 구매 가능 한 판매 개수 초과(회원 별 개수) | 아이템 샵 API 오류 | |
50010 | 구매 가능 한 판매 개수 초과(총 판매 개수) | 아이템 샵 API 오류 | |
50011 | 구매 가능 한 판매 개수 초과(캐릭터(GUID)) | 아이템 샵 API 오류 | |
50015 | 구매 가능 한 판매 개수 초과(월드) | 아이템 샵 API 오류 | |
50031 | 구매 수량은 1 보다 작을 수 없습니다. | 아이템 샵 API 오류 | |
50032 | 회원님의 국가에서는 결제 서비스를 이용하실 수 없습니다. | 아이템 샵 API 오류 | |
50033 | 잘못된 로그인 정보 입니다. | 아이템 샵 API 오류 | |
500 | 500 | Internal Server Error | 서버 내부 오류 |