콘텐츠로 이동

소비 정보 전송

부가 서비스에서 소비 정보 전송을 사용하면, 앱 사용자가 환불 요청을 할 때 사용자 소비 행태 정보를 앱 마켓에 전송할 수 있습니다.

Note

현재 소비 정보 전송은 Apple 앱 마켓(Apple AppStore)만을 지원합니다.

개요

앱 마켓에 전송할 소비 정보에는 게임 서버에만 존재하는 데이터도 있습니다. 따라서 Hive 서버가 이 데이터를 앱 마켓에 전송하려면, 게임 서버에서 Hive 서버에 데이터를 전달해줘야 합니다.

게임 서버 URL은 게임 서버가 Hive 서버에 데이터를 전달하기 위해, 게임 서버에서 열어놓은 API 엔드포인트입니다. 아래 규약에 따라 API 엔드포인트를 구성한 후 이를 게임 서버 URL에 등록하시면, 사용자가 환불 요청을 할 때마다 Hive 서버가 이 API 엔드포인트로 POST 요청을 하고 필요한 데이터를 게임 서버로부터 전달받습니다. Hive 서버는 이 데이터를 취합해 앱 개발사를 대신해 앱 마켓에 소비 정보 전송을 완료합니다.

전체 과정을 요약하면 아래와 같습니다.

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

다음은 응답 실패 시 응답값 예시입니다.

// 파라미터가 잘못되어 에러가 발생한 경우
{
    "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 통신 오류