콘텐츠로 이동

소비 정보 전송

앱 사용자가 환불 요청을 할 때 사용자 소비 정보를 앱 스토어에 전송하는 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 (구조 동일, 성공 반환 코드 변경 100200)
방화벽 IP 상용/Sandbox 단일 IP Hive 서버 IP 6개
Note

현재 소비 정보 전송은 Apple App Store만 지원합니다.

동작 플로우

'소비 정보 전송' API 호출 및 응답의 전체 동작 흐름을 요약하면 아래와 같습니다.

  1. 앱: API 엔드포인트를 구성하여 서버 URL을 준비
  2. 앱: Hive 콘솔에서 소비 정보 전송 사용 선택, 서버 URL을 등록
  3. 앱 클라이언트: 앱을 실행한 상태에서 인앱 상품 소비 정보 전송에 동의
  4. 앱 사용자: 앱에서 환불 요청
  5. Hive 서버: 앱에서 등록한 서버 URL로 POST API 요청, 앱 서버로부터 응답값으로 소비 정보 데이터 수신
  6. 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
    }
}

응답 실패 예시는 아래와 같습니다.

// 파라미터가 잘못되어 에러가 발생한 경우
{
    "code": 400,
    "message": "No parameter, or invalid parameter name."
}
// 유효하지 않은 사용자 정보 (CS_CODE) 일 경우
{
    "code": 200,
    "message": "No data, or invalid cs_code."
}

응답 코드

코드 설명
100 성공
200 유효하지 않은 사용자 정보 (CS_CODE) 일 경우
400 요청 파라미터 오류
401 요청 JSON 에러
500 서버 처리 오류
501 DB 통신 오류