(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);
}())