구매 로그
카테고리¶
- Scribe 방식
상용 서버 | purchase_log |
---|---|
개발 서버 | test_purchase_log |
- FTP 방식
파일명 규칙 | purchase_[날짜][서버][중복방지용id].json | 예. purchase_20180705_111500_GLOBAL-4.json |
- fluentd 방식 (로그 정의 템플릿)
서버 (2대 로드밸런싱) | analytics-hivelog-03.withhive.com analytics-hivelog-04.withhive.com | |
---|---|---|
TAG명 규칙 | ha2union.game.[게임명약칭].purchase_log | 예. ha2union.game.samplegame.purchase_log |
category 필드 값 | [게임명약칭]_purchase_log | 예. {"category":"samplegame_purchase_log","aaa":1} |
- http 방식 (로그 정의 템플릿)
서버 | https://analytics-log.withhive.com | |
---|---|---|
category 필드 값 | [게임명약칭]_purchase_log | 예. {"category":"samplegame_purchase_log","aaa":1} |
로그 스펙¶
Note
스네이크 케이스(예: server_id
) 형태의 필드는 최종 저장소(BigQuery)에 저장될 때 카멜 케이스(예: serverId
) 형태로 변환되며, serverid
같은 스펙에 명시되지 않은 형태로 전송된 로그는 해당 컬럼에 저장되지 않습니다.
필드명 | 설명 | 타입 | 필수여부 | IAP v2 필수여부 |
---|---|---|---|---|
channel | C2S: Hive KAK: 카카오 LIN: 라인 WEI: 웨이보 STE: 스팀 | string(3) | Y | N |
uid | 클라이언트에서 보내온 Hive uid (extra_uid를 사용) 없는 경우 null 입력 | bigint | Extre_uid가 있다면 불필요 | N |
extra_uid | Hive가 아닌 외부 채널(예. 카카오)을 통해 접속한 유저일 때, 해당 외부 채널에서 발급한 유저의 고유 아이디 없는 경우 null 입력 | string(30) | uid가 있다면 불필요 | N |
did | Hive에서 사용하는 단말기 식별자(did) 값 | bigint | Y | N |
platform | 유저 단말기의 플랫폼을 의미: "A": Android "I": iOS "B": Bada "W": Windows | string(1) | Y | N |
os_version | 유저 단말기의 플랫폼 버전 예. "5.1.1" | string(30) | Y | 필수는 아니지만 권장 |
market | 마켓 정보 "TS": SKT T store "OL": KT Olleh Market "OZ": LGU+ Oz Store "AP": Apple App store "GO": Google Play "SA": Samsung Apps "LE": Com2uS Lebi "MM": ChinaMobile Mobile Market "SN": Sina Weibo Point "36": Qihu 360 Point "MO": Momo Momo Point "DN": DeNA Mobage Point "NA": Naver App Store "AM": Amazon "ON": ONE store "FU": Funtap "HU": Huawei "OP": OPPO "VI": VIVO "XI": 샤오미 "TC": 텐센트 "HS": Hive Store(Crossplay) "ST": Steam | string(2) | Y | N |
game_index | 사업부 테크파트에서 발급 AppID와 함께 발급되는 고유 App Index | smallint | Y | N |
app_id | Hive에서 사용하는 AppID 예.'com.com2us.derbyday.kakao.freefull.google.global. android.common' | string(200) | Y | Y |
version | 유저가 현재 이용하고 있는 게임 버전 예. "2.0.1" | string(30) | Y | N |
nationality | 클라이언트에서 보내온 국적 코드 값 만약 이 값을 전송하지 못하는 경우는 client_ip 만이라도 전송 (DW서버에서 GEO IP 조회하여 추가함) 형식: ISO 3166-1 alpha-2 예. "KR" Hive 식별자 정책 참고 | string(2) | Y | N |
client_ip | 구매에 대한 결제 시점의 유저의 단말기 IP 주소 형식: [0–255]. [0–255]. [0–255]. [0–255] | string(15) | Y | N |
transaction_id | 게임별 과금에 대한 고유 식별자 구매 로그를 중복으로 Hive 서버에 전송 했을 때 중복을 없애기 위한 용도임 GooglePlay: order_id (결재 테스트 시 : order_id가 null 인 경우 purchasetoken 사용, 그 외는 order_id 사용) AppStore: transaction_id SamsungApps: payment_id 검증이 없는 마켓: 게임 서버에서 발급한 트랜젝션 식별자 IAP 2.0 을 사용하는 게임의 경우는 iap transaction id 입력 | string(512) | Y | Y |
product_id | 상품에 대한 고유 식별자 예. com.com2us.tinyfarm.normal.freefull.apple.global. ios.universal.Large_Basket_of_Bells | string(512) | Y | N |
product_name | 상품에 대한 고유 상품 이름 (reference name) 한글/영문/숫자/기호 20자 이내 | string(128) | Y | N |
product_price | 유저가 결제한 상품의 가격. 통화에 맞게 표기된 값을 넣어줌 예. 10.99 | float | Y | N |
currency | 유저가 결제한 금액의 통화 형식: ISO 4217 (3byte) 예. USD, KRW 러비를 이용한 과금은 "CNY"로 설정 (20lebi=1CNY) | string(3) | Y | N |
quantity | 유저가 구매한 상품 개수 (1로 고정) | int | Y | N |
purchase_time | 유저가 실제로 결제를 수행한 시간 (한국 시간 기준) 공백 없이 입력 형식: yyyy-mm-dd hhss 예. 2017-02-08 16:34:38 | datetime | Y | Y |
timezone | 로그에 입력하는 시간 파라미터 값의 UTC offset 값
| string | Y | N |
path | gs: GameServer 약자 (고정) | string(2) | Y | N |
server_ip | 구매 로그를 보내는 게임 서버의 IP 주소 형식: [0–255]. [0–255]. [0–255]. [0–255] | string(15) | Y | N |
giftee_uid | 로그의 대상이 된 구매가 선물인지 아닌지를 나타내며, 선물일 때는 선물 받은 유저에 대한 고유 식별자(uid). null: 선물을 위한 구매가 아님. 유저 본인을 위한 구매 결제 0: 상품을 선물 받은 사람이 있으나, 받은 사람의 uid가 확인이 되지 않음 아이디 값: 선물 받은 사람의 uid | bigint | Y | N |
device_name | 유저의 단말기 모델명 예. iPhone, iPad, SM-G935, LGM-G600S | string(32) | Y | N |
company | 로그의 대상이 되는 게임 제작 회사 예. "C2S": 컴투스, "GVI": 컴투스홀딩스 | string(3) | Y | N |
server_id | 서버 구분 코드 서버코드표 참조하여 '서버 코드 (JSON 입력 코드)'를 입력 | string | Y | Y |
server_uid | 게임 서버에서 사용하는 유저 식별자 | bigint | Y | N |
level | 게임 내 유저 레벨 (캐릭터가 다수면 최고 레벨) | int | Y | Y |
character_id | 서버 내에서 사용하는 캐릭터 식별자 캐릭터가 없는 게임에서는 캐릭터 식별자를 0으로 설정 | bigint | Y | N |
character_type_id | 서버 내에서 사용하는 캐릭터 타입 구분 값 캐릭터가 없는 게임에서는 캐릭터 타입 구분 값을 0으로 설정 | int | Y | N |
character_level | 서버 내에서 사용하는 캐릭터 레벨 값. 캐릭터가 없는 게임에서는 캐릭터 레벨 값을 0으로 설정 | int | Y | N |
language | 유저의 언어 코드 형식: ISO 639 alpha-2 (소문자) 예. "ko" | string(7) | Y | N |
game_language | 클라이언트에서 보내온 게임의 언어코드 (2글자 소문자) ex) ko, zh-hans 간체, zh-hant 번체 Hive 식별자 정책 참고 | varchar | Y | 필수는 아니지만 권장 |
device_language | 클라이언트에서 보내온 단말의 언어코드 ex) ko, zh-hans 간체, zh-hant 번체 Hive 식별자 정책 참고 | varchar | Y | N |
vid | 로그인 센터에서 발급하는 유저 식별자 로그인 센터 사용하지 않을 경우, key 값 보내지 않아도 됨 | bigint | N | N |
mac_address | 유저 단말기의 MAC 주소 형식: 12자의 문자열 MAC 주소가 없을 땐 빈 값으로 설정 예. 482C6A1E593D | string(12) | N | N |
item_send_ok | (Y/N) 구매한 상품이 유저에게 지급 되었는지? 지급 여부를 확인이 불가능 하다면 공백 문자열 "" | string(1) | Y | Y |
is_emulator | 블루스택 등 PC용 에뮬로 접속했으면 1, 아니면 0 PC버전으로 접속 시 2 | tinyint(1) | N | 필수는 아니지만 권장 |
guid | 매 로그마다 발생하는 고유 키 값 uuid와 같은 랜덤 문자열 형태를 권장 | varchar(64) | N | N |
hiveiap_purchase_test | 테스트 결제 여부 | varchar(100) | N | N |
로그 예제¶
{
"channel": "C2S",
"uid": 111111111,
"did": 222222222,
"mac_address": "000000000000",
"platform": "A",
"os_version": "6.0.1",
"market": "GO",
"game_index": "2414",
"app_id": "com.com2us.misample",
"version": "2.4.1",
"level": 21,
"nationality": "us",
"language": "en",
"ip": "112.114.245.232",
"transaction_id": "GPA.3333-8449-4747-11111",
"product_id": "com.com2us.misample.normal.freefull.google.global.cash01",
"product_name": "uc9c0",
"product_price": "1.99",
"quantity": 1,
"currency": "USD",
"purchase_time": "2018-05-01 11:22:33",
"path": "gs",
"server_ip": "114.114.245.239",
"device_name": "samsung SM-G920P",
"company": "C2S",
"game_language": "en",
"device_language": "ko",
"server_id": "KR-2",
"guid": "ca4bd34c867f4617a819ae139d8d6670",
"hiveiap_purchase_test" : "Y"
}