웹 상점 구매 제한 검증
Hive 콘솔 > 커뮤니티 & 웹 상점 > 웹 상점 > 상품 관리에서는 웹 상점 상품에 계정별 구매 제한과 구매 수량 제한을 설정할 수 있습니다. 그리고 두 설정 각각에 최대 구매 수량을 설정할 수 있습니다.
웹 상점 구매 제한 검증은 웹 상점에서 결제한 상품이 위 두 설정에 있는 최대 구매 수량을 초과했는지 검증하는 작업입니다. 여기에서는 이 작업을 위해 웹 상점 결제 정보 검증 API를 제공합니다.
개요¶
웹 상점 결제 정보 검증 API 호출을 포함한 웹 상점 구매 제한 검증 전체 과정을 요약하면 아래와 같습니다.
-
앱 개발사: PG 결제 구현과 PG사 설정을 참고해 웹 상점에서 앱 사용자가 PG 결제 시 상품을 지급하는 프로세스를 구축합니다.
-
앱 개발사: 웹 상점에서 앱 사용자가 계정별 구매 제한 및 구매 수량 제한 상품을 구매한 경우, 상품 지급 전 웹 상점 결제 정보 검증 API를 호출합니다.
-
Hive 서버: 해당 주문에서 상품의 최대 구매 수량을 초과했는지 검증합니다. 검증 후 결과를 API 응답값으로 개발사 서버에 전송합니다.
-
앱 개발사: API 응답값을 확인 후 검증 요건(예: 최대 구매 수량을 초과했는지 여부)을 통과했을 때에만 상품을 지급합니다. 만약 최대 구매 수량을 초과한 구매 주문이라면 상품을 지급하지 않고 결제 취소 처리합니다. 웹 상점은 검증 결과에 문제가 없을때에만 판매 완료한 수량으로 반영 후 상품의 잔여 수량을 감소시킵니다. API 응답값을 확인했을 때 유효하지 않은 결제로 나타난 경우, 개발사 서버에서는 상품을 사용자에게 지급하지 말고 결제 취소 처리를 해야 합니다.
Warning
위 2, 4번 단계를 구현하지 않으면 Hive 콘솔 웹 상점에서 설정한 계정별 구매 제한과 구매 수량 제한 기능이 정상적으로 동작하지 않습니다. 이 경우 웹 상점에서는 현재 판매된 수량이 없는 것으로 판단해 웹 상점에서 표기하는 상품의 잔여 수량이 감소하지 않습니다. 이는 상품을 계속해서 구매할 수 있는 상태가 됨을 의미합니다.
Note
결제 취소에 대한 자세한 사항은 지급 결과 처리를 참고하세요.
웹 상점 결제 정보 검증 API¶
웹 PG 결제를 완료한 결제 정보를 기준으로 상품의 최대 구매 수량 초과 여부 등 결제가 유효한지 검증합니다.
Request information¶
| 구분 | 정보 |
|---|---|
| 상용 URL | https://shop.withhive.com/api/webstore/check-quantity-limit |
| SANDBOX URL | https://sandbox-shop.withhive.com/api/webstore/check-quantity-limit |
| HTTP Method | POST |
| Data Format | JSON |
Request header¶
| 필드명 | 설명 | 타입 | 필수여부 | 비고 |
|---|---|---|---|---|
| Content-Type | application/json | String | Y | |
| Authorization | Bearer 토큰 | String | Y | 앱센터 > 프로젝트 관리 > 게임 상세 > 기본 정보 > Hive 인증키 |
Request header sample¶
Content-Type : application/json
Authorization : Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY
Request body¶
| 필드명 | 설명 | 타입 | 필수여부 |
|---|---|---|---|
| type | 알림 유형(paid: 결제 완료, cancelled: 결제 취소 또는 환불) | String | Y |
| market_pid | 상품 고유 ID | String | Y |
| order_id | 주문번호 | String | Y |
| server_id | 구매한 유저가 접속한 게임 서버 구분코드 | String | Y |
| appid | 게임의 웹 상점용 Appid로, 위 market_pid가 등록된 Appid | String | Y |
| cs_code | 구매한 유저의 PlayerID | String | Y |
| paid_datetime | 결제를 완료한 시간 (Y-m-d H:i:s) | String | Y |
| quantity | 구매 수량 | String | Y |
| iap_payload | 게임 서버에서 상품 지급을 위한 계정 추가 정보 | String | Y |
Request body sample¶
{
"type": "paid",
"market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
"order_id" : "H3175513391360875943",
"server_id" : "1",
"appid" : "com.com2us.hivesdk.windows.hivepc",
"cs_code" : "20000023100",
"paid_datetime": "2025-08-14 10:12:18",
"quantity": "10",
"iap_payload": "{\"cs_code\":20000023100,\"data\":{\"server_id\":\"1\",\"server_name\":\"Server 1\",\"channels\":{\"channel_id\":\"11\",\"channel_name\":\"Channel 11\",\"characters\":{\"character_id\":\"111\",\"character_name\":\"Character 111\"}}}}",
}
Response body¶
| 필드명 | 설명 | 타입 |
|---|---|---|
| code | 응답 결과 코드 | Integer |
| msg | 응답 결과 메시지 | String |
- 100, 101 응답에만 상품을 정상 지급해야 합니다.
- 3001 응답은 이미 검증 완료된 주문 건입니다. 기존에 상품이 지급되지 않았던 경우에만 지급해야 합니다.
- 3002 응답은 상품의 최대 구매 수량이 초과한 경우입니다. 반드시 해당 주문을 결제 취소해야 합니다. 자세한 사항은 지급 결과 처리를 참고하세요.
Response body sample¶
Response codes¶
다음은 응답 코드(code)에 대한 명세입니다.
| code | msg | description |
|---|---|---|
| 100 | success | 성공 |
| 101 | success(product no limit) | 성공(수량 제한이 없는 상품으로, 별도 검증 필요 없음) |
| 2000 | fail(method error) | 유효하지 않은 HTTP METHOD로 요청 |
| 2001 | fail(request parameter error) | request 파라미터가 존재하지 않음 |
| 2002 | fail(type parameter error) | 유효하지 않은 파라미터(type) |
| 2003 | fail(market_pid parameter error) | 유효하지 않은 파라미터(market_pid) |
| 2004 | fail(order_id parameter error) | 유효하지 않은 파라미터(order_id) |
| 2005 | fail(server_id parameter error) | 유효하지 않은 파라미터(server_id) |
| 2006 | fail(appid parameter error) | 유효하지 않은 파라미터(appid) |
| 2007 | fail(cs_code parameter error) | 유효하지 않은 파라미터(cs_code) |
| 2008 | fail(paid_datetime parameter error) | 유효하지 않은 파라미터(paid_datetime) |
| 2009 | fail(quantity parameter error) | 유효하지 않은 파라미터(quantity) |
| 2010 | fail(iap_payload parameter error) | 유효하지 않은 파라미터(iap_payload) |
| 2011 | fail(hiveCertificationKey parameter error) | 유효하지 않은 파라미터(hiveCertificationKey) |
| 3000 | fail(hiveCertificationKey invalid) | Hive 인증키 검증 실패 |
| 3001 | fail(already completed) | ⚠️ 이미 검증 완료되어 수량에 반영된 주문 번호 기존에 상품이 지급된 경우, 추가 상품 지급 필요하지 않음 |
| 3002 | fail(purchase fail, purchase cancellation required) | ⚠️ 실패(수량 제한 초과) 이미 수량 제한이 초과된 상품을 구매한 경우로, 결제 취소 처리 필요 |
| 500 | fail(appid in DB not exist) | 해당 appId에 매칭되는 게임 정보가 존재하지 않음 |
| 501 | fail(gameprefix not exist) | 해당 appId에 매칭되는 웹 상점 정보 조회 실패 웹 상점 먼저 생성 필수(커뮤니티 혹은 웹 상점을 먼저 생성해야 해당 API 사용 가능) |
| 502 | fail(####) | 그 외 "####" 오류 발생 |
| 503 | fail(product info in DB not exist) | 해당 market_pid(상품)에 매칭되는 상품 정보가 존재하지 않음 Hive 콘솔 > 커뮤니티 & 웹 상점 > 웹 상점 > 상품 관리에 해당 상품 먼저 등록 필요 |
| 504 | fail(####) | 그 외 "####" 오류 발생 |
| 505 | fail(temporary error : ####) | 그 외 일시적인 "####" 오류 발생 |