소비 정보 전송
앱 사용자가 환불 요청을 할 때 사용자 소비 정보를 앱 스토어에 전송하는 API를 제공합니다.
'소비 정보 전송' API는 Hive 서버와 앱 서버 간의 Server-to-Server 통신 방식으로 Hive 서버가 앱 서버로 소비 정보 전송 요청을 보내면, 앱 서버에서 응답값을 Hive 서버로 반환합니다.
지원 종료 예정
App Store 소비 정보 전송 V1은 현재 신규 사용이 불가능하며 서비스 종료 예정입니다. 신규 구축 및 기존 서비스 업데이트 시 반드시 V2 API를 기준으로 구현해 주시기 바랍니다.
V1 → V2 변경점¶
기존 소비 정보 전송 V1 대비 V2 API에서 연동하는 변경 요약입니다.
| 구분 | V1 | V2 |
|---|---|---|
| 요청 본문 | gameindex, appid, user_seq | gameindex, appid, server_id, player_id(=user_seq), transaction_id |
| 소비 상태 | consumption_status (정수 0/3) | delivery_status (문자열 enum 5종) |
play_time | 있음(필수) | 삭제 |
| 소비 비율 | 없음 | consumption_percentage 추가(millipercent 0~100000) |
refund_preference | 정수, 필수 | 문자열 enum, 선택 |
sample_content_provided | 필수 | 선택 |
| 응답 형태 | code/message/data | code/message/data (구조 동일, 성공 반환 코드 변경 100 → 200) |
| 방화벽 IP | 상용/Sandbox 단일 IP | Hive 서버 IP 6개 |
Note
현재 소비 정보 전송은 Apple App Store만 지원합니다.
동작 플로우¶
'소비 정보 전송' API 호출 및 응답의 전체 동작 흐름을 요약하면 아래와 같습니다.
- 앱: API 엔드포인트를 구성하여 서버 URL을 준비
- 앱: Hive 콘솔에서 소비 정보 전송 사용 선택, 서버 URL을 등록
- 앱 클라이언트: 앱을 실행한 상태에서 인앱 상품 소비 정보 전송에 동의
- 앱 사용자: 앱에서 환불 요청
- Hive 서버: 앱에서 등록한 서버 URL로 POST API 요청, 앱 서버로부터 응답값으로 소비 정보 데이터 수신
- Hive 서버: 앱 스토어에 소비 정보 전송
Warning
앱 클라이언트에서 동의 팝업에서 정보 전송에 동의하지 않으면, Hive 서버는 앱 서버로부터 데이터를 수신하더라도 이를 앱 스토어에 전송할 수 없습니다.
앱 스토어에 전송할 소비 정보에는 앱 서버에만 존재하는 데이터도 있습니다. 이 경우에는, Hive 서버가 소비 정보를 앱 스토어에 전송하려면, 앱 서버에서 먼저 Hive 서버에 데이터를 전달해야 합니다.
앱 서버 URL은 앱 서버가 Hive 서버에 데이터를 전달하기 위해, 앱 서버에서 열어놓은 API 엔드포인트입니다. API 엔드포인트를 구성한 후 앱 서버 URL로 등록하면, 사용자가 환불 요청을 할 때마다 Hive 서버가 이 API 엔드포인트로 POST 요청을 하고 필요한 데이터를 앱 서버로부터 전달받습니다. Hive 서버는 이러한 데이터를 취합하고 앱을 대신하여 앱 스토어에 소비 정보 전송을 완료합니다.
API 엔드포인트(서버 URL) 구성¶
앱 서버는 서버 URL로 등록할 API 엔드포인트로 요청을 받을 때 앱 사용자별 데이터(consumption_status, play_time, refund_preference, sample_content_provided)를 집계하고, 요청 매개변수에 있는 사용자 정보(CS_CODE)로 조회할 수 있는 집계 데이터를 응답으로 전달해야 합니다.
방화벽 규칙 해제¶
방화벽 인바운드 규칙을 해제해 앱 서버와 Hive 서버 간 API 통신을 허용합니다. 앱 서버에서 아래 IP 주소에 대해 방화벽 인바운드 규칙을 해제해야 합니다.
| Hive 서버 종류 | IP 주소 |
|---|---|
| 상용 IP | 43.201.165.236 |
| Sandbox IP | 43.155.181.83 |
방화벽 규칙 해제 후, 아래 내용을 참고해 API 엔드포인트를 구성합니다.
API 요청(Hive 서버 → 앱 서버) 구성¶
Hive 서버에서 앱 서버로 보내는 POST 요청 정보입니다.
| API 정보 | 설명 |
|---|---|
| Method | POST |
| Response Format | JSON |
| Content-type | application/json |
Request body¶
요청 본문 정보는 아래와 같습니다.
| 명칭 | 타입 | 필수 여부 (필수: M, 옵션: O) | 설명 |
|---|---|---|---|
| gameindex | String | M | 앱 센터 게임 인덱스 |
| appid | String | M | 앱 센터 AppID |
| user_seq | String | M | 앱 내 사용자 CS CODE |
요청 본문 예시는 아래와 같습니다.
{
"gameindex": "539",
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"user_seq": "222333"
}
API 응답(앱 서버 → Hive 서버) 구성¶
앱 서버에서 Hive 서버로 반환하는 정보입니다.
Response body¶
응답 성공 시, 앱 서버에서 Hive 서버로 전달해야 하는 응답값 정보입니다.
| 명칭 | 타입 | 필수 여부 (필수: M, 옵션: O) | 설명 |
|---|---|---|---|
| code | Integer | M | 응답 코드 (100: 성공) |
| message | String | M | 응답 코드에 따른 결과 메시지 |
| data | Object | M | 응답 데이터 (응답이 성공일 경우에만 반환, 에러 시 미반환) |
| ┕ consumption_status | Integer | M | 소모성 아이템 소비 상태("0" 또는 "3"을 선택하여 고정 값으로 응답) |
| ┕ play_time | Integer | M | 게임 플레이 시간 |
| ┕ refund_preference | Integer | M | 환불 선호도 |
| ┕ sample_content_provided | Integer | M | 샘플 콘텐츠 제공 여부 |
응답 성공 예시는 아래와 같습니다.
// 성공한 경우
{
"code": 100,
"message": "OK",
"data": {
"consumption_status": 0,
"play_time": 1,
"refund_preference": 2,
"sample_content_provided": 0
}
}
응답 실패 예시는 아래와 같습니다.
응답 코드¶
| 코드 | 설명 |
|---|---|
| 100 | 성공 |
| 200 | 유효하지 않은 사용자 정보 (CS_CODE) 일 경우 |
| 400 | 요청 파라미터 오류 |
| 401 | 요청 JSON 에러 |
| 500 | 서버 처리 오류 |
| 501 | DB 통신 오류 |