# Travel : 여행 및 레저

:ballot\_box\_with\_check:속성 중 **Key** 이름은 가이드에 나와있는 **Key** 이름을 그대로 사용 해 주세요.\
(임의로 변경시 대시보드에서 데이터 확인이 어렵습니다.  > payment\_name , payment\_type 등)

## 결제 수단 등록&#x20;

결제 수단이 등록 완료된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>payment_name</td><td>카카오페이</td><td>string</td><td>결제수단 명칭</td></tr><tr><td>payment_type</td><td>간편결제</td><td>string</td><td>결제수단 유형</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_payment_info");
eventMap.put("payment_name", "카카오페이");
eventMap.put("payment_type", "간편결제");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_payment_info"
eventMap["payment_name"] = "카카오페이"
eventMap["payment_type"] = "간편결제"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_add_payment_info"
event["payment_name"] = "카카오페이"
event["payment_type"] = "간편결제"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_payment_info" forKey:@"event"];
[event setValue:@"카카오페이" forKey:@"payment_name"];
[event setValue:@"간편결제" forKey:@"payment_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_payment_info";
    event["payment_name"] = "카카오페이";
    event["payment_type"] = "간편결제";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_payment_info";
    event["payment_name"] = "카카오페이";
    event["payment_type"] = "간편결제";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_add_payment_info";
event["payment_name"] = "카카오페이";
event["payment_type"] = "간편결제";
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_add_payment_info",
              payment_name : "카카오페이",
              payment_type : "간편결제"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_search",
    date_a : "2020-11-01",
    date_b : "2020-11-03",
    city : "Seoul",
    country : "Korea",
    hotel_class : "all",
    g20 : 412
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
		event : "w_search",
		date_a : "2020-11-01",
		date_b : "2020-11-03",
		city : "Seoul",
		country : "Korea",
		hotel_class : "all",
		g20 : 412
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_add_payment_info");
eventDic.Add("payment_name", "카카오페이");
eventDic.Add("paynment_type", "간편결제");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 검색 - 호텔

검색 완료 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>date_a</td><td>2020-11-01</td><td>string</td><td>체크인 날짜</td></tr><tr><td>date_b</td><td>2020-11-03</td><td>string</td><td>체크아웃 날짜</td></tr><tr><td>city</td><td>Seoul</td><td>string</td><td>호텔 소재 도시</td></tr><tr><td>country</td><td>Korea</td><td>string</td><td>호텔 소재 국가</td></tr><tr><td>hotel_class</td><td>all</td><td>string</td><td>호텔 성급</td></tr><tr><td>g20</td><td>412</td><td>float</td><td>검색 결과로 출력된 아이템 개수</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search");
eventMap.put("date_a", "2020-11-01");
eventMap.put("date_b", "2020-11-03");
eventMap.put("city", "Seoul");
eventMap.put("country", "Korea");
eventMap.put("hotel_class", "all");
eventMap.put("g20", 412);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search"
eventMap["date_a"] = "2020-11-01"
eventMap["date_b"] = "2020-11-03"
eventMap["city"] = "Seoul"
eventMap["country"] = "Korea"
eventMap["hotel_class"] = "all"
eventMap["g20"] = "412"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_search"
event["date_a"] = "2020-11-01"
event["date_b"] = "2020-11-03"
event["city"] = "Seoul"
event["country"] = "Korea"
event["hotel_class"] = "all"
event["g20"] = 412
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search" forKey:@"event"];
[event setValue:@"2020-11-01" forKey:@"date_a"];
[event setValue:@"2020-11-03" forKey:@"date_b"];
[event setValue:@"Seoul" forKey:@"city"];
[event setValue:@"Korea" forKey:@"country"];
[event setValue:@"all" forKey:@"hotel_class"];
[event setValue:[NSNumber numberWithInt:412] forKey:@"g20"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["date_a"] = "2020-11-01";
    event["date_b"] = "2020-11-03";
    event["city"] = "Seoul";
    event["country"] = "Korea";
    event["hotel_class"] = "all";
    event["g20"] = 412;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["date_a"] = "2020-11-01";
    event["date_b"] = "2020-11-03";
    event["city"] = "Seoul";
    event["country"] = "Korea";
    event["hotel_class"] = "all";
    event["g20"] = 412;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_search";
event["date_a"] = "2020-11-01";
event["date_b"] = "2020-11-03";
event["city"] = "Seoul";
event["country"] = "Korea";
event["hotel_class"] = "all";
event["g20"] = 412;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_search",
              date_a : "2020-11-01",
              date_b : "2020-11-03",
              city : "Seoul",
              country : "Korea",
              hotel_class : "all",
              g20 : 412
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_search",
    date_a : "2020-11-01",
    date_b : "2020-11-03",
    city : "Seoul",
    country : "Korea",
    hotel_class : "all",
    g20 : 412
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_search",
	    date_a : "2020-11-01",
	    date_b : "2020-11-03",
	    city : "Seoul",
	    country : "Korea",
	    hotel_class : "all",
	    g20 : 412
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_search");
eventDic.Add("date_a", "2020-11-01");
eventDic.Add("date_b", "2020-11-03");
eventDic.Add("city", "Seoul");
eventDic.Add("country", "Korea");
eventDic.Add("hotel_class", "all");
eventDic.Add("g20", 412);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 검색 - 항공권

검색 완료 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>date_a</td><td>2020-11-01</td><td>string</td><td>출국 날짜</td></tr><tr><td>date_b</td><td>2020-11-20</td><td>string</td><td>귀국 날짜</td></tr><tr><td>airport_a</td><td>인천</td><td>string</td><td>출발 공항 명칭 또는 코드</td></tr><tr><td>airport_b</td><td>바르셀로나</td><td>string</td><td>도착 공항 명칭 또는 코드</td></tr><tr><td>g20</td><td>72</td><td>float</td><td>검색 결과로 출력된 아이템 개수</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search");
eventMap.put("date_a", "2020-11-01");
eventMap.put("date_b", "2020-11-20");
eventMap.put("airport_a", "인천");
eventMap.put("airport_b", "바르셀로나");
eventMap.put("g20", 72);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search"
eventMap["date_a"] = "2020-11-01"
eventMap["date_b"] = "2020-11-03"
eventMap["airport_a"] = "인천"
eventMap["airport_b"] = "바르셀로나"
eventMap["g20"] = "412"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_search"
event["date_a"] = "2020-11-01"
event["date_b"] = "2020-11-20"
event["airport_a"] = "인천"
event["airport_b"] = "바르셀로나"
event["g20"] = 72
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search" forKey:@"event"];
[event setValue:@"2020-11-01" forKey:@"date_a"];
[event setValue:@"2020-11-20" forKey:@"date_b"];
[event setValue:@"인천" forKey:@"airport_a"];
[event setValue:@"바르셀로나" forKey:@"airport_b"];
[event setValue:[NSNumber numberWithInt:72] forKey:@"g20"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["date_a"] = "2020-11-01";
    event["date_b"] = "2020-11-20";
    event["airport_a"] = "인천";
    event["airport_b"] = "바르셀로나";
    event["g20"] = 72;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["date_a"] = "2020-11-01";
    event["date_b"] = "2020-11-20";
    event["airport_a"] = "인천";
    event["airport_b"] = "바르셀로나";
    event["g20"] = 72;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_search";
event["date_a"] = "2020-11-01";
event["date_b"] = "2020-11-20";
event["airport_a"] = "인천";
event["airport_b"] = "바르셀로나";
event["g20"] = 72;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_search",
              date_a : "2020-11-01",
              date_b : "2020-11-20",
              city : "인천",
              country : "바르셀로나",
              g20 : 72
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_search",
    date_a : "2020-11-01",
    date_b : "2020-11-20",
    airport_a : "인천",
    airport_b : "바르셀로나",
    g20 : 72
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
		event : "w_search",
		date_a : "2020-11-01",
		date_b : "2020-11-20",
		airport_a : "인천",
		airport_b : "바르셀로나",
		g20 : 72
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_search");
eventDic.Add("date_a", "2020-11-01");
eventDic.Add("date_b", "2020-11-20");
eventDic.Add("airport_a", "인천");
eventDic.Add("airport_b", "바르셀로나");
eventDic.Add("g20", 72);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 상품 조회 - 호텔

상품 상세 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>hotel_id</td><td>P388299</td><td>string</td><td>호텔 고유번호</td></tr><tr><td>hotel_name</td><td>프레이저 플레이스 센트럴 서울</td><td>string</td><td>호텔 명칭</td></tr><tr><td>hotel_class</td><td>4</td><td>string</td><td>호텔 성급</td></tr><tr><td>city</td><td>Seoul</td><td>string</td><td>호텔 소재 도시</td></tr><tr><td>country</td><td>Korea</td><td>string</td><td>호텔 소재 국가</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_product");
Map<String, Object> productMap = new HashMap<>();
productMap.put("hotel_id", "P388299");
productMap.put("hotel_name", "프레이저 플레이스 센트럴 서울");
productMap.put("hotel_class", "4");
productMap.put("city", "Seoul");
productMap.put("country", "Korea");
pageMap.put("product", productMap);
DOT.logScreen(pageMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_product"
val productMap = mutableMapOf<String,Any>()
productMap["hotel_id"] = "P388299"
productMap["hotel_name"] = "프레이저 플레이스 센트럴 서울"
productMap["hotel_class"] = "4"
productMap["city"] = "Seoul"
productMap["country"] = "Korea"
pageMap["product"] = productMap
DOT.logScreen(pageMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let screen = NSMutableDictionary()
screen["event"] = "w_view_product"
var product : [String: Any] = [:]
product["hotel_id"] = "P388299"
product["hotel_name"] = "프레이저 플레이스 센트럴 서울"
product["hotel_class"] = "4"
product["city"] = "Seoul"
product["country"] = "Korea"
screen["product"] = product
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_product" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"P388299" forKey:@"hotel_id"];
[product setValue:@"프레이저 플레이스 센트럴 서울" forKey:@"hotel_name"];
[product setValue:@"4" forKey:@"hotel_class"];
[product setValue:@"Seoul" forKey:@"city"];
[product setValue:@"Korea" forKey:@"country"];
[screen setValue:product forKey:@"product"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_product";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    screen["product"] = product;
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_product";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    screen["product"] = product;
    WDOT.onStartPage(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map screen = {};
screen["event"] = "w_view_product";
Map product = {};
product["hotel_id"] = "P388299";
product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
product["hotel_class"] = "4";
product["city"] = "Seoul";
product["country"] = "Korea";
screen["product"] = product;
DOT.logScreen(screen);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logScreen",
      data: {
              event : "w_view_product",
              hotel_id : "P388299",
              hotel_name : "프레이저 플레이스 센트럴 서울",
              hotel_class : "4",
              city : "Seoul",
              country : "Korea"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge != null &&
  (NativeModules.DotReactBridge.onStartPage(),
  NativeModules.DotReactBridge.logScreen(JSON.stringify({
        event : "w_view_product",
        product : {
        hotel_id : "P388299",
        hotel_name : "프레이저 플레이스 센트럴 서울",
        hotel_class : "4",
        city : "Seoul",
        country : "Korea"
        }
    }),
  ));	

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logScreen",
	data : {
	    event : "w_view_product",
	    product : {
	    hotel_id : "P388299",
	    hotel_name : "프레이저 플레이스 센트럴 서울",
	    hotel_class : "4",
	    city : "Seoul",
	    country : "Korea"
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_product");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("hotel_id", "P388299");
product.Add("hotel_name", "프레이저 플레이스 센트럴 서울");
product.Add("hotel_class", "4");
product.Add("city", "Seoul");
product.Add("country", "Korea");
page.Add("product", product);
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 상품 조회 - 투어

상품 상세 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>product_id</td><td>11931</td><td>string</td><td>상품 고유코드</td></tr><tr><td>product_name</td><td>뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)</td><td>string</td><td>상품명</td></tr><tr><td>city</td><td>Christchurch</td><td>string</td><td>도시 정보</td></tr><tr><td>country</td><td>New Zealand</td><td>string</td><td>국가 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_product");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "11931");
productMap.put("product_name", "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)");
productMap.put("city", "Christchurch");
productMap.put("country", "New Zealand");
pageMap.put("product", productMap);
DOT.logScreen(pageMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_product"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "11931"
productMap["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)"
productMap["city"] = "Christchurch"
productMap["country"] = "New Zealand"
pageMap["product"] = productMap
DOT.logScreen(pageMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let screen = NSMutableDictionary()
screen["event"] = "w_view_product"
var product : [String: Any] = [:]
product["product_id"] = "11931"
product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)"
product["city"] = "Christchurch"
product["country"] = "New Zealand"
screen["product"] = product
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_product" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"11931" forKey:@"product_id"];
[product setValue:@"뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)" forKey:@"product_name"];
[product setValue:@"Christchurch" forKey:@"hotel_class"];
[product setValue:@"Seoul" forKey:@"city"];
[product setValue:@"New Zealand" forKey:@"country"];
[screen setValue:product forKey:@"product"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_product";
    var product = new Object();
    product["product_id"] = "11931";
    product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
    product["city"] = "Christchurch";
    product["country"] = "New Zealand";
    screen["product"] = product;
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_product";
    var product = new Object();
    product["product_id"] = "11931";
    product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
    product["city"] = "Christchurch";
    product["country"] = "New Zealand";
    screen["product"] = product;
    WDOT.onStartPage(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map screen = {};
screen["event"] = "w_view_product";
Map product = {};
product["product_id"] = "11931";
product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
product["city"] = "Christchurch";
product["country"] = "New Zealand";
screen["product"] = product;
DOT.logScreen(screen);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logScreen",
      data: {
              event : "w_view_product",
              product_id : "11931",
              product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
              city : "Christchurch",
              country : "New Zealand"
              }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge != null &&
  (NativeModules.DotReactBridge.onStartPage(),
  NativeModules.DotReactBridge.logScreen(JSON.stringify({
        event : "w_view_product",
        product : {
        product_id : "11931",
            product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
            city : "Christchurch",
            country : "New Zealand"
        }
    }),
  ));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	 method:"logScreen",
	 data : {
         event : "w_view_product",
		    product : {
	    		product_id : "11931",
	    		product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
			city : "Christchurch",
			country : "New Zealand"
    	  	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_product");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "11931");
product.Add("product_name", "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)");
product.Add("city", "Christchurch");
product.Add("country", "New Zealand");
page.Add("product", product);
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 위시리스트에 추가 - 호텔

상품이 위시리스트에 추가된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>hotel_id</td><td>P388299</td><td>string</td><td>호텔 고유번호</td></tr><tr><td>hotel_name</td><td>프레이저 플레이스 센트럴 서울</td><td>string</td><td>호텔 명칭</td></tr><tr><td>hotel_class</td><td>4</td><td>string</td><td>호텔 성급</td></tr><tr><td>city</td><td>Seoul</td><td>string</td><td>호텔 소재 도시</td></tr><tr><td>country</td><td>Korea</td><td>string</td><td>호텔 소재 국가</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_to_wishlist");
Map<String, Object> productMap = new HashMap<>();
productMap.put("hotel_id", "P388299");
productMap.put("hotel_name", "프레이저 플레이스 센트럴 서울");
productMap.put("hotel_class", "4");
productMap.put("city", "Seoul");
productMap.put("country", "Korea");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_to_wishlist"
val productMap = mutableMapOf<String,Any>()
productMap["hotel_id"] = "P388299"
productMap["hotel_name"] = "프레이저 플레이스 센트럴 서울"
productMap["hotel_class"] = "4"
productMap["city"] = "Seoul"
productMap["country"] = "Korea"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_add_to_wishlist"
var product : [String: Any] = [:]
product["hotel_id"] = "P388299"
product["hotel_name"] = "프레이저 플레이스 센트럴 서울"
product["hotel_class"] = "4"
product["city"] = "Seoul"
product["country"] = "Korea"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_to_wishlist" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"P388299" forKey:@"hotel_id"];
[product setValue:@"프레이저 플레이스 센트럴 서울" forKey:@"hotel_name"];
[product setValue:@"4" forKey:@"hotel_class"];
[product setValue:@"Seoul" forKey:@"city"];
[product setValue:@"Korea" forKey:@"country"];
[event setValue:product forKey:@"product"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_to_wishlist";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_to_wishlist";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_add_to_wishlist";
Map product = {};
product["hotel_id"] = "P388299";
product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
product["hotel_class"] = "4";
product["city"] = "Seoul";
product["country"] = "Korea";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_add_to_wishlist",
              hotel_id : "P388299",
              hotel_name : "프레이저 플레이스 센트럴 서울",
              hotel_class : "4",
              city : "Seoul",
              country : "Korea"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_add_to_wishlist",
    product : {
    hotel_id : "P388299",
    hotel_name : "프레이저 플레이스 센트럴 서울",
    hotel_class : "4",
    city : "Seoul",
    country : "Korea"
    }
})); 	

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	event : "w_add_to_wishlist",
        product : {
	    hotel_id : "P388299",
	    hotel_name : "프레이저 플레이스 센트럴 서울",
	    hotel_class : "4",
	    city : "Seoul",
	    country : "Korea"
	    }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_add_to_wishlist");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("hotel_id", "P388299");
product.Add("hotel_name", "프레이저 플레이스 센트럴 서울");
product.Add("hotel_class", "4");
product.Add("city", "Seoul");
product.Add("country", "Korea");
page.Add("product", product);
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 위시리스트에서 제거 - 투어

상품이 위시리스트에서 제거된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>product_id</td><td>11931</td><td>string</td><td>상품 고유코드</td></tr><tr><td>product_name</td><td>뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)</td><td>string</td><td>상품명</td></tr><tr><td>city</td><td>Christchurch</td><td>string</td><td>도시 정보</td></tr><tr><td>country</td><td>New Zealand</td><td>string</td><td>국가 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_remove_from_wishlist");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "11931");
productMap.put("product_name", "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)");
productMap.put("city", "Christchurch");
productMap.put("country", "New Zealand");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_remove_from_wishlist"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "11931"
productMap["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)"
productMap["city"] = "Christchurch"
productMap["country"] = "New Zealand"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_remove_from_wishlist"
var product : [String: Any] = [:]
product["product_id"] = "11931"
product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)"
product["city"] = "Christchurch"
product["country"] = "New Zealand"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_remove_from_wishlist" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"11931" forKey:@"product_id"];
[product setValue:@"뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)" forKey:@"product_name"];
[product setValue:@"Christchurch" forKey:@"hotel_class"];
[product setValue:@"Seoul" forKey:@"city"];
[product setValue:@"New Zealand" forKey:@"country"];
[event setValue:product forKey:@"product"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_remove_from_wishlist";
    var product = new Object();
    product["product_id"] = "11931";
    product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
    product["city"] = "Christchurch";
    product["country"] = "New Zealand";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_remove_from_wishlist";
    var product = new Object();
    product["product_id"] = "11931";
    product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
    product["city"] = "Christchurch";
    product["country"] = "New Zealand";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_remove_from_wishlist";
Map product = {};
product["product_id"] = "11931";
product["product_name"] = "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)";
product["city"] = "Christchurch";
product["country"] = "New Zealand";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_remove_from_wishlist",
              product_id : "11931",
              product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
              city : "Christchurch",
              country : "New Zealand"
      }
}));

```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_remove_from_wishlist",
    product : {
    product_id : "11931",
    product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
    city : "Christchurch",
    country : "New Zealand"
    }
})); 

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_remove_from_wishlist",
	    product : {
	    product_id : "11931",
	    product_name : "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)",
	    city : "Christchurch",
	    country : "New Zealand"
            }
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_remove_from_wishlist");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "11931");
product.Add("product_name", "뉴질랜드 남섬 4박5일 조인 팩 (4월 - 9월 Only)");
product.Add("city", "Christchurch");
product.Add("country", "New Zealand");
page.Add("product", product);
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 부킹 시작 - 호텔

상품의 부킹을 시작하는 시점 또는 주문서 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>hotel_id</td><td>P388299</td><td>string</td><td>호텔 고유번호</td></tr><tr><td>hotel_name</td><td>프레이저 플레이스 센트럴 서울</td><td>string</td><td>호텔 명칭</td></tr><tr><td>hotel_class</td><td>4</td><td>string</td><td>호텔 성급</td></tr><tr><td>hotel_subtype_a</td><td>디럭스 투베드</td><td>string</td><td>룸 세부속성</td></tr><tr><td>city</td><td>Seoul</td><td>string</td><td>소텔 소재 도시</td></tr><tr><td>country</td><td>Korea</td><td>string</td><td>호텔 소재 국가</td></tr><tr><td>date_a</td><td>2020-11-01</td><td>string</td><td>체크인 날짜</td></tr><tr><td>date_b</td><td>2020-11-03</td><td>string</td><td>체크아웃 날짜</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_start_booking");
Map<String, Object> productMap = new HashMap<>();
productMap.put("hotel_id", "P388299");
productMap.put("hotel_name", "프레이저 플레이스 센트럴 서울");
productMap.put("hotel_class", "4");
productMap.put("hotel_subtype_a", "디럭스 투베드");
productMap.put("city", "Seoul");
productMap.put("country", "Korea");
productMap.put("date_a", "2020-11-01");
productMap.put("date_b", "2020-11-03");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_start_booking"
val productMap = mutableMapOf<String,Any>()
productMap["hotel_id"] = "P388299"
productMap["hotel_name"] = "프레이저 플레이스 센트럴 서울"
productMap["hotel_class"] = "4"
productMap["hotel_subtype_a"] = "디럭스 투베드"
productMap["city"] = "Seoul"
productMap["country"] = "Korea"
productMap["date_a"] = "2020-11-01"
productMap["date_b"] = "2020-11-03"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_start_booking"
var product : [String: Any] = [:]
product["hotel_id"] = "P388299"
product["hotel_name"] = "프레이저 플레이스 센트럴 서울"
product["hotel_class"] = "4"
product["hotel_subtype_a"] = "디럭스 투베드"
product["city"] = "Seoul"
product["country"] = "Korea"
product["date_a"] = "2020-11-01"
product["date_b"] = "2020-11-03"
event["product"] = product
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_start_booking" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"P388299" forKey:@"hotel_id"];
[product setValue:@"프레이저 플레이스 센트럴 서울" forKey:@"hotel_name"];
[product setValue:@"4" forKey:@"hotel_class"];
[product setValue:@"Seoul" forKey:@"city"];
[product setValue:@"Korea" forKey:@"country"];
[product setValue:@"2020-11-01" forKey:@"date_a"];
[product setValue:@"2020-11-03" forKey:@"date_b"];
[event setValue:product forKey:@"product"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_booking";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["hotel_subtype_a"] = "디럭스 투베드";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    product["date_a"] = "2020-11-01";
    product["date_b"] = "2020-11-03";
    event["product"] = product;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_start_booking";
    var product = new Object();
    product["hotel_id"] = "P388299";
    product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
    product["hotel_class"] = "4";
    product["hotel_subtype_a"] = "디럭스 투베드";
    product["city"] = "Seoul";
    product["country"] = "Korea";
    product["date_a"] = "2020-11-01";
    product["date_b"] = "2020-11-03";
    event["product"] = product;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_start_booking";
Map product = {};
product["hotel_id"] = "P388299";
product["hotel_name"] = "프레이저 플레이스 센트럴 서울";
product["hotel_class"] = "4";
product["hotel_subtype_a"] = "디럭스 투베드";
product["city"] = "Seoul";
product["country"] = "Korea";
product["date_a"] = "2020-11-01";
product["date_b"] = "2020-11-03";
event["product"] = product;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_start_booking",
              hotel_id : "P388299",
              hotel_name : "프레이저 플레이스 센트럴 서울",
              hotel_class : "4",
              hotel_subtype_a : "디럭스 투베드",
              city : "Seoul",
              country : "New Zealand",
              date_a : "2020-11-01",
              date_b : "2020-11-03",
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_start_booking",
    product : {
    hotel_id : "P388299",
    hotel_name : "프레이저 플레이스 센트럴 서울",
    hotel_class : "4",
    hotel_subtype_a : "디럭스 투베드",
    city : "Seoul",
    country : "Korea",
    date_a : "2020-11-01",
    date_b : "2020-11-03"
    }
})); 

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
        event : "w_start_booking",
            product : {
            hotel_id : "P388299",
            hotel_name : "프레이저 플레이스 센트럴 서울",
            hotel_class : "4",
            hotel_subtype_a : "디럭스 투베드",
            city : "Seoul",
            country : "Korea",
            date_a : "2020-11-01",
            date_b : "2020-11-03"
                }
	}  
})); 

```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_start_booking");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("hotel_id", "P388299");
product.Add("hotel_name", "프레이저 플레이스 센트럴 서울");
product.Add("hotel_class", "4");
product.Add("hotel_subtype_a", "디럭스 투베드");
product.Add("city", "Seoul");
product.Add("country", "Korea");
product.Add("date_a", "2020-11-01");
product.Add("date_b", "2020-11-03");
page.Add("product", product);
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 부킹 완료 - 항공권

부킹 완료 화면에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>transaction_id</td><td>AIRINTSCH0100100210</td><td>string</td><td>주문번호</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>결제 통화코드</td></tr><tr><td>date_a</td><td>2020-11-01</td><td>string</td><td>출국 날짜</td></tr><tr><td>airport_a</td><td>ICN</td><td>string</td><td>출국 공항 명칭 또는 코드</td></tr><tr><td>airline_a</td><td>DLH</td><td>string</td><td>출국 항공기 명칭 또는 코드</td></tr><tr><td>airline_class_a</td><td>economy</td><td>string</td><td>출국 항공기 등급</td></tr><tr><td>date_b</td><td>2020-11-20</td><td>string</td><td>귀국 날짜</td></tr><tr><td>airport_b</td><td>BCN</td><td>string</td><td>도착 공항 명칭 또는 코드</td></tr><tr><td>airline_b</td><td>DLH</td><td>string</td><td>귀국 항공기 명칭 또는 코드</td></tr><tr><td>airline_class_b</td><td>economy</td><td>string</td><td>귀국 항공기 등급</td></tr><tr><td>quantity</td><td>1</td><td>integer</td><td>티켓 수량</td></tr><tr><td>revenue</td><td>733500</td><td>double</td><td>유저가 실 결제한 금액</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> purchaseMap = new HashMap<>();
purchaseMap.put("transaction_id", "AIRINTSCH0100100210");
purchaseMap.put("currency", "KRW");
Map<String, Object> productMap1 = new HashMap<>();
productMap1.put("date_a", "2020-11-01");
productMap1.put("airport_a", "ICN");
productMap1.put("airline_a", "DLH");
productMap1.put("airline_class_a", "economy");
productMap1.put("quantity", 1);
productMap1.put("revenue", 733500);
Map<String, Object> productMap2 = new HashMap<>();
productMap2.put("date_b", "2020-11-20");
productMap2.put("airport_b", "BCN");
productMap2.put("airline_b", "DLH");
productMap2.put("airline_class_b", "economy");
productMap2.put("quantity", 1);
productMap2.put("revenue", 733500);
List<Map<String, Object>> productList = new ArrayList<>();
productList.add(productMap1);
productList.add(productMap2);
purchaseMap.put("product", productList);
DOT.logPurchase(purchaseMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val purchaseMap = mutableMapOf<String,Any>()
purchaseMap["transaction_id"] = "AIRINTSCH0100100210"
purchaseMap["currency"] = "KRW"
val productMap1 = mutableMapOf<String,Any>()
productMap1["date_a"] = "2020-11-01"
productMap1["airport_a"] = "ICN"
productMap1["airline_a"] = "DLH"
productMap1["airline_class_a"] = "economy"
productMap1["quantity"] = 1
productMap1["revenue"] = 733500
val productMap2 = mutableMapOf<String,Any>()
productMap2["date_b"] = "2020-11-01"
productMap2["airport_b"] = "ICN"
productMap2["airline_b"] = "DLH"
productMap2["airline_class_b"] = "economy"
productMap2["quantity"] = 1
productMap2["revenue"] = 733500
val productList = ArrayList<Map<String,Any>>()
productList.add(productMap1)
productList.add(productMap2)
purchaseMap["product"] = productList
DOT.logPurchase(purchaseMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let purchase = NSMutableDictionary()
purchase["transaction_id"] = "AIRINTSCH0100100210"
purchase["currency"] = "KRW"
var product1 : [String: Any] = [:]
product1["date_a"] = "2020-11-01"
product1["airport_a"] = "ICN"
product1["airline_a"] = "DLH"
product1["airline_class_a"] = "economy"
product1["quantity"] = 1
product1["revenue"] = 733500
var product2 : [String: Any] = [:]
product2["date_b"] = "2020-11-20"
product2["airport_b"] = "BCN"
product2["airline_b"] = "DLH"
product2["airline_class_b"] = "economy"
product2["quantity"] = 1
product2["revenue"] = 733500
var productArray : [Any] = []
productArray.append(product1)
productArray.append(product2)
purchase["product"] = productArray
DOT.logPurchase(purchase)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *purchase = [[NSMutableDictionary alloc] init];
[purchase setValue:@"AIRINTSCH0100100210" forKey:@"transaction_id"];
[purchase setValue:@"KRW" forKey:@"currency"];
NSMutableDictionary *product2 = [[NSMutableDictionary alloc] init];
[product1 setValue:@"2020-11-01" forKey:@"date_a"];
[product1 setValue:@"ICN" forKey:@"airport_a"];
[product1 setValue:@"DLH" forKey:@"airline_a"];
[product1 setValue:@"economy" forKey:@"airline_class_a"];
[product1 setValue:[NSNumber numberWithInt:1] forKey:@"quantity"]
[product1 setValue:[NSNumber numberWithInt:733500] forKey:@"revenue"]
NSMutableDictionary *product2 = [[NSMutableDictionary alloc] init];
[product2 setValue:@"2020-11-20" forKey:@"date_b"];
[product2 setValue:@"BCN" forKey:@"airport_b"];
[product2 setValue:@"BCN" forKey:@"airline_b"];
[product2 setValue:@"economy" forKey:@"airline_class_b"];
[product2 setValue:[NSNumber numberWithInt:1] forKey:@"quantity"];
[product2 setValue:[NSNumber numberWithInt:733500] forKey:@"revenue"]
NSMutableArray *productArray = [[NSMutableArray alloc] init];
[productArray addObject:product1];
[productArray addObject:product2];
[purchase setValue:productArray forKey:@"product"];
[DOT logPurchase:purchase];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var purchase = new Object();
    purchase["transaction_id"] = "AIRINTSCH0100100210";
    purchase["currency"] = "KRW";
    var product1 = new Object();
    product1["date_a"] = "2020-11-01";
    product1["airport_a"] = "ICN";
    product1["airline_a"] = "DLH";
    product1["airline_class_a"] = "economy";
    product1["quantity"] = 1;
    product1["revenue"] = 733500;
    var product2 = new Object();
    product2["date_b"] = "2020-11-20";
    product2["airport_b"] = "BCN";
    product2["airline_b"] = "DLH";
    product2["airline_class_b"] = "economy";
    product2["quantity"] = 1;
    product2["revenue"] = 733500;
    var productArray = new Array();
    productArray.push(product1);
    productArray.push(product2);
    purchase["product"] = productArray;
    DOT.logPurchase(purchase);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var purchase = new Object();
    purchase["transaction_id"] = "AIRINTSCH0100100210";
    purchase["currency"] = "KRW";
    var product1 = new Object();
    product1["date_a"] = "2020-11-01";
    product1["airport_a"] = "ICN";
    product1["airline_a"] = "DLH";
    product1["airline_class_a"] = "economy";
    product1["quantity"] = 1;
    product1["revenue"] = 733500;
    var product2 = new Object();
    product2["date_b"] = "2020-11-20";
    product2["airport_b"] = "BCN";
    product2["airline_b"] = "DLH";
    product2["airline_class_b"] = "economy";
    product2["quantity"] = 1;
    product2["revenue"] = 733500;
    var productArray = new Array();
    productArray.push(product1);
    productArray.push(product2);
    purchase["product"] = productArray;
    WDOT.logPurchase(purchase);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map purchase = {};
purchase["transaction_id"] = "AIRINTSCH0100100210";
purchase["currency"] = "KRW";
Map product1 = {};
product1["date_a"] = "2020-11-01";
product1["airport_a"] = "ICN";
product1["airline_a"] = "DLH";
product1["airline_class_a"] = "economy";
product1["quantity"] = 1;
product1["revenue"] = 733500;
Map product2 = {};
product2["date_b"] = "2020-11-20";
product2["airport_b"] = "BCN";
product2["airline_b"] = "DLH";
product2["airline_class_b"] = "economy";
product2["quantity"] = 1;
product2["revenue"] = 733500;
var productArray = [];
productArray.add(product1);
productArray.add(product2);
purchase["product"] = productArray;
DOT.logPurchase(purchase);


// webview 에서 호출 할 때
var purchase = new Object();
purchase["transaction_id"] =  "AIRINTSCH0100100210";
purchase["currency"] =  "KRW";

var productArray = new Array();
for( var inx = 0; inx < purchaselist[구매한 항공권 목록].length; inx++){

var purchaseProduct = purchaselist[inx]; 

var product1 = new Object();
product1["date_a"] = "2020-11-01";
product1["airport_a"] = "ICN";
product1["airline_a"] = "DLH";
product1["airline_class_a"] = "economy";
product1["quantity"] = 1;
product1["revenue"] = 733500;
productArray.push(product1); 

var product2 = new Object();
product2["date_b"] = "020-11-20";
product2["airport_b"] = "BCN";
product2["airline_b"] = "DLH";
product2["airline_class_b"] = "economy";
product2["quantity"] = 1;
product2["revenue"] = 733500;
productArray.push(product2); 
}

purchase["product"] = productArray;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logPurchase",
      data: purchase
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logPurchase(JSON.stringify({
    transaction_id : "AIRINTSCH0100100210",
    currency : "KRW",
    product1 : {
    date_a : "2020-11-01",
    airport_a : "ICN",
    airline_a : "DLH",
    airline_class_a : "economy",
    quantity : 1,
    revenue : 733500
    },
    product2 : {
    date_b : "2020-11-20",
    airport_b : "BCN",
    airline_b : "DLH",
    airline_class_b : "economy",
    quantity : 1,
    revenue : 733500
    }
})); 	

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logPurchase",
	data : {
        transaction_id : "AIRINTSCH0100100210",
        currency : "KRW",
        product1 : {
        date_a : "2020-11-01",
        airport_a : "ICN",
        airline_a : "DLH",
        airline_class_a : "economy",
        quantity : 1,
        revenue : 733500
        },
        product2 : {
        date_b : "2020-11-20",
        airport_b : "BCN",
        airline_b : "DLH",
        airline_class_b : "economy",
        quantity : 1,
        revenue : 733500
    	} 
    } 
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> purchase = new Dictionary<string, object>();
purchase.Add("transaction_id", "AIRINTSCH0100100210");
purchase.Add("currency", "KRW");
Dictionary<string, object> product1 = new Dictionary<string, object>();
product1.Add("date_a", "2020-11-01");
product1.Add("airport_a", "ICN");
product1.Add("airline_a", "DLH");
product1.Add("airline_class_a", "economy");
product1.Add("quantity", 1);
product1.Add("revenue", 733500);
Dictionary<string, object> product2 = new Dictionary<string, object>();
product2.Add("date_b", "2020-11-20");
product2.Add("airport_b", "BCN");
product2.Add("airline_b", "DLH");
product2.Add("airline_class_b", "economy");
product2.Add("quantity", 1);
product2.Add("revenue", 733500);
List<Dictionary<string, object>> productList = new List<Dictionary<string, object>>();
productList.Add(product1);
productList.Add(product2);
purchase.Add("product", productList);
DOT.logPurchase(purchase);
```

{% endtab %}
{% endtabs %}

## 부킹 취소

부킹이 취소된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>refund_id</td><td>cf883</td><td>string</td><td>환불 고유번호</td></tr><tr><td>currency</td><td>KRW</td><td>string</td><td>통화코드</td></tr><tr><td>g8</td><td>329900</td><td>float</td><td>취소 수수료</td></tr><tr><td>g9</td><td>1137100</td><td>float</td><td>유저가 환불받은 금액</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_cancel_booking");
eventMap.put("refund_id", "cf883");
eventMap.put("currency", "KRW");
eventMap.put("g8", 329900);
eventMap.put("g9", 1137100);
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_cancel_booking"
eventMap["refund_id"] = "cf883"
eventMap["currency"] = "KRW"
eventMap["g8"] = 329900
eventMap["g9"] = 1137100
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_cancel_booking"
event["refund_id"] = "cf883"
event["currency"] = "KRW"
event["g8"] = 329900
event["g9"] = 1137100
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_cancel_booking" forKey:@"event"];
[event setValue:@"cf883" forKey:@"refund_id"];
[event setValue:@"KRW" forKey:@"currency"];
[event setValue:[NSNumber numberWithInt:329900] forKey:@"g8"];
[event setValue:[NSNumber numberWithInt:1137100] forKey:@"g9"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_cancel_booking";
    event["refund_id"] = "cf883";
    event["currency"] = "KRW";
    event["g8"] = 329900;
    event["g9"] = 1137100;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_cancel_booking";
    event["refund_id"] = "cf883";
    event["currency"] = "KRW";
    event["g8"] = 329900;
    event["g9"] = 1137100;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_cancel_booking";
event["refund_id"] = "cf883";
event["currency"] = "KRW";
event["g8"] = 329900;
event["g9"] = 1137100;
DOT.logEvent(event);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_cancel_booking",
              refund_id : "cf883",
              currency : "KRW",
              g8 : 329900,
              g9 : 1137100
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "refund_id",
    refund_id : "cf883",
    currency : "cf883",
    g8 : 329900,
    g9 : 1137100
})); 

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
        event : "refund_id",
        refund_id : "cf883",
        currency : "cf883",
        g8 : 329900,
        g9 : 1137100
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_refund");
eventDic.Add("refund_id", "cf883");
eventDic.Add("currency", "KRW");
eventDic.Add("g8", 329900);
eventDic.Add("g9", 1137100);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://document.wisetracker.co.kr/v2-developer/in-app-event/event-list/travel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
