(function () { var take = function () { //DDP console.log('DDP - kuwakate') const BASE_URL = "https://pr.aqur.com"; const fetchOptions = { method: "POST", headers: { "Content-Type": "application/json" } }; // URLパラメータからtrackKeyを取得、なければ"aqur-banaba"をデフォルトとしてフォールバック const urlParams = new URLSearchParams(window.location.search); const trackKey = urlParams.get('trackKey') || "aqur-kuwakate"; const aqur_chatform = localStorage.getItem("chatform") || localStorage.getItem(trackKey); let chatformData = null; try { chatformData = aqur_chatform ? JSON.parse(aqur_chatform) : null; } catch (e) { chatformData = null; } async function track(trackingData, orderKey, orderValue, status = "") { try { console.log("track", trackingData, orderKey, orderValue, status) await fetch(`${BASE_URL}/track`, { ...fetchOptions, body: trackingData }); let chatformData = JSON.parse(aqur_chatform); const response2 = await fetch(`${BASE_URL}/pdi/${chatformData.uuId}`); const data2 = await response2.json(); data2.data.data = { ...data2.data.data, [orderKey]: orderValue }; data2.data.Completed = true; if (status) { data2.status = status; } await fetch(`${BASE_URL}/pdi/set`, { ...fetchOptions, body: JSON.stringify(data2.data) }); console.log("Conversion Tracked!!"); } catch (error) { console.error('Error:', error); } } // CATS CV tracking tag function fireCatsConversionTag(orderId) { var gid = 2; var sid = ""; var uid1 = orderId || ""; var uid2 = ""; var uid3 = ""; var uid4 = ""; var uid5 = ""; var uid6 = ""; var uid7 = ""; var uid8 = ""; var catsPoint = "1"; var amount = ""; var uqid = "d8ae7f6eabed6492"; var trackingUserId = ""; var firstCookie = document.cookie; var catsOptions = { line: { deduplicationKey: "" }, googleAdsClick: { order_id: "" } }; var a = document.createElement("script"); a.src = "//ac.kampo-media.com/ac/d8ae7f6eabed6492/action.js"; a.id = "ac_d8ae7f6eabed6492"; a.addEventListener("load", function() { CATS_GroupAction(gid, sid, uid1, uid2, uqid, uid3, uid4, uid5, uid6, uid7, uid8, catsPoint, amount, trackingUserId, firstCookie, catsOptions); }); document.body.appendChild(a); console.log("CATS CV Tag fired for orderId:", orderId); } // SmartNews Ads: CV時 Purchase(CW依頼 pixel id) // 許可リスト方式:指定LPからのCVのみ発火し、それ以外では発火しない // (window.top.location.href で LP URL を判定。vframe は wakan.shop 同一オリジン) var SMARTNEWS_ADS_PURCHASE_ALLOW_MARKERS = [ "af_die_01-q-1.html", "af_die_25.html" ]; var SMARTNEWS_ADS_PURCHASE_PIXEL_ID = "8032aad5247423a3e96f658e"; function isSmartnewsPurchaseAllowedForKuwakateLp() { var parts = []; try { if (window.location && window.location.href) { parts.push(window.location.href); } } catch (e1) {} try { if (typeof document !== "undefined" && document.referrer) { parts.push(document.referrer); } } catch (e2) {} try { if (window.parent && window.parent !== window && window.parent.location && window.parent.location.href) { parts.push(window.parent.location.href); } } catch (e3) {} try { if (window.top && window.top !== window && window.top.location && window.top.location.href) { parts.push(window.top.location.href); } } catch (e4) {} var haystack = parts.join(" "); for (var i = 0; i < SMARTNEWS_ADS_PURCHASE_ALLOW_MARKERS.length; i++) { if (haystack.indexOf(SMARTNEWS_ADS_PURCHASE_ALLOW_MARKERS[i]) !== -1) { return true; } } return false; } function ensureSmartnewsAdsStub() { if (window.SmartnewsAds && typeof window.SmartnewsAds.p === "function") { return; } window.SmartnewsAds = window.SmartnewsAds || {}; var e = window.SmartnewsAds.p = function () { e.callMethod ? e.callMethod.apply(e, arguments) : e.queue.push(arguments); }; e.push = e; e.version = "1.0.1"; e.queue = []; var n = document.createElement("script"); n.async = true; n.src = "https://cdn.smartnews-ads.com/i/pixel.js"; var s = document.getElementsByTagName("script")[0]; if (s && s.parentNode) { s.parentNode.insertBefore(n, s); } else { document.head.appendChild(n); } } function fireSmartnewsAdsPurchaseKuwakate() { try { if (!isSmartnewsPurchaseAllowedForKuwakateLp()) { console.log("[SmartNews Ads] Purchase skipped (LP not in allow list)"); return; } ensureSmartnewsAdsStub(); if (window.SmartnewsAds && typeof window.SmartnewsAds.p === "function") { window.SmartnewsAds.p(SMARTNEWS_ADS_PURCHASE_PIXEL_ID, "Purchase"); console.log("[SmartNews Ads] Purchase fired:", SMARTNEWS_ADS_PURCHASE_PIXEL_ID); } var img = document.createElement("img"); img.setAttribute("height", "1"); img.setAttribute("width", "1"); img.style.display = "none"; img.setAttribute("alt", ""); img.src = "https://i.smartnews-ads.com/p?id=" + encodeURIComponent(SMARTNEWS_ADS_PURCHASE_PIXEL_ID) + "&e=Purchase"; document.body.appendChild(img); } catch (err) { console.error("[SmartNews Ads] Purchase error:", err); } } if (chatformData && chatformData.pid == "kuwakate") { const checkUpsellInterval = setInterval(() => { let isUpsell = localStorage.getItem('upsell_submit'); let isUpsellThankPage = Array.from(document.querySelectorAll("b")) .find(el => el.textContent.trim().includes("ご注文ありがとうございました。")); if (isUpsell == "true" && isUpsellThankPage) { const orderId = new URLSearchParams(window.location.search).get('orderId'); console.log('Upsell Thank Page') if (orderId) { let param6 = { event: "chatform_bindUpsellConversion", order_id: orderId } window.parent.postMessage(param6, "*") let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 4 } window.parent.postMessage(param, "*") fireSmartnewsAdsPurchaseKuwakate(); localStorage.removeItem("upsell_submit"); localStorage.removeItem("chatform") localStorage.removeItem(trackKey) track(aqur_chatform, "order_id_Upsell", orderId, "Upsell_Completed") clearInterval(checkUpsellInterval); } } }, 3000); errorCheckKUWAKATE() // if (location.pathname == "/auth/thanks/" || location.pathname == "/auth/sp/thanks/") { var completeExe = () => { var completeInterval = setInterval(function () { console.log("completeInterval") let isThankPage = Array.from(document.querySelectorAll("b")) .find(el => el.textContent.trim().includes("ご注文ありがとうございました。")); const orderId = new URLSearchParams(window.location.search).get('orderId'); if (isThankPage || orderId) { clearInterval(completeInterval); let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 4 } window.parent.postMessage(param, "*") let isUpsell = localStorage.getItem('upsell_submit'); if (isUpsell == "true") { console.log('Upsell Thank Page') if (orderId) { let param6 = { event: "chatform_bindUpsellConversion", order_id: orderId } window.parent.postMessage(param6, "*") let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 4 } window.parent.postMessage(param, "*") fireSmartnewsAdsPurchaseKuwakate(); localStorage.removeItem("upsell_submit"); localStorage.removeItem("chatform") localStorage.removeItem(trackKey) track(aqur_chatform, "order_id_Upsell", orderId, "Upsell_Completed") } else { let param6 = { event: "chatform_bindUpsellConversion", order_id: "ご注文いただきましてありがとうございました。" } window.parent.postMessage(param6, "*") let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 4 } window.parent.postMessage(param, "*") track(aqur_chatform) } } else { console.log("Thank Page") if (orderId) { let param2 = { event: "chatform_bindFormConversion", order_id: orderId } window.parent.postMessage(param2, "*") track(aqur_chatform, "order_id", orderId); // CATS CV tag発火 fireCatsConversionTag(orderId); fireSmartnewsAdsPurchaseKuwakate(); // Yahoo広告 コンバージョンタグ発火(初回CV) if (typeof ytag === "function") { ytag({ "type": "yjad_conversion", "config": { "yahoo_ydn_conv_io": "uZ193UezhviBDoH2pAVkyQ..", "yahoo_ydn_conv_label": "Z6D5AUEFE4HE4AJ64HB860426", "yahoo_ydn_conv_transaction_id": "", "yahoo_ydn_conv_value": "0" } }); } else { console.warn("ytag is not defined. Yahoo conversion tag not fired."); } } } } else { console.log("order_id not found") } }, 100); } completeExe() } } else { console.log("No Chatform") } async function errorCheckKUWAKATE() { console.log("ERRROR CHECK !!!") await new Promise(resolve => setTimeout(resolve, 2000)); const errorContents = document.querySelectorAll('.compo-form-message--error'); // added const errorContents2 = document.querySelectorAll('.compo-form-message--error p'); const errorContents3 = document.querySelectorAll('.error-reason'); if (errorContents.length > 0 || errorContents2.length > 0 || errorContents3.length > 0) { let errorText = []; // LP if (errorContents.length > 0) { errorText.push( ...Array.from(errorContents) .map(el => el.textContent.trim()) .filter(msg => msg !== '') ); } // Credit Card Error Page if (errorContents2.length > 0) { errorText.push( ...Array.from(errorContents2) .map(el => el.textContent.trim()) .filter(msg => msg !== '') ); } if (errorContents3.length > 0) { errorText.push( ...Array.from(errorContents3) .map(el => el.textContent.trim()) .filter(msg => msg !== '') ); } if (errorText.length > 0) { console.log("errorText Check => ", errorText) const param = { event: "chatform_bindFormErrorFound", text: errorText.join(',') + ',\nお問い合わせは下記番号までお電話ください。\n0120-829-574(受付時間:平日10時〜17時)', }; window.parent.postMessage(param, '*'); } if (errorContents2.length > 0) { document.querySelector('#ctl00_ContentPlaceHolder1_aGoBack').click(); } // Clear error messages from DOM [...errorContents, ...errorContents3].forEach(el => { el.textContent = ''; }); setTimeout(() => { window.parent.postMessage({ event: "tryReset" }, "*"); }, 2000); } } window.addEventListener("message", async (event) => { //console.log("window message") //aqurBindidng if (event.data.event == "setLastName") { window.aqur.fillInput('input[name="last_name"]', event.data.value) } if (event.data.event == "setFirstName") { window.aqur.fillInput('input[name="first_name"]', event.data.value) } if (event.data.event == "setLastNameKana") { window.aqur.fillInput('input[name="last_kana"]', event.data.value) } if (event.data.event == "setFirstNameKana") { window.aqur.fillInput('input[name="first_kana"]', event.data.value) } if (event.data.event == "setTel") { var value = event.data.value.replaceAll(/-/g, ''); // Check if the phone number is mobile function classifyJapanesePhone(phoneNumber) { // ハイフンやスペースを除去 const normalized = phoneNumber.replace(/[-\s]/g, ''); // 携帯電話: 070 / 080 / 090 / 060 で始まり、11桁 if (/^(070|080|090|060)\d{8}$/.test(normalized)) { return "mobile"; } // 固定電話: 0から始まり 10桁 (地域番号 + 市内局番 + 加入者番号) // 例: 03xxxx xxxx, 06xxxx xxxx, 052xxx xxxx など if (/^0\d{9}$/.test(normalized)) { return "home"; } return "invalid"; // どちらにも当てはまらない } const phoneType = classifyJapanesePhone(value); const isMobile = phoneType === "mobile"; window.aqur.fillInput('input[name="tel"]', value) // Fill password with last 8 digits of telephone number var passwordValue = value.slice(-8); window.aqur.fillInput('input[name="password"]', passwordValue) if (isMobile) { window.aqur.fillInput('input[name="email"]', 'dummy' + value + "@wakan.shop") } } if (event.data.event == "setPostalCode") { var value = event.data.value.replaceAll(/-/g, ''); window.aqur.fillInput('input[name="zipcode"]', value) } if (event.data.event == "setPref") { window.aqur.chooseSelectBoxLabel('select[name="pref"]', event.data.value) } if (event.data.event == "setCity") { window.aqur.fillInput('input[name="order_address1"]', event.data.value) } if (event.data.event == "setStreet") { const currentValue = document.querySelector('input[name="order_address2"]').value; const buildingValue = currentValue.split(' ')[1] || ''; window.aqur.fillInput('input[name="order_address2"]', `${event.data.value} ${buildingValue}`.trim()) } if (event.data.event == "setBuilding") { const currentValue = document.querySelector('input[name="order_address2"]').value; const streetValue = currentValue.split(' ')[0] || ''; window.aqur.fillInput('input[name="order_address2"]', `${streetValue} ${event.data.value}`.trim()) } if (event.data.event == "setGender") { window.aqur.chooseRadioButton('[name="sex"]', event.data.value) } if (event.data.event == "setBirthdayYear") { window.aqur.chooseSelectBox('select[name="birthday_yyyy"]', event.data.value) } if (event.data.event == "setBirthdayMonth") { window.aqur.chooseSelectBox('select[name="birthday_mm"]', event.data.value) } if (event.data.event == "setBirthdayDay") { window.aqur.chooseSelectBox('select[name="birthday_dd"]', event.data.value) } if (event.data.event == "setEmail") { window.useUserEmail = true; window.aqur.fillInput('input[name="email"]', event.data.value) } if (event.data.event == "setPassword") { // window.aqur.fillInput('input[name="password"]', event.data.value) } if (event.data.event == "setPaymentMethod") { let paymentValue = event.data.value == "K10" ? "5" : event.data.value == "K32" ? "30" : "" if (paymentValue) { window.aqur.chooseRadioButton('input[name="payment_method"]', paymentValue) window.aqur.PaymentMethod = event.data.value; } else { console.error('PaymentMethod not found.'); } } if (event.data.event == "setCardNumber") { window.aqur.fillInput('input[name="cardnumber"]', event.data.value) } if (event.data.event == "setCardExpirationYear") { window.aqur.chooseSelectBox('select[name="expyy"]', event.data.value) } if (event.data.event == "setCardExpirationMonth") { window.aqur.chooseSelectBox('select[name="expmm"]', event.data.value > 9 ? event.data.value : `0${event.data.value}`) } if (event.data.event == "setCardHolderName") { // window.aqur.fillInput('input[name=""]', event.data.value) } //フロント商品購入確定ボタン押下 if (event.data.event == "chatform_bindFormSubmit_KUWAKATE") { const submitButton = Array.from(document.querySelectorAll('.set-align-c .btn-cart-decision')) .find(el => el.textContent.trim() === '利用規約に同意して次へ') if (submitButton !== null) { submitButton.click(); let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 1 } window.parent.postMessage(param, "*") await new Promise(resolve => setTimeout(resolve, 5000)); var submitInterval = setInterval(function () { //console.log("try clicking confirm") const submitButton = Array.from(document.querySelectorAll('.btn-cart-decision')) .find(el => el.textContent.trim() === '注文を確定する') if (submitButton) { // console.log("submitButton clicked") clearInterval(submitInterval); submitButton.click(); let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 2 } window.parent.postMessage(param, "*") } }, 1000); await new Promise(resolve => setTimeout(resolve, 2000)); errorCheckKUWAKATE() } else { console.error('Element with ID ".__send" not found.'); } errorCheckKUWAKATE() } //アップセル変更ボタン押下 if (event.data.event == "chatform_bindFormUpsellComplete") { console.log("chatform_bindFormUpsellComplete") const UpsellButton = document.querySelector('.request-offer input[type="image"]'); localStorage.setItem("upsell_submit", "true"); if (UpsellButton !== null) { let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 1 } window.parent.postMessage(param, "*") UpsellButton.click(); await new Promise(resolve => setTimeout(resolve, 3000)); if (document.querySelector('.btn-cart-decision')) { // SP setTimeout(function () { var submitInterval = setInterval(function () { //console.log("try clicking confirm") const submitButton = Array.from(document.querySelectorAll('.btn-cart-decision')) .find(el => el.textContent.trim() === '注文を確定する') if (submitButton) { console.log("submitButton clicked") clearInterval(submitInterval); submitButton.click(); } }, 100); }, 3000); } await new Promise(resolve => setTimeout(resolve, 2000)); errorCheckKUWAKATE() // btn-cart-decision } else { console.error('UpsellButton not found.'); } } //クロスセル変更ボタン押下 if (event.data.event == "chatform_bindFormxsellComplete") { //console.log("chatform_bindFormxsellComplete") document.querySelector('#isOptin1').checked = true; const XsellButton = document.querySelector('#memberSaveButton_disp'); if (XsellButton !== null) { let param = { event: "chatform_page_transition", totalProcess: 4, pageIndex: 1 } window.parent.postMessage(param, "*") XsellButton.click(); } else { console.error('Element with ID ".__send" not found.'); } } }) setTimeout(() => { if (!window.aqur) { window.aqur = {}; } window.aqur.fillInput = (selector, value) => { const inputElement = document.querySelector(selector); if (inputElement) { inputElement.value = value; var event = new Event('input', { bubbles: true, cancelable: true }); inputElement.dispatchEvent(event); inputElement.scrollIntoView(); } }; window.aqur.chooseRadioButton = (radioSelector, value) => { const radioButton = document.querySelector(`${radioSelector}[value='${value}']`); if (radioButton) { radioButton.checked = true; let event = new Event('change', { bubbles: true, composed: true }) radioButton.dispatchEvent(event); } }; window.aqur.chooseSelectBox = (selectBoxSelector, value, useOptionVal = true) => { let option = "" if (useOptionVal) { option = document.querySelector(`${selectBoxSelector} option[value='${value}']`); } else { option = document.querySelector(`${selectBoxSelector} option[label='${value}']`); } const selectElement = document.querySelector(`${selectBoxSelector}`); if (option && selectElement) { option.selected = true; const event = new Event('change', { bubbles: true, composed: true }) selectElement.dispatchEvent(event); } }; window.aqur.chooseSelectBoxLabel = (selectBoxSelector, label) => { const selectElement = document.querySelector(selectBoxSelector); var option; if (selectElement) { option = Array.from(selectElement.options).find( opt => opt.textContent.trim() === label ); } if (option) { option.selected = true; const event = new Event('change', { bubbles: true, composed: true }); selectElement.dispatchEvent(event); } }; }, 1000); } setTimeout(take, 0); }())