(function (w, d, s, l, i, c) { w.biginMakeshopPluginOptions = {}; w.BiginMakeshopDebug = false; var IS_SELECT_OPTION_IFRAME = isAllowIframe(); if (w.location !== w.parent.location && !IS_SELECT_OPTION_IFRAME) { return; } w.BiginMakeshopSDK = { baseApiUrl: (function () { return 'https://' + "www.elenaheim.com" + '/list/open_api.html' })(), getProductApiUrl: function (productId) { return w.BiginMakeshopSDK.baseApiUrl + '?mode=search&type=product&uid=' + productId; }, getProductsApiUrl: function (productIds) { var productIdsParam = ''; productIds.forEach(productId => { productIdsParam += '&uids[]=' + productId; }); return w.BiginMakeshopSDK.baseApiUrl + '?mode=search&type=product&' + productIdsParam; }, getProfileApiUrl: function () { return 'https://' + "www.elenaheim.com" +"/list/API/bigin_userinfo.html"; }, getOrderApiUrl: function (orderId) { return w.BiginMakeshopSDK.baseApiUrl + '?mode=search&type=order&ordernum=' + orderId; }, profile: function (userId) { try { w.BiginMakeshopSDK.sendProfileRequest(userId, function (res) { try { var profile = res; if (profile != null && profile.id) { bigin.user("profile", profile); } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error("Bigin makeshop SDK profile function error >> " + e); } } }, collectProduct: function (makeshopProduct) { try { var productData = {}; if (makeshopProduct.uid) { productData.id = makeshopProduct.uid; } if (makeshopProduct.product_name) { productData.name = makeshopProduct.product_name; } if (makeshopProduct.sellprice) { productData.price = makeshopProduct.sellprice; } if (makeshopProduct.uid && !w.biginMakeshopPluginOptions['k']) { productData.brand = makeshopProduct.brand === null ? makeshopProduct.brandcode : makeshopProduct.brand[0].name; } if (makeshopProduct.cate1 && !w.biginMakeshopPluginOptions['l']) { var productCategories = []; var categoryName = makeshopProduct.category_name; productCategories = categoryName.split('<').map(function (item) { return item.trim(); }); productData.category = productCategories; } if (makeshopProduct.minimage) { var baseUrl = this.baseApiUrl; var tumbnailBaseUrl = baseUrl.replace('/list/open_api.html', ''); productData.thumbnail = [tumbnailBaseUrl + makeshopProduct.minimage]; } return productData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, collectOrder: function (makeshopOrderResponse) { try { var orderData = {}; var makeshopOrder = makeshopOrderResponse.order; var makeshopProducts = makeshopOrderResponse.product; orderData.id = makeshopOrder.ordernum; orderData.revenue = makeshopOrder.pay_price; orderData.shipping = makeshopOrder.deli_price; orderData.tax = makeshopOrder.vat_price; orderData.products = []; Object.keys(makeshopProducts).forEach(function (key) { var item = makeshopProducts[key]; orderData.products.push({ id: item.product_uid, name: item.product_name, price: item.product_price === "0" ? item.option_price : item.product_price, quantity: item.basket_stock, category: w.biginMakeshopPluginOptions['l'] ? null : [item.product_cate1], // TODO 중분류, 소분류 카테고리 실제 API 확인 필요 thumbnail: [item.minimage].filter(Boolean), variant: w.biginMakeshopPluginOptions['m'] ? null : item.option_data // TODO 실제 API 확인 필요 }); }) return orderData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, collectRefund: function (makeshopOrderResponse) { try { var refundData = {}; var makeshopOrder = makeshopOrderResponse.order; var makeshopProducts = makeshopOrderResponse.product; refundData.id = makeshopOrder.ordernum; refundData.revenue = makeshopOrder.price; refundData.products = []; makeshopProducts.forEach(makeshopProduct => { refundData.products.push({ id: makeshopProduct.product_uid, name: makeshopProduct.product_name, price: makeshopProduct.sell_price, quantity: makeshopProduct.basket_stock, category: w.biginMakeshopPluginOptions['l'] ? null : [makeshopProduct.product_cate1], // TODO 중분류, 소분류 카테고리 실제 API 확인 필요 thumbnail: [makeshopProduct.minimage], variant: w.biginMakeshopPluginOptions['m'] ? null : makeshopProduct.option_data // TODO 실제 API 확인 필요 }); }); return refundData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, collectProducts: function (makeshopProducts, cartProducts) { try { var productsData = []; makeshopProducts.forEach(makeshopProduct => { var sdkProduct = w.BiginMakeshopSDK.collectProduct(makeshopProduct); cartProducts.forEach(cartProduct => { if (cartProduct.id === makeshopProduct.uid) { sdkProduct.quantity = cartProduct.productCount; sdkProduct.productOptions = cartProduct.productOptions && cartProduct.productOptions.length > 0 && w.biginMakeshopPluginOptions['m'] ? cartProduct.productOptions.join(',') : null; } }); productsData.push(sdkProduct); }); return productsData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, collectProductsV2: function (makeshopProducts, cartProducts) { try { var productsData = []; makeshopProducts.forEach(makeshopProduct => { cartProducts.forEach(cartProduct => { var sdkProduct = w.BiginMakeshopSDK.collectProduct(makeshopProduct); if (cartProduct.id === makeshopProduct.uid) { sdkProduct.quantity = cartProduct.productCount; sdkProduct.productOptions = cartProduct.productOptions && cartProduct.productOptions.length > 0 ? cartProduct.productOptions : null; } productsData.push(sdkProduct); }); }); return productsData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, collectCheckoutStep1: function (makeshopOrderResponse) { try { var getPaymentOption = function (code) { switch (code) { case 'B' : return '무통장입금'; case 'C' : return '카드결제'; case 'D' : return '휴대폰결제'; case 'Y' : return '우리은행 매매 보호 가상계좌'; case 'V' : return '뱅크타운 계좌이체, PG사 계좌이체'; case 'H' : return '하나은행 에스크로 결제'; case 'M' : return '국민은행 에스크로 결제'; case 'R' : return '적립금으로만 결제'; case 'E' : return '예치금으로만 결제'; case 'J' : return '적립금+예치금으로만 결제'; case 'N' : return '네이버마일리지로만 결제'; case 'S' : return 'PG에스크로'; case 'A' : return '페이팔'; default : return null; } }; var checkoutData = {}; var makeshopPayment = makeshopOrderResponse.payment; var makeshopProducts = makeshopOrderResponse.product; checkoutData.step = '1'; checkoutData.option = getPaymentOption(makeshopPayment.paymethod); checkoutData.products = []; Object.keys(makeshopProducts).forEach(function (key) { var item = makeshopProducts[key]; checkoutData.products.push({ id: item.product_uid, name: item.product_name, price: item.product_price === "0" ? item.option_price : item.product_price, quantity: item.basket_stock, category: w.biginMakeshopPluginOptions['l'] ? null : [item.product_cate1], // TODO 중분류, 소분류 카테고리 실제 API 확인 필요 thumbnail: [item.minimage].filter(Boolean), variant: w.biginMakeshopPluginOptions['m'] ? null : item.option_data // TODO 실제 API 확인 필요 }); }) return checkoutData; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } return null; } }, addToCart: function (uid, options, amount) { try { var addToCartProductIds = []; var cartProducts = []; var makeshopProducts = []; for (var step = 0; step < options.length; step++) { var cartProduct = {id:uid, productOptions: options[step], productCount: amount[step]}; cartProducts.push(cartProduct); } cartProducts.forEach(cartProduct => { addToCartProductIds.push(cartProduct.id); }); var productUrl = w.BiginMakeshopSDK.getProductsApiUrl(addToCartProductIds); w.BiginMakeshopSDK.sendOpenApiRequest(productUrl, function (res) { makeshopProducts = res && res.list && res.list.length > 0 ? res.list : null; if (makeshopProducts) { var sdkProducts = w.BiginMakeshopSDK.collectProductsV2(makeshopProducts, cartProducts); if (sdkProducts && sdkProducts.length > 0) { w.bigin.event("bg:addToCart", { products: sdkProducts }); } } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, checkoutStep0: function (uid, options, amount) { try { var checkoutProductIds = []; var checkoutProducts = []; var makeshopProducts = []; for (var step = 0; step < options.length; step++) { var checkoutProduct = {id:uid, productOptions: options[step], productCount: amount[step]}; checkoutProducts.push(checkoutProduct); } checkoutProducts.forEach(cartProduct => { checkoutProductIds.push(cartProduct.id); }); var productUrl = w.BiginMakeshopSDK.getProductsApiUrl(checkoutProductIds); w.BiginMakeshopSDK.sendOpenApiRequest(productUrl, function (res) { var makeshopProducts = res.list && res.list.length > 0 ? res.list : null; if (makeshopProducts) { var sdkProducts = w.BiginMakeshopSDK.collectProductsV2(makeshopProducts, checkoutProducts); if (sdkProducts && sdkProducts.length > 0) { w.bigin.event("bg:checkout", { step: 0, products: sdkProducts }); } } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, cart: function(cartProducts) { try { if (cartProducts && cartProducts.length > 0) { var cartProductIds = []; cartProducts.forEach(cartProduct => { cartProductIds.push(cartProduct.id); }); var productUrl = w.BiginMakeshopSDK.getProductsApiUrl(cartProductIds); this.sendOpenApiRequest(productUrl, (res) => { var makeshopProducts = res.list; if (makeshopProducts && makeshopProducts.length > 0) { var productsData = w.BiginMakeshopSDK.collectProducts( makeshopProducts, cartProducts); if (productsData && productsData.length > 0) { w.bigin.event("bg:cart", { products: productsData }); } } }); } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, removeCart: function (cartProducts) { try { if (cartProducts && cartProducts.length > 0) { var cartProductIds = []; cartProducts.forEach(cartProduct => { cartProductIds.push(cartProduct.id); }); var productUrl = w.BiginMakeshopSDK.getProductsApiUrl(cartProductIds); this.sendOpenApiRequest(productUrl, (res) => { var makeshopProducts = res.list; if (makeshopProducts && makeshopProducts.length > 0) { var productsData = w.BiginMakeshopSDK.collectProducts( makeshopProducts, cartProducts); if (productsData && productsData.length > 0) { w.bigin.event("bg:removeCart", { products: productsData }); } } }); } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, checkoutCart: function (cartProducts) { try { if (cartProducts && cartProducts.length > 0) { var cartProductIds = []; cartProducts.forEach(cartProduct => { cartProductIds.push(cartProduct.id); }); var productUrl = w.BiginMakeshopSDK.getProductsApiUrl(cartProductIds); this.sendOpenApiRequest(productUrl, (res) => { var makeshopProducts = res.list; if (makeshopProducts && makeshopProducts.length > 0) { var productsData = w.BiginMakeshopSDK.collectProducts( makeshopProducts, cartProducts); if (productsData && productsData.length > 0) { w.bigin.event("bg:checkout", { step: 0, products: productsData }); } } }); } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, sendOpenApiRequest: function (url, callback) { try { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.setRequestHeader('Shopkey', "eb0695a623524cdad11a33bae9115e84"); xhr.setRequestHeader('Licensekey', "OWQ0MzRmZDE1ZjAwMjFiNDM2NTJhMjViZjM1YTUzZjc="); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { var response = xhr.response ? JSON.parse(xhr.response) : null; if(response) { callback(response); } } } xhr.send(null); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }, sendProfileRequest: function (userId, callback) { try { var url = w.BiginMakeshopSDK.getProfileApiUrl(); var data = new FormData(); data.append("store_key", "elenaheim"); data.append("api_key", "92c30d2cca984078288f2588305222bc"); data.append("id", userId); var xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.onreadystatechange = function () { if (xhr.status === XMLHttpRequest.DONE) { var response = xhr.response ? JSON.parse(xhr.response) : null; if(response && response.data) { callback(response.data); } } }; xhr.open("POST", url); xhr.send(data); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } }; function viewProduct() { try { // 상품 페이지 url 판단. // TODO 경우의수 조사 후 추가 필요 if (location.pathname.search('shopdetail.html') < 0 && location.pathname.search('m/product.html') < 0) { return; } /// 데이터 수집 var productId = w.product_uid; var productUrl = w.BiginMakeshopSDK.getProductApiUrl(productId); w.BiginMakeshopSDK.sendOpenApiRequest(productUrl, function (res) { try { var makeshopProduct = res && res.list && res.list.length > 0 ? res.list[0] : null; if (makeshopProduct) { var product = w.BiginMakeshopSDK.collectProduct(makeshopProduct); if (product) { w.bigin.event('bg:viewProduct', product); } } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function refund() { try { var isOrderDetailPage = /orderpop\.html|mypage_type=myordersummary/.test( location.href); if (!isOrderDetailPage) { return; } // TODO 환뷸 페이지 주문번호 수집 경우의 수 추가 var orderNum = document.querySelector('form[name="form1"]') ? document.querySelector( 'form[name="form1"]').ordernum.value : ''; if (!orderNum) { return; } var orderApiUrl = w.BiginMakeshopSDK.getOrderApiUrl(orderNum); // TODO 주문 API call w.BiginMakeshopSDK.sendOpenApiRequest(orderApiUrl, function (res) { var makeshopOrderResponse = res && res.list && res.list.length > 0 ? res.list[0] : null; var refundData = w.BiginMakeshopSDK.collectRefund( makeshopOrderResponse); if (refundData) { w.bigin.event('bg:refund', refundData); } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function purchase() { try { // 주문 완료 url 판단. // TODO 경우의수 조사 후 추가 필요 if (location.pathname.search('orderend.html') < 0 && location.pathname.search('m/order_complete.html') < 0) { return; } var orderNum = getQueryParamValue('ordernum'); var orderUrl = w.BiginMakeshopSDK.getOrderApiUrl(orderNum); w.BiginMakeshopSDK.sendOpenApiRequest(orderUrl, function (res) { try { var makeshopOrderResponse = res.list ? res.list : null; if (makeshopOrderResponse) { var orderData = w.BiginMakeshopSDK.collectOrder( makeshopOrderResponse[Object.keys(makeshopOrderResponse)[0]]); if (orderData) { w.bigin.event('bg:purchase', orderData); } var checkoutStep1Data = BiginMakeshopSDK.collectCheckoutStep1( makeshopOrderResponse[Object.keys(makeshopOrderResponse)[0]]); if (checkoutStep1Data) { w.bigin.event('bg:checkout', checkoutStep1Data); } } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } }); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function getQueryParamValue(key) { try { var foundValue = ''; var queryParamString = location.search ? location.search.substring(1) : null; if (!queryParamString) { return; } var queryParams = queryParamString.split('&'); if (!queryParams || queryParams.length <= 0) { return; } for (var queryParam of queryParams) { var keyAndValue = queryParam.split('='); if (key === keyAndValue[0]) { foundValue = keyAndValue[1]; break; } } return foundValue; } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function fEv() { try { if (w["_b_g_e_b_f"] && w["_b_g_e_b_f"].length > 0) { for (var i = 0; i < w["_b_g_e_b_f"].length; i++) { var ev = w["_b_g_e_b_f"][i] w[l][ev["t"]](ev["a1"], ev["a2"], ev["a3"]) } } } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function isAllowIframe() { try { return !!window.frameElement && /orderpop\.html/.test(location.href); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } function bootstrap() { viewProduct(); purchase(); refund(); } function initBiginSDK() { try { w["_b_g_e_b_f"] = w["_b_g_e_b_f"] ? w["_b_g_e_b_f"] : []; w[l] = w[l] ? w[l] : {}; w[l].user = function (c, d) { w["_b_g_e_b_f"].push({t: "user", a1: c, a2: d}); } w[l].event = function (c, d, t) { w["_b_g_e_b_f"].push( {t: "event", a1: c, a2: d, a3: t ? t : new Date().getTime()}); } w[l].track = function (c, d) { w["_b_g_e_b_f"].push({t: "track", a1: c, a2: d}); } var f = d.getElementsByTagName(s)[0], j = d.createElement(s); j.async = true; j.src = "https:\/\/sdk.bigin.io\/v1\/bigin.sdk.js"; var u = navigator.userAgent.toLowerCase(), h = { projectID: i, currencyCode: c, url: "https:\/\/i.bigin.io", api_url: "https:\/\/server.k8sprd.bigin.io\/api", disableTrigger: IS_SELECT_OPTION_IFRAME, /* 캠페인 노출 여부(iframe일 경우 캠페인이 노출되면 안됨) */ disableTrackEvent: IS_SELECT_OPTION_IFRAME /* 기본추적 이벤트 수집 여부(iframe일 경우 기본 추적 이벤트가 수집될 필요가 없음) */ }; if ((u.indexOf('msie') !== -1) && parseInt(u.split('msie')[1]) < 9) { var r = setInterval(function () { if (w[l] !== undefined) { clearInterval(r); w[l].config(h); fEv(); bootstrap(); } }, 50); } else { j.onload = function () { w[l].config(h); fEv(); bootstrap(); }; } f.parentNode.insertBefore(j, f); } catch (e) { if (w.BiginMakeshopDebug) { console.error(e); } } } initBiginSDK(); })(window, document, 'script', 'bigin', "AWEBLVP5V9-C", "KRW");