Purchase log
Category¶
- Scribe type
Common Server | purchase_log |
---|---|
Test Server | test_purchase_log |
- FTP type
Naming Rule | purchase_[Date][Server][ID for avoiding duplication].json | e.g., purchase_20180705_111500_GLOBAL-4.json |
---|---|---|
- Fluentd Type (Based on Log definition)
Server (Balancing loads to two servers) | analytics-hivelog-03.withhive.com analytics-hivelog-04.withhive.com | |
Rule for naming tag | ha2union.game.[short name of game].purchase_log | e.g., ha2union.game.samplegame.purchase_log |
Value of category field | [short name of game]_purchase_log | e.g., {“category”:”samplegame_purchase_log”,”aaa”:1} |
Detailed transmission method |
- http type (Based on Log definition)
Server | https://analytics-log.withhive.com | |
Value of category field | [short name of game]_purchase_log | e.g., {"category":"samplegame_purchase_log","aaa":1} |
Detailed transmission method |
Log specification¶
Note
The snake-cased field, like server_id
, is transformed to camel case, like serverId
, when it stores in the final storage (BigQuery), and the log sent in the unspecified form, such as serverid
, is not saved in its column.
Field Name | Description | Type | Required | IAP v2 Required |
---|---|---|---|---|
channel | C2S: HIVE KAK: Kakao LIN: LINE WEI: Weibo | string (3) | Y | N |
uid | HIVE uid sent from HIVE Client (extra_uid is in use) Without uid, input null | bigint | Unnecessary if Extra_uid exists | N |
extra_uid | Unique identifier issued by external external channel (e.g. Kakao) where user accesses games from, not HIVE Without extra_uid, input null | string (30) | Unnecessary if uid exists | N |
did | Device identifier used in HIVE | bigint | Y | N |
platform | Platform of the user device: "A": Android "I": iOS "B": Bada "W": Windows | string (1) | Y | N |
os_version | Platform version of the user device e.g., "5.1.1" | string (30) | Y | Not required, but recommended. |
market | Market information "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": Xiaomi "TC": Tencent | string (2) | Y | N |
game_index | Issued by Business Department Techpart App Index issued with AppID | smallint | Y | N |
app_id | AppID which Hive SDK uses e.g., 'com.com2us.derbyday.kakao.freefull.google. android.common' | string(200) | Y | Y |
version | The version of game which user currently uses e.g., "2.0.1" | string(30) | Y | N |
nationality | Nationality code sent from the client. If this value is unable to send, just send client_ip (Search GeoIP on DW server and add it) Format: ISO 3166-1 alpha-2 e.g., "KR" Reference: Identifier Policy | string(2) | Y | N |
client_ip | IP address of user device at the time of payment Format: [0–255]. [0–255]. [0–255]. [0–255] | string(15) | Y | N |
transaction_id | Unique identifier of charge by game. It prevents duplication of purchase log when sending to Hive Server This field is to get rid of duplication when sent purchase logs in duplicated to the Hive Server. GooglePlay: order_id (In test payment : if order_id returns null, use purchasetoken, and others use order_id) AppStore: transaction_id SamsungApps: payment_id Market without verification: Transaction identifier issued by game server If a game use IAP 2.0, enters {iap transaction id}. | string(512) | Y | Y |
product_id | Product identifier e.g., com.com2us.tinyfarm.normal.freefull.apple. global.ios.universal.Large_Basket_of_Bells | string(512) | Y | N |
product_name | Product name Kor/Eng/Num/Sign are available within 20 characters | string(128) | Y | N |
product_price | Product price paid by user e.g., 10.99 | float | Y | N |
currency | Currency of the price paid by user Format: ISO 4217 e.g., USD, KRW Payment via Lebi is displayed as “CNY” (20lebi=1CNY) | string(3) | Y | N |
quantity | The number of products purchased by user | int | Y | N |
purchase_time | The time user pays for the purchase (on the basis of KST) Input without spaces Format: yyyy-mm-dd hhss e.g., 2017-02-08 16:34:38 | datetime | Y | Y |
timezone | UTC offset of time parameter in the log
e.g., "GMT+09:00" e.g., "GMT+10:30" | string | Y | N |
path | gs: Abbreviation of game server (fixed) | string(2) | Y | N |
server_ip | IP address of game server which sends purchase log Format: [0–255]. [0–255]. [0–255]. [0–255] | string(15) | Y | N |
giftee_uid | It displays whether the target of log is a gift or not; if a gift, the value means a unique identifier of the receiver (uid) null: Not for a gift. Normal purchase for user itself 0: A gift, but receiver’s uid is unclear Value of ID: uid of the receiver | bigint | Y | N |
device_name | Model name of user device e.g., iPhone, iPad, SM-G935, LGM-G600S | string(32) | Y | N |
company | Game publishing company, the target of log: e.g., "C2S": Com2uS, "GVI": Com2uS Holdings | string(3) | Y | N |
server_id | Server code Refer to Table of Server Code to input server code (JSON Enter Code) | string | Y | Y |
server_uid | User identifier used in game server | bigint | Y | N |
level | The level of user in the game (The highest level if character is many) | int | Y | Y |
character_id | Character identifier used in server Set this identifier as 0 if the game has no character | bigint | Y | N |
character_type_id | The value of character type used in server Set this value as 0 if the game has no character | int | Y | N |
character_level | Character level used in server Set this level as 0 if the game has no character | int | Y | N |
language | Language code of user Format: ISO 639 alpha-2 (small letter) e.g., "ko" | string(7) | Y | N |
game_language | Language code of the game sent from the client. 2-small letters e.g., ko/zh-hans (simplified Chinese), zh-hant (traditional Chinese) Reference: Identifier Policy | varchar | Y | N |
device_language | Language code of the device sent from the client e.g., ko/zh-hans (simplified Chinese), zh-hant (traditional Chinese) Reference: Identifier Policy | varchar | Y | N |
vid | User identifier issued by Login Center If you don's use Login Center, sending the key value is not required. | bigint | Y | N |
mac_address | MAC address of user device Format: String type with 12 characters If not existed, empty the value e.g., 482C6A1E593D | string(12) | Y | N |
item_send_ok | (Y/N) Is purchased item delivered to user? If the delivery state is unable to confirm, send the empty string "" | string(1) | Y | Y |
is_emulator | If connecting with Emulator for PC such as BlueStacks, return 1; unless, return 0 to the PC version, return 2 | tinyint(1) | N | Not required, but recommended. |
guid | Unique key generated per log Random format such as uuid is recommended | varchar(64) | N | N |
hiveiap_purchase_test | Test Payment Status | varchar(100) | N | N |
Log sample¶
{
"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.android.common.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"
}