(function () { var take = function () { //DDP console.log('Aqur - DDP - MBCC 1') const BASE_URL = "https://pr.aqur.com"; const fetchOptions = { method: "POST", headers: { "Content-Type": "application/json" } }; const chatform = localStorage.getItem("chatform-mbcc"); async function track(trackingData, orderKey, orderValue, status = "") { try { console.log("Aqur - track", trackingData, orderKey, orderValue, status) await fetch(`${BASE_URL}/track`, { ...fetchOptions, body: trackingData }); let chatformData = JSON.parse(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.data.status = status; } await fetch(`${BASE_URL}/pdi/set`, { ...fetchOptions, body: JSON.stringify(data2.data) }); console.log("Aqur - Conversion Tracked!!"); } catch (error) { console.error('Error:', error); } } if (chatform) { if (location.pathname == "/so/checkout/thanks" || location.pathname == "/so/lp/mamababy_dz/thanks") { var completeExe = () => { var completeInterval = setInterval(function () { console.log("Aqur -completeInterval") const isThankPage = [...document.querySelectorAll('.thanks_confirm dt')] .find(el => el.textContent.trim() === 'ご注文番号'); const orderId = isThankPage?.nextElementSibling?.textContent.trim() || null; console.log(orderId); if (isThankPage || orderId) { clearInterval(completeInterval); clearChatformStorage() console.log("Aqur -Thank Page") if (orderId) { track(chatform, "order_id", orderId, "Completed"); let totalPrice = localStorage.getItem("totalPrice") const param = { event: "redirect_thankPage", url: "https://www.kokorokarada.net/orderthanks.html?totalPrice=" + totalPrice }; window.parent.postMessage(param, "*"); setTimeout(() => { window.location.href= "https://www.kokorokarada.net/orderthanks.html?totalPrice=" + totalPrice }, 2000) localStorage.removeItem("totalPrice") } else { console.log("Order id not found!") } } else { console.log("Aqur -order_id not found") } }, 100); } completeExe() } if(location.pathname == "/so/checkout/form") { let isRdirected = localStorage.getItem('redirected-cc-mbcc') if(isRdirected == "true") { // Show loading indicator const loadingDiv = document.createElement('div'); loadingDiv.id = 'aqur-loading'; loadingDiv.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: flex; justify-content: center; align-items: center; z-index: 9999; color: white; font-size: 18px; font-family: Arial, sans-serif; `; loadingDiv.innerHTML = `
処理中です...
`; // Safety check: ensure document.body exists before appending if (document.body) { document.body.appendChild(loadingDiv); } else { // If body doesn't exist yet, wait for DOM to be ready document.addEventListener('DOMContentLoaded', () => { document.body.appendChild(loadingDiv); }); } setTimeout(() => { document.querySelector('#submit_order_form').click() }, 1000) setTimeout(() => { const agreementCheckbox = document.querySelector('[name="cart_order[agreement]"][value="accept"]') if (agreementCheckbox && !agreementCheckbox.checked) { agreementCheckbox.click() } else if (agreementCheckbox && agreementCheckbox.checked) { console.log("Aqur - Agreement checkbox already checked, skipping click") } const submitButton = document.querySelector('[value="申し込む"]'); if (submitButton) { submitButton.scrollIntoView({ behavior: 'smooth', block: 'center' }); submitButton.click() // Hide loading after form submission setTimeout(() => { const loading = document.getElementById('aqur-loading'); if (loading) { loading.remove(); } }, 5000); } else { console.log("Aqur - Submit button not found for scrolling"); // Hide loading if submit button not found const loading = document.getElementById('aqur-loading'); if (loading) { loading.remove(); } } }, 1500) } } } else { console.log("Aqur - No Chatform") } function clearChatformStorage() { localStorage.removeItem("chatform-mbcc"); localStorage.removeItem("redirected-cc-mbcc"); } async function errorCheck() { const errorContents = document.querySelectorAll('.alert-danger') if (errorContents.length > 0) { let errorText = []; // Check all alert-danger elements errorContents.forEach(errorElement => { if (errorElement && errorElement.innerText && errorElement.innerText.length > 0) { errorText.push(errorElement.innerText); } }); if (errorText.length > 0) { console.log("Aqur - errorText Check => ", errorText) const param = { event: "chatform_bindFormErrorFound", text: errorText.join(','), }; window.parent.postMessage(param, '*'); } // Clear error messages from DOM errorContents.forEach(errorElement => { if (errorElement) { errorElement.textContent = ''; } }); return errorText.length } } window.addEventListener("message", async (event) => { if (event.data.event == "setLastName") { window.aqur.fillInput('input[name="shipping_address[family_name]"]', event.data.value) } if (event.data.event == "setFirstName") { window.aqur.fillInput('input[name="shipping_address[first_name]"]', event.data.value) } if (event.data.event == "setLastNameKana") { window.aqur.fillInput('input[name="shipping_address[family_name_kana]"]', event.data.value) } if (event.data.event == "setFirstNameKana") { window.aqur.fillInput('input[name="shipping_address[first_name_kana]"]', event.data.value) } if (event.data.event == "setTel") { var value = event.data.value.replaceAll(/-/g, ''); window.aqur.fillInput('input[name="shipping_address[tel]"]', value) } if (event.data.event == "setPostalCode") { var value = event.data.value.replaceAll(/-/g, ''); window.aqur.fillInput('input[name="shipping_address[zip]"]', value) } if (event.data.event == "setPref") { window.aqur.chooseSelectBoxLabel('select[name="shipping_address[pref]"]', event.data.value) } if (event.data.event == "setCity") { window.aqur.fillInput('input[name="shipping_address[city]"]', event.data.value) } if (event.data.event == "setStreet") { window.aqur.fillInput('input[name="shipping_address[address]"]', event.data.value) } if (event.data.event == "setBuilding") { window.aqur.fillInput('input[name="shipping_address[building]"]', event.data.value) } if (event.data.event == "setGender") { window.aqur.chooseRadioButton('[name="user[sex]"]', event.data.value == "1" ? "male" : "female") } if (event.data.event == "setBirthdayYear") { window.aqur.chooseSelectBox('select[name="user[birthday(1i)]"]', event.data.value) } if (event.data.event == "setBirthdayMonth") { window.aqur.chooseSelectBox('select[name="user[birthday(2i)]"]', event.data.value) } if (event.data.event == "setBirthdayDay") { window.aqur.chooseSelectBox('select[name="user[birthday(3i)]"]', event.data.value) } if (event.data.event == "setEmail") { window.useUserEmail = true; window.aqur.fillInput('input[name="user[email]"]', event.data.value) window.aqur.fillInput('input[name="user[email_confirmation]"]', event.data.value) } if (event.data.event == "setPassword") { window.aqur.fillInput('input[name="user[password]"]', event.data.value) window.aqur.fillInput('input[name="user[password_confirmation]"]', event.data.value) } if (event.data.event == "setPaymentMethod") { if (event.data.value == "58") { // NP(後払い) document.querySelector('#payment_method_id3').click() } else if (event.data.value == "21") { // クレジットカード document.querySelector('#payment_method_id2').click() } } if (event.data.event == "setCardNumber") { window.aqur.fillInputKeyBoard('input[name="create_card_service[card_number]"]', event.data.value) } if (event.data.event == "setCardExpirationYear") { window.aqur.chooseSelectBox('select[name="create_card_service[card_expire_yy]"]', "20" + event.data.value) } if (event.data.event == "setCardExpirationMonth") { window.aqur.chooseSelectBox('select[name="create_card_service[card_expire_mm]"]', event.data.value) } if (event.data.event == "setCardHolderName") { window.aqur.fillInputKeyBoard('input[name="create_card_service[card_name]"]', event.data.value) } if (event.data.event == "setCardCvc") { window.aqur.fillInputKeyBoard('input[name="create_card_service[security_code]"]', event.data.value) } //フロント商品購入確定ボタン押下 if (event.data.event == "chatform_bindFormSubmit") { document.querySelector('body').click() console.log("Aqur - chatform_bindFormSubmit") const submitButton = document.querySelector('#submit_order_form') 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, 4000)); let hasError = await errorCheck() if (!hasError) { if (event.data.isCredit) { localStorage.setItem("redirected-cc-mbcc", "true") window.parent.location.href = window.location.href } else { const comfirmSbmitButton = document.querySelector('[value="申し込む"]') if (comfirmSbmitButton) { // Check if agreement checkbox is checked, if not then click it const agreementCheckbox = document.querySelector('[name="cart_order[agreement]"][value="accept"]') if (agreementCheckbox && !agreementCheckbox.checked) { agreementCheckbox.click() } else if (agreementCheckbox && agreementCheckbox.checked) { console.log("Aqur - Agreement checkbox already checked, skipping click") } comfirmSbmitButton.click(); } } await new Promise(resolve => setTimeout(resolve, 2000)); await errorCheck() } } else { console.error('Element with ID "submit_order_form" 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.fillInputKeyBoard = async (selector, value) => { const inputElement = document.querySelector(selector); if (!inputElement) { console.log("Aqur - Input element not found:", selector); return; } // Clear existing value inputElement.value = ''; inputElement.dispatchEvent(new Event('input', { bubbles: true })); // Set the value directly inputElement.value = value; inputElement.dispatchEvent(new Event('input', { bubbles: true })); // Simulate keyboard events for each character (no delays, no focus changes) for (let i = 0; i < value.length; i++) { const char = value[i]; const keyCode = char.charCodeAt(0); // Simulate keydown inputElement.dispatchEvent(new KeyboardEvent('keydown', { key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode, charCode: keyCode, bubbles: true, cancelable: true })); // Simulate keypress inputElement.dispatchEvent(new KeyboardEvent('keypress', { key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode, charCode: keyCode, bubbles: true, cancelable: true })); // Simulate input event inputElement.dispatchEvent(new InputEvent('input', { data: char, inputType: 'insertText', bubbles: true, cancelable: true })); // Simulate keyup inputElement.dispatchEvent(new KeyboardEvent('keyup', { key: char, code: `Key${char.toUpperCase()}`, keyCode: keyCode, which: keyCode, charCode: keyCode, bubbles: true, cancelable: true })); } // Trigger final events inputElement.dispatchEvent(new Event('change', { bubbles: true })); }; 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); }())