Limited-Time Welfare Project 📣MeWaii® 8inch Mushroom Strawberry Cow Stuffed Animal Kawaii Plush Pillow Squish Toy Flash Sale
${function() {
const variantData = data.variant || {"id":"c1d04979-cb00-4ddc-b674-873411e713f5","product_id":"2f6b2569-fca2-4a86-8abe-04c1170034a3","title":"Berry\/Cow-8inch\/21cm","weight_unit":"kg","inventory_quantity":363,"sku":"MEPI000MUS0331F1-S01-A","barcode":"","position":1,"option1":"Berry\/Cow","option2":"8inch\/21cm","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/3dbda4b2c7049865ea6fb2519cb020da.jpeg","path":"3dbda4b2c7049865ea6fb2519cb020da.jpeg","width":800,"height":800,"alt":"","aspect_ratio":1},"wholesale_price":[{"price":0,"min_quantity":1}],"weight":"0","compare_at_price":"19.99","price":"0.00","retail_price":"19.99","available":true,"url":"\/products\/mewaii-mushroom-family-stuffed-animal-kawaii-plush-pillow-squish-toy-93r5?variant=c1d04979-cb00-4ddc-b674-873411e713f5","available_quantity":363,"options":[{"name":"Style","value":"Berry\/Cow"},{"name":"Size","value":"8inch\/21cm"}],"off_ratio":"100","flashsale_info":{"variant_id":"c1d04979-cb00-4ddc-b674-873411e713f5","product_id":"","quantity":0,"discount_id":"cbcdd830-d4e6-4011-9b06-d3eadc149a43","limit_time":-1,"limit_buy":1,"user_limit_buy":1,"discount_sales":249,"discount_sales_rate":"41","discount_stock":363,"ends_at":-1,"starts_at":1743055972,"allow_oversold":"check_part","allocation_method":"all","price":"0.00","compare_at_price":"19.99","discount_price":"0.00","customary_saved_price":"19.99","customary_off_ratio":"100","discount_saved_price":"19.99","discount_off_ratio":"100","use_before_price":false,"before_price":"0","title":"","properties":"","color_setting_promotional_copy":"Rescue Active","discount_quantity":0,"is_need_split":false},"sales":1174};
const saveType = "percentage";
const productLabelDiscountOn = true;
return `
-
${saveType == 'percentage'
? `-${variantData.off_ratio}%`
: `-`
}
`;
}()}
people are viewing this right now
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
Product was out of stock.
Product is unavailable.
(function () {
try {
const getProduct = () => {
const productJson = document.querySelector('#product-json');
if (productJson?.textContent) {
return JSON.parse(productJson.textContent);
}
if (window.jQuery) {
const $product = window.jQuery?.(document)?.data('djproduct');
const productData = JSON.parse(JSON.stringify($product || {}));
return productData || {};
}
return {};
};
const blockDomId = 'pm-block-afterpay-message-1539149753700-10'
const placeholderDomId = 'pm-block-afterpay-message-placeholder-1539149753700-10'
const badgeTheme = "black-on-mint";
const size = "sm";
const shopCurrencyCode = "USD";
const productDetail = getProduct();
let productPrice = productDetail?.selected?.price || 0.00;
let settingConfig;
const req = {
ROOT_URL: (C_SETTINGS && C_SETTINGS.routes && C_SETTINGS.routes.root) || '',
post: async (url, data = {}) => {
try {
const response = await fetch(req.ROOT_URL + url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
...data,
body: JSON.stringify(data.body),
});
const result = await response.json();
return result
} catch (error) {
throw new Error('post request error' + error);
}
},
get: async (url, data = {}) => {
try {
const response = await fetch(req.ROOT_URL + url);
const result = await response.json();
return result
} catch (error) {
throw new Error('get request error' + error);
}
}
}
const supportLocaleMap = {
AU: 'en-AU',
NZ: 'en-NZ',
US: 'en-US',
CA: 'en-CA',
GB: 'en-GB',
FR: 'fr-FR',
IT: 'it-IT',
ES: 'es-ES',
DE: 'de-DE',
}
const getPayLaterSetting = () => {
return req.post('/api/payment/pay-later-setting', {body: {payment_channel: 'afterpay'}}).then(res => {
const result = {
...res,
afterpay_currency_locale: supportLocaleMap?.[res?.afterpay_support_country?.[0]] || supportLocaleMap?.US || 'en-US'
}
return result;
});
}
const getBlockDom = () => {
const blockDOM = document.getElementById(blockDomId);
if (!blockDOM) {
return;
}
return blockDOM
}
function errorHandler() {
const blockDOM = getBlockDom();
if (blockDOM) {
blockDOM.style.display = 'none';
}
}
function hasAfterpayMessage() {
// 获取目标元素
const targetElement = document.getElementById(placeholderDomId);
// 判断目标元素是否有兄弟元素节点
const siblings = Array.from(targetElement.parentNode.children).filter(function (node) {
return node.nodeType === Node.ELEMENT_NODE;
});
return siblings.length > 1
}
function renderAfterpay(data = {}) {
const blockDOM = getBlockDom();
if (!blockDOM) {
return;
}
blockDOM.innerHTML = null;
const placeholderDOM = document.createElement('div');
placeholderDOM.id = placeholderDomId;
placeholderDOM.className = 'pm-display-none'
blockDOM.appendChild(placeholderDOM);
blockDOM.style.display = 'block';
if (window.Afterpay && typeof Afterpay?.createPlacements === 'function' && !hasAfterpayMessage()) {
try {
Afterpay.createPlacements({
targetSelector: `#${placeholderDomId}`,
attributes: {
locale: data.afterpay_currency_locale,
currency: data.afterpay_currency,
amount: data.productPrice,
size: size,
badgeTheme: badgeTheme,
}
});
} catch (e) {
console.error('payment-sdk:', e);
}
}
}
async function init(data = {}) {
const blockDOM = getBlockDom();
if (!blockDOM) {
return;
}
if (!settingConfig) {
settingConfig = await getPayLaterSetting();
}
if(data?.detail?.selected?.price){
productPrice = data?.detail?.selected?.price;
}
if (
!settingConfig ||
!settingConfig.afterpay_promo_msg_enabled ||
!settingConfig.afterpay_max_amount ||
!settingConfig.afterpay_min_amount ||
!settingConfig.afterpay_support_country ||
shopCurrencyCode !== settingConfig.afterpay_currency ||
Number(productPrice) <= Number(settingConfig.afterpay_min_amount) ||
Number(productPrice) > Number(settingConfig.afterpay_max_amount)
) {
errorHandler();
return;
}
const scriptDOM = document.getElementById('pm-afterpay-sdk');
if (!scriptDOM) {
window.addEventListener('Afterpay.ready', () => renderAfterpay({
...settingConfig,
productPrice
}));
const afterpaySDK = document.createElement('script');
afterpaySDK.id = 'pm-afterpay-sdk'
afterpaySDK.src = 'https://js.afterpay.com/afterpay-1.x.js';
afterpaySDK.setAttribute('data-analytics-enabled', '');
afterpaySDK.setAttribute('data-min', settingConfig.afterpay_min_amount);
afterpaySDK.setAttribute('data-max', settingConfig.afterpay_max_amount);
afterpaySDK.async = true;
afterpaySDK.onerror = errorHandler;
document.body.appendChild(afterpaySDK);
} else {
renderAfterpay({...settingConfig, productPrice});
}
}
document.addEventListener('dj.variantChange', init);
init();
} catch (e) {
console.error('payment-sdk-afterpaymessage:', e)
}
})()