소비 정보 전송
부가 서비스에서 소비 정보 전송을 사용하면, 앱 사용자가 환불 요청을 할 때 사용자 소비 행태 정보를 앱 마켓에 전송할 수 있습니다.
Note
현재 소비 정보 전송은 Apple 앱 마켓(Apple AppStore)만을 지원합니다.
개요¶
앱 마켓에 전송할 소비 정보에는 게임 서버에만 존재하는 데이터도 있습니다. 따라서 Hive 서버가 이 데이터를 앱 마켓에 전송하려면, 게임 서버에서 Hive 서버에 데이터를 전달해줘야 합니다.
게임 서버 URL은 게임 서버가 Hive 서버에 데이터를 전달하기 위해, 게임 서버에서 열어놓은 API 엔드포인트입니다. 아래 규약에 따라 API 엔드포인트를 구성한 후 이를 게임 서버 URL에 등록하시면, 사용자가 환불 요청을 할 때마다 Hive 서버가 이 API 엔드포인트로 POST 요청을 하고 필요한 데이터를 게임 서버로부터 전달받습니다. Hive 서버는 이 데이터를 취합해 앱 개발사를 대신해 앱 마켓에 소비 정보 전송을 완료합니다.
전체 과정을 요약하면 아래와 같습니다.
- 앱 개발사: API 엔드포인트를 구성해 서버 URL을 준비
- 앱 개발사: Hive 콘솔에서 소비 정보 전송 사용 선택, 서버 URL을 등록
- 앱 사용자: 앱 실행한 상태에서 인앱 상품 소비 정보 전송에 동의
- 앱 사용자: 앱에서 환불 요청
- Hive 서버: 앱 개발사가 등록한 서버 URL로 POST API 요청, 응답값으로 데이터 수령
- Hive 서버: 앱 마켓에 소비 정보 전송
Warning
만약 사용자가 앱 사용자가 동의 팝업에서 정보 전송에 동의하지 않으면, 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 |
Reponse Format | JSON |
Content-type | application/json |
다음은 Request Body 정보입니다.
명칭 | 타입 | 필수 여부 (필수: M, 옵션: O) | 설명 |
---|---|---|---|
gameindex | String | M | Hive 앱센터 게임 인덱스 |
appid | String | M | Hive 앱센터 AppID |
user_seq | String | M | 게임 내 사용자 CS CODE |
다음은 Request Body 예시입니다.
{
"gameindex": "539",
"appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
"user_seq": "222333"
}
API 응답(게임 서버 → Hive 서버) 구성¶
응답 성공 시, 게임 서버에서 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 통신 오류 |