๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain
๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain

๐Ÿ†โœ…๐๐‡๐’-๐€๐๐๐‘๐Ž๐•๐„๐ƒ - ๐€๐ง๐ง๐ข๐ž๐‚๐š๐ซ๐ž® ๐ƒ๐ข๐š๐‹๐ž๐  ๐‚๐š๐ซ๐ž ๐๐ก๐ฒ๐ญ๐จ ๐‚๐ซ๐ž๐š๐ฆ - Helps Treat Varicose Veins, Swelling, Cramps, and Leg Pain

๐ŸŒŽWorldwide Deliveryโญโญโญโญโญ4.9 (1837 Reviews)
โœ…30-day money back guarantee
๐Ÿ’ฐReturnable within 30 days of receipt of shipment
๐Ÿ†—Filed with the FDA & EU Certification
โญPackage|Better Offerโญ-โœจBestseller Comboโœจ- 2 jars๐Ÿ”ฅ
Please select a โญpackage|better offerโญ
$35.99
$91.99
-$56.00
Quantity
const getPluginI18nMessages = (message, replaceObj = {}) => { const lang = document.documentElement.lang || "en-US"; const [form, key] = message.split('.') let text = window.payment_plugin_message['en-US'][form][key]; if (window.payment_plugin_message[lang][form].hasOwnProperty(key)) { text = window.payment_plugin_message[lang][form][key]; } Object.keys(replaceObj).forEach(key => { text = text.replace(new RegExp(`\{${key}\}`, 'gi'), replaceObj[key]); }) return text; } const zhCN = { ec: { not_active_channel: "่ฏทๅˆฐๆ”ถๆฌพ่ฎพ็ฝฎไธญ{channelName}ๆˆ–ๅœจใ€Œๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎใ€่ฎพ็ฝฎไธญ้€‰ๆ‹ฉๅ…ถไป–็š„ๆœๅŠกๆไพ›ๆ–น๏ผŒๅฆๅˆ™ๆŒ‰้’ฎๅฐ†ๆ— ๆณ•ๅฑ•็คบ", not_support_theme: "ๅฝ“ๅ‰ไธป้ข˜ไธๆ”ฏๆŒๆทปๅŠ ใ€Œๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎใ€", more_button: "ๆ›ดๅคšๆ”ฏไป˜ๆ–นๅผ", skeleton_layer_tips_title: "ๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎ", skeleton_layer_tips_content: "่ฏท็‚นๅ‡ปๅทฆไพงๅˆ—่กจไธญ็š„ใ€Œๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎใ€๏ผŒๅœจ่ฎพ็ฝฎ้กต้ขๅผ€ๅฏๆƒณ่ฆ็š„ๅฑ•็คบ็š„ๆ”ฏไป˜ๆŒ‰้’ฎ", mock_tips: "ๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎๆ˜ฏๅฆๅฑ•็คบ่ฟ˜ๅ–ๅ†ณไบŽไนฐๅฎถไฝฟ็”จ็š„ๆต่งˆๅ™จไปฅๅŠๅ•†ๅ“็š„่ดงๅธใ€้‡‘้ข", not_find_form_tips: "ๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎ็ป„ไปถไป…ๆ”ฏๆŒ้…็ฝฎๅˆฐๅ•†ๅ“่ฏฆๆƒ…ๅก็‰‡ๅ†…", } }; const zhTW = { ec: { not_active_channel: "่ฏทๅˆฐๆ”ถๆฌพ่ฎพ็ฝฎไธญ{channelName}ๆˆ–ๅœจใ€Œๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎใ€่ฎพ็ฝฎไธญ้€‰ๆ‹ฉๅ…ถไป–็š„ๆœๅŠกๆไพ›ๆ–น๏ผŒๅฆๅˆ™ๆŒ‰้’ฎๅฐ†ๆ— ๆณ•ๅฑ•็คบ", not_support_theme: "ๅฝ“ๅ‰ไธป้ข˜ไธๆ”ฏๆŒๆทปๅŠ ใ€Œๅฟซๆทๆ”ฏไป˜ๆŒ‰้’ฎใ€", more_button: "ๆ›ดๅคšไป˜ๆฌพๆ–นๅผ", } }; const arSA = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "ุงู„ู…ุฒูŠุฏ ู…ู† ุฎูŠุงุฑุงุช ุงู„ุฏูุน", } }; const deDE = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Weitere Bezahlmรถglichkeiten", } }; const esES = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Mรกs opciones de pago", } }; const frFR = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Plus d'options de paiement", } }; const idID = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Opsi pembayaran lainnya", } }; const itIT = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Altre opzioni di pagamento", } }; const jaJP = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "ใใฎไป–ใฎๆ”ฏๆ‰•ใ„ใ‚ชใƒ—ใ‚ทใƒงใƒณ", } }; const koKR = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "๋” ๋งŽ์€ ๊ฒฐ์ œ ์˜ต์…˜", } }; const enUS = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "More payment options", skeleton_layer_tips_title: "Express Checkout Button", skeleton_layer_tips_content: "Please click theใ€ŒExpress checkout buttonใ€on the block list๏ผŒthen you could enable the payment option you want to display in settings.", mock_tips: "Whether the Express checkout button is displayed also depends on the browser used by the buyer and the currency and amount of the product.", not_find_form_tips: "Express Checkout Button could only be added to Product details block.", } }; const nlNL = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Meer betalingsmogelijkheden", } }; const plPL = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Wiฤ™cej Opcji Pล‚atnoล›ci", } }; const ptPT = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "Mais opรงรตes de pagamento", } }; const ruRU = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "ะ”ั€ัƒะณะธะต ะฒะฐั€ะธะฐะฝั‚ั‹ ะพะฟะปะฐั‚ั‹", } }; const thTH = { ec: { not_active_channel: "Please activate {channelName} on B Admin or select another provider in theใ€ŒExpress checkout buttonใ€ settings, otherwise it will not display.", not_support_theme: "This Theme doesn't support addingใ€ŒExpress checkout buttonใ€", more_button: "เธ•เธฑเธงเน€เธฅเธทเธญเธเธเธฒเธฃเธŠเธณเธฃเธฐเน€เธ‡เธดเธ™เน€เธžเธดเนˆเธกเน€เธ•เธดเธก", } }; window.payment_plugin_message = { getPluginI18nMessages, "zh-CN": zhCN, "zh-TW": zhTW, "ar-SA": arSA, "de-DE": deDE, "es-ES": esES, "fr-FR": frFR, "id-ID": idID, "it-IT": itIT, "ja-JP": jaJP, "ko-KR": koKR, "en-US": enUS, "nl-NL": nlNL, "pl-PL": plPL, "pt-PT": ptPT, "ru-RU": ruRU, "th-TH": thTH, } document.dispatchEvent(new CustomEvent('payment_plugin_message_reader'));
try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); dom.i18n = window?.payment_plugin_message?.getPluginI18nMessages; if (dom.i18n) { document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { i18n: true } })) } else { document.addEventListener('payment_plugin_message_reader', () => { dom.i18n = window?.payment_plugin_message?.getPluginI18nMessages; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { i18n: true } })) }, {once: true}); } } catch (e) { } // ้€š็”จๅทฅๅ…ทๆ–นๆณ• try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9') const ROOT_URL = (C_SETTINGS && C_SETTINGS.routes && C_SETTINGS.routes.root) || ''; const eventListeners = {}; const commonUtils = function () { return { 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 {}; }, isChrome() { return navigator?.userAgent?.indexOf('Chrome') > -1 || navigator?.userAgent?.indexOf('CriOS') > -1; }, isSafari() { let userAgentString = navigator.userAgent; let chromeAgent = userAgentString.indexOf('Chrome') > -1 || navigator?.userAgent?.indexOf('CriOS') > -1; let safariAgent = userAgentString.indexOf('Safari') > -1; if (chromeAgent && safariAgent) { safariAgent = false; } return safariAgent; }, isPreview() { return !!window?.C_EDITING_SETTINGS?.oseid; }, multiply(a, b) { const precision = 2; // ไฟ็•™ไธคไฝๅฐๆ•ฐ return Number((a * b).toFixed(precision)); }, loadScript(fnReady, id, src, datasets, onError, attributeConfig = {}) { const sdkDomId = id + '-sdk'; if (fnReady() || document.getElementById(sdkDomId)) { return Promise.resolve({id: true}); } return new Promise((resolve) => { const s = document.createElement('script'); s.id = sdkDomId; s.src = src; s.defer = true; if (datasets) { Object.keys(datasets).map((item) => { s.dataset[item] = datasets[item]; }); } s.onload = function () { window.dispatchEvent(new CustomEvent(`${id}-loaded`)); resolve({id: true}); }; s.onerror = function () { resolve({id: false}); onError && onError(); }; Object.keys(attributeConfig).forEach((key) => { s.setAttribute(key, attributeConfig[key]); }); document.head.appendChild(s); }); }, track(eventName, data) { window.sa && window?.sa?.track('pm_' + eventName, JSON.parse(JSON.stringify(data))); }, getExtUrl(name) { const url = document.cookie.match(new RegExp('\\b' + name.replace(/_/g, '-') + '-(v[s0-9]+)')); if (url && url[1]) { return `${name}.${url[1]}.js`; } else { return window?.exts?.[name]; } }, req: { 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), }); return await response.json() } catch (error) { throw new Error('post request error' + error); } }, get: async (url, data = {}) => { try { const response = await fetch(ROOT_URL + url); return await response.json() } catch (error) { throw new Error('get request error' + error); } } }, debounce(fn, wait) { let timeout = null; return function () { if (timeout !== null) { clearTimeout(timeout); } timeout = setTimeout(function () { fn.apply(this, arguments); }, wait); } }, delayCallback(cb) { window.requestIdleCallback ? requestIdleCallback(cb, {timeout: 50}) : setTimeout(cb, 50); }, loadFilly(tag, cb) { if (!tag) { return } const script = document.createElement('script'); script.type = 'text/javaScript'; script.src = `//static.staticdj.com/${tag}`; script.onload = cb; document.getElementsByTagName('head')[0].appendChild(script); }, ecEvent: { on: (eventName, listener, useCapture) => { eventListeners[eventName] = listener; window.addEventListener(eventName, listener, useCapture); }, emit: (eventName, data) => window.dispatchEvent(new CustomEvent(eventName, {detail: data})), } } } dom.commonUtilsFn = commonUtils; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { commonUtils: true } })) } catch (e) { } // ๆ ธๅฟƒๆ•ฐๆฎ try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); const coreData = function () { const {getProduct} = dom.commonUtils; let productDetail = getProduct(); let productPrice = productDetail?.selected?.price || 35.99; const shopCurrencyCode = "USD"; const expressCheckoutList = { sdkErrorList: [], paymentChannelList: [], disabledChannelList: [], showChannelList: [], blockChannelList: [], extraChannelList: [], }; const channelType = { googlepay: ['shoplazzagoogle'], applepay: ['shoplazzaapple'], credit: ['paypal'] }; const ecGlobalVarEnums = { paypal: 'pluginPaypalEC' }; const providerEnums = { SHOPLAZZA: 'shoplazza', STRIPE: 'stripe', PAYPAL: 'paypal' }; const channelEnums = { SHOPLAZZA_GOOGLE: 'shoplazzagoogle', SHOPLAZZA_APPLE: 'shoplazzaapple', STRIPE_GOOGLE: 'stripegoogle', STRIPE_APPLE: 'stripeapple', PAYPAL: 'paypal' }; const channelThemeConfig = { [channelEnums.PAYPAL]: { default: { url: 'oss/operation/f557c83808e1cd456411170286a1ea95.svg', classList: ['paypal-card'], }, }, [channelEnums.SHOPLAZZA_GOOGLE]: { light: { url: 'oss/operation/778afb93da43adf75bdc80b078e5d4fd.svg', classList: ['googlepay-light'], }, dark: { url: 'oss/operation/e53180c224f0b0af44b44663775aa930.svg', classList: ['googlepay-dark'], }, }, [channelEnums.SHOPLAZZA_APPLE]: { light: { url: 'oss/operation/dadceb884044e0a9bbfe26c15192f542.svg', classList: ['applepay-light'], }, dark: { url: 'oss/operation/6597f66eac8b0681ebfb75941e8f6f52.svg', classList: ['applepay-dark'], }, }, }; function getContainerDomId() { const domIdObj = {}; Object.keys(providerEnums).forEach(key => { domIdObj[providerEnums[key]] = FormatterContainerDomId(providerEnums[key]) }) return domIdObj; } function FormatterContainerDomId(provider) { const domIDSuffix = '-express-button-container'; const prefix = 'pm-'; return `${prefix}${provider}${domIDSuffix}-1539149753700-9` } return { ecGlobalVarEnums, providerEnums, channelEnums, productPrice, shopCurrencyCode, getChannelThemeConfig(ecName) { const themeType = window.PaymentEC?.settings?.express_theme_configs?.[ecName]?.theme_type?.toLowerCase() || 'default'; return channelThemeConfig[ecName][themeType] || channelThemeConfig[ecName]['dark']; }, getProductPrice() { return productDetail?.selected?.price; }, getProductDetail() { return productDetail; }, setProductDetail(data) { productDetail = data; }, isRequiresShipping() { return productDetail?.product?.requires_shipping }, getOpenChannelType() { const {paymentChannelList, blockChannelList} = expressCheckoutList const openList = paymentChannelList.filter(item => blockChannelList.includes(item)) || []; return { hasApplepay: openList.filter(item => channelType.applepay.includes(item))?.length > 0, hasGooglepay: openList.filter(item => channelType.googlepay.includes(item))?.length > 0, hasCredit: openList.filter(item => channelType.credit.includes(item))?.length > 0 } }, containerDomId: getContainerDomId(), channel2ProviderEnums: { [channelEnums.PAYPAL]: providerEnums.PAYPAL, [channelEnums.SHOPLAZZA_GOOGLE]: providerEnums.SHOPLAZZA, [channelEnums.SHOPLAZZA_APPLE]: providerEnums.SHOPLAZZA, [channelEnums.STRIPE_GOOGLE]: providerEnums.STRIPE, [channelEnums.STRIPE_APPLE]: providerEnums.STRIPE, }, getExpressCheckoutList() { return expressCheckoutList; }, setShowChannel(showChannelList = []) { expressCheckoutList.showChannelList = showChannelList; return expressCheckoutList; }, setBlockChannel(blockChannelList = []) { expressCheckoutList.blockChannelList = blockChannelList; return expressCheckoutList; }, setPaymentChannelList(paymentChannelList = []) { expressCheckoutList.paymentChannelList = paymentChannelList; return expressCheckoutList; }, setSdkErrorList(paymentChannelList = []) { expressCheckoutList.sdkErrorList = paymentChannelList; return expressCheckoutList; }, setExtraChannelList(extraChannelList = []) { expressCheckoutList.extraChannelList = extraChannelList; return expressCheckoutList; }, setDisabledChannelList(disabledChannelList = []) { expressCheckoutList.disabledChannelList = disabledChannelList; return expressCheckoutList; } } } dom.coreDataFn = coreData; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { coreData: true } })) } catch (e) { console.log(e); } // ้€š็”จไธšๅŠกๆ•ฐๆฎๅค„็†ๆ–นๆณ• try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9') const businessUtils = function () { const {track, isChrome, isSafari, req, isPreview, multiply} = dom.commonUtils; const {getProductPrice, containerDomId, ecGlobalVarEnums} = dom.coreData; const { channelEnums, shopCurrencyCode, isRequiresShipping, getProductDetail, setShowChannel, setBlockChannel, setSdkErrorList, setExtraChannelList, setDisabledChannelList, setPaymentChannelList, getExpressCheckoutList } = dom.coreData; const _businessUtils = { getECConfig: async () => { if (window.PaymentEC?.settings) { return window.PaymentEC?.settings; } const result = await req.get('/api/payment/settings'); const ecConfig = result?.settings?.express_checkout_config || {}; const {blockChannelList} = getExpressCheckoutList(); setPaymentChannelList(blockChannelList.filter(ecName => ecConfig?.express_channels?.includes(ecName)) || []); window.PaymentEC.settings = {...ecConfig, currencyCode: shopCurrencyCode}; return window.PaymentEC.settings; }, getAttributeConfig(channelInfo) { const {ecGlobalVar, ecName} = channelInfo; const config = { paypal: { 'data-namespace': ecGlobalVar } }; return config[ecName] || {}; }, getThemeFormData() { let themeFormData = {}; const formDOM = dom.closest("form"); if (formDOM) { themeFormData = { note: '', product_id: '', variant_id: '', quantity: 1, properties: {}, }; const formData = new FormData(formDOM); const formDataKey = formData.keys(); for (const key of formDataKey) { const value = formData.get(key); const propertiesKey = key.match(/^properties(?:\.(\w+)$|\[(\w+)\]$)/); if (!propertiesKey) { themeFormData[key] = value; continue; } const objKey = propertiesKey[1] || propertiesKey[2]; themeFormData['properties'] = {...themeFormData['properties'], [objKey]: value}; } } return themeFormData; }, getProductFormData() { const themeFormData = _businessUtils.getThemeFormData() return [{ ...themeFormData, note: themeFormData?.note || "", product_id: themeFormData?.product_id || "", variant_id: themeFormData?.variant_id || "", quantity: themeFormData?.quantity || 1, // ไธŽไธป้ข˜็กฎ่ฎค๏ผŒๅชไปฅไธ€ไธชไธบๅ‡†๏ผŒ้˜ฒๆญขformไธๅญ˜ๅœจ็š„ๆ•ฐๆฎไป่ขซไผ ้€’ properties: themeFormData?.properties || {}, }] }, getOrderFetchParams(data) { if (!data) { return {}; } return { line_items: data.map((item) => ({ ...item, note: item?.note || "", quantity: item?.quantity || 1, product_id: item?.product_id, variant_id: item?.variant_id, properties: item?.properties, })), refer_info: { source: 'buy_now', }, customer_note: '', }; }, isAllowTheme() { const allowThemeList = ['Nova 2023', 'Dropshiping', 'Geek', 'Hero', 'Eva']; const currentTheme = window?.C_SETTINGS?.theme?.merchant_theme_name; return allowThemeList.includes(currentTheme); }, getSubscriptionIdInit() { let defaultID; const selectSubscriptionEnum = { CLOSE: 1, ACTIVE: 2, } const productDetail = getProductDetail(); const sellingPlan = ""; if (!sellingPlan || typeof sellingPlan !== "object") { return null; } let sellingItems; if (sellingPlan?.spu?.[productDetail?.product?.id]) { sellingItems = sellingPlan.spu[productDetail?.product?.id] } if (sellingPlan?.sku?.[productDetail?.selected?.id]) { sellingItems = sellingPlan.sku[productDetail?.product?.id] } if (sellingItems?.cycles === selectSubscriptionEnum.ACTIVE && sellingItems?.selected_selling_plan_option_id) { defaultID = sellingItems?.selected_selling_plan_option_id } return defaultID ?? null }, getSubscriptionId() { const formData = _businessUtils.getThemeFormData(); const defaultID = _businessUtils.getSubscriptionIdInit(); console.log(`[paymentEC]่ฎข้˜…ไฟกๆฏ:form-${formData?.properties?._selling_plan_option_id},้ป˜่ฎค-${defaultID}`); if (formData?.properties) { return formData?.properties?._selling_plan_option_id } return defaultID ?? null; }, isSubscription() { return !!_businessUtils.getSubscriptionId(); }, isAllowSubscriptionPay(channel) { if (!_businessUtils.isSubscription()) { return true; } return [channelEnums.PAYPAL].includes(channel); }, blockChannelHandler() { const block_googlePay = false && "shoplazzagoogle"; const block_applePay = false && "shoplazzaapple"; const block_credit = true && "paypal"; const blockChannel = { googlepay: (isPreview() || isChrome()) && block_googlePay, applepay: (isPreview() || isSafari()) && block_applePay, credit: block_credit }; const sortList = ['credit', 'googlepay', 'applepay']; const methodSort = Object.keys(blockChannel).filter(key => blockChannel[key] && key).sort((a, b) => { const indexA = sortList.indexOf(a); const indexB = sortList.indexOf(b); return indexA - indexB; }).map(key => blockChannel[key]); const result = setBlockChannel(methodSort); track('setBlockChannel', result); return result; }, showECButtonHandler() { const { paymentChannelList, sdkErrorList, disabledChannelList, extraChannelList, } = getExpressCheckoutList(); const showChannelList = paymentChannelList.filter((ecName) => !sdkErrorList.includes(ecName) && !disabledChannelList.includes(ecName) && !extraChannelList.includes(ecName)) || []; const result = setShowChannel(showChannelList); track('showECButton', result); return result; }, filterECButtonHandler({type}, cb) { const { paymentChannelList, sdkErrorList, disabledChannelList, extraChannelList, } = getExpressCheckoutList(); const showChannelList = paymentChannelList.filter((ecName) => !sdkErrorList.includes(ecName) && !disabledChannelList.includes(ecName) && !extraChannelList.includes(ecName)) || []; const result = setShowChannel(showChannelList.filter((ecName) => ecName !== type) || []); cb && cb(); track('filterECButton', result); return result; }, loadSDKErrorHandler(type) { const {sdkErrorList} = getExpressCheckoutList(); const result = setSdkErrorList([...sdkErrorList, type]); track('loadSDKError', result); return result; }, extraFilterShowHandler(channel) { const {extraChannelList} = getExpressCheckoutList(); const result = setExtraChannelList(extraChannelList.filter(ecName => ecName !== channel)); track('extraFilterEvent_show', result); return result; }, extraFilterHideHandler(channel) { const {extraChannelList} = getExpressCheckoutList(); const result = setExtraChannelList([...extraChannelList, channel]); track('extraFilterEvent_hide', result); return result; }, disabledChannelListHandler(checkoutData = {}, cb) { const {paymentChannelList} = getExpressCheckoutList(); const productDetail = getProductDetail(); const disabledChannelList = paymentChannelList.filter(ecName => { let mustDisable = false; if (!isRequiresShipping() && ecName !== channelEnums.PAYPAL) { mustDisable = true; } if (!_businessUtils.isAllowSubscriptionPay(ecName)) { mustDisable = true; } if (!productDetail?.selected?.available) { mustDisable = true; } const {payment_due} = checkoutData?.prices; const paymentDueNum = Number(payment_due || 0) * 100; const showFlag = paymentDueNum > 0; return mustDisable || !showFlag; }) const result = setDisabledChannelList(disabledChannelList) result?.disabledChannelList?.forEach(ecName => { cb && cb(ecName); }) track('disabledChannelListEvent', result); }, async getCheckoutData() { const formData = _businessUtils.getProductFormData(); const totalPrice = multiply(getProductPrice(), formData?.[0]?.quantity || 0); return { prices: {payment_due: totalPrice, subtotal_price: totalPrice}, orderParams: _businessUtils.getOrderFetchParams(_businessUtils.getProductFormData()), containerDOMIdEnums: containerDomId, ecGlobalVarEnums } }, } return _businessUtils } dom.businessUtilsFn = businessUtils; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { businessUtils: true } })) } catch (e) { } // ้€š็”จๆธฒๆŸ“ๆ–นๆณ• try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); const containerDOM = 'pm-payment-express-button-container-1539149753700-9'; const commonRenderUtils = function () { return { addChildrenDOM(id, allowShow, options = {}) { if (!id) { return; } const paymentEl = document.getElementById(containerDOM); const childrenEL = document.getElementById(id); if (paymentEl && childrenEL) { childrenEL.style.display = allowShow ? 'block' : 'none'; return; } if (paymentEl && !childrenEL) { const dom = document.createElement('div'); dom.id = id; dom.style.display = allowShow ? 'block' : 'none'; if (options?.style) { Object.keys(options?.style).forEach(key => { dom.style[key] = options.style[key]; }) } if (Array.isArray(options?.classList)) { dom.classList.add(...options.classList) } paymentEl.appendChild(dom); } }, removeChildrenDOM(id) { if (!id) { return; } const paymentEl = document.getElementById(containerDOM); const childrenEL = document.getElementById(id); if (paymentEl && childrenEL) { // childrenEL.remove(); childrenEL.style.display = 'none'; } }, mockAddChildrenDOM(id, allowShow, options = {}) { if (!id) { return; } const paymentEl = document.getElementById(containerDOM); const childrenEL = document.getElementById(id); if (paymentEl && childrenEL) { childrenEL.style.display = allowShow ? 'flex' : 'none'; return; } if (paymentEl && !childrenEL) { const dom = document.createElement('div'); dom.id = id; dom.style.display = allowShow ? 'flex' : 'none'; if (options?.style) { Object.keys(options?.style).forEach(key => { dom.style[key] = options.style[key]; }) } if (Array.isArray(options?.classList)) { dom.classList.add(...options.classList) } dom.classList.add('mock-img'); const img = document.createElement('img'); img.src = `//static.staticdj.com/${options?.url}`; dom.appendChild(img); paymentEl.appendChild(dom); } }, resetRenderDOM() { const resetStyleList = [ "pm-payment-express-error-tips-1539149753700-9", "pm-payment-express-more-button-1539149753700-9", "pm-payment-express-mock-tips-1539149753700-9", "pm-payment-express-skeletonLayer-1539149753700-9", ] const resetHtmlList = [ "pm-payment-express-skeletonLayer-title-content-1539149753700-9", "pm-payment-express-skeletonLayer-content-1539149753700-9", "pm-payment-express-mock-tips-1539149753700-9", "pm-payment-express-error-tips-1539149753700-9", "pm-payment-express-button-container-1539149753700-9", "pm-payment-express-more-button-1539149753700-9", ] resetStyleList.forEach(domID => { const content = document.getElementById(domID); if (content) { content.style.display = 'none'; } }) resetHtmlList.forEach(domID => { const content = document.getElementById(domID); if (content) { content.innerHTML = ''; } }) } } } dom.commonRenderUtilsFn = commonRenderUtils; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { commonRenderUtils: true } })) } catch (e) { } // ้”™่ฏฏๆ็คบๆธฒๆŸ“ try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); const renderTipsUtils = function () { const {i18n} = dom; const {isPreview} = dom.commonUtils; const {channelEnums} = dom.coreData; return { showChannelNotOpenTips(channelList) { const tipsDom = document.getElementById('pm-payment-express-error-tips-1539149753700-9'); if (!isPreview()) { return; } if (!tipsDom) { return; } tipsDom.style.display = channelList.length > 0 ? 'block' : 'none'; const channelName = { [channelEnums.SHOPLAZZA_GOOGLE]: "ShoplazzaPayments - GooglePay", [channelEnums.SHOPLAZZA_APPLE]: "ShoplazzaPayments - ApplePay", [channelEnums.PAYPAL]: "PayPal", } channelList.forEach(ecName => { const id = `pm-payment-express-error-tips-1539149753700-9-${ecName}`; const hasDom = document.getElementById(id) if (!hasDom) { const dom = document.createElement('div'); dom.id = id; dom.innerHTML = i18n('ec.not_active_channel', {channelName: channelName[ecName]}); tipsDom.appendChild(dom); } }) }, disabledThemTips() { const tipsDom = document.getElementById('pm-payment-express-error-tips-1539149753700-9'); if (!isPreview()) { return; } if (!tipsDom) { return; } tipsDom.style.display = 'block'; const id = 'pm-payment-express-error-tips-1539149753700-9-theme'; const hasDom = document.getElementById(id); if (!hasDom) { const dom = document.createElement('div'); dom.id = id; dom.innerHTML = i18n('ec.not_support_theme'); tipsDom.appendChild(dom); } }, notFindFormTips() { const tipsDom = document.getElementById('pm-payment-express-error-tips-1539149753700-9'); if (!isPreview()) { return; } if (!tipsDom) { return; } tipsDom.style.display = 'block'; const id = 'pm-payment-express-error-tips-1539149753700-9-theme'; const hasDom = document.getElementById(id); if (!hasDom) { const dom = document.createElement('div'); dom.id = id; dom.innerHTML = i18n('ec.not_find_form_tips'); tipsDom.appendChild(dom); } }, showSkeletonLayerTips() { const skeletonLayerDOMId = 'pm-payment-express-skeletonLayer-1539149753700-9'; const skeletonLayerDOM = document.getElementById(skeletonLayerDOMId); const titleDOM = document.getElementById('pm-payment-express-skeletonLayer-title-content-1539149753700-9'); const contentDOM = document.getElementById('pm-payment-express-skeletonLayer-content-1539149753700-9'); if (!skeletonLayerDOM || !titleDOM || !contentDOM) { return; } skeletonLayerDOM.style.display = 'block'; titleDOM.innerHTML = i18n('ec.skeleton_layer_tips_title'); contentDOM.innerHTML = i18n('ec.skeleton_layer_tips_content'); }, showMockTips() { const tipsDOM = document.getElementById('pm-payment-express-mock-tips-1539149753700-9'); if (!tipsDOM) { return; } tipsDOM.style.display = 'block'; tipsDOM.innerHTML = i18n('ec.mock_tips'); } } } dom.renderTipsUtilsFn = renderTipsUtils; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { renderTipsUtils: true } })) } catch (e) { } // ๆ›ดๅคšไฟกๆฏๆธฒๆŸ“ try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); const moreDOM = document.getElementById('pm-payment-express-more-button-1539149753700-9'); const moreButtonConfig = { firstClick: true, maxSize: isNaN(4) ? 1 : 4 }; const renderMoreUtils = function () { const {i18n} = dom; const {getExpressCheckoutList} = dom.coreData; function moreButtonEvent(cb) { if (!moreDOM) { return; } moreDOM.style.display = 'none'; moreButtonConfig.firstClick = false; cb && cb(); } return { getMoreButtonConfig() { return moreButtonConfig }, showMoreButton(cb) { if (!moreDOM) { return; } const {showChannelList} = getExpressCheckoutList(); const showLength = showChannelList.length; const {firstClick, maxSize} = moreButtonConfig; moreDOM.style.display = (firstClick && showLength > 0 && showLength > maxSize) ? 'block' : 'none'; moreDOM.innerHTML = i18n('ec.more_button'); moreDOM.onclick = () => moreButtonEvent(cb); }, } } dom.renderMoreUtilsFn = renderMoreUtils; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { renderMoreUtils: true } })) } catch (e) { } try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); function start() { const { getExtUrl, loadFilly, delayCallback, ecEvent, track, loadScript, debounce } = dom.commonUtils; const { blockChannelHandler, getAttributeConfig, showECButtonHandler, filterECButtonHandler, loadSDKErrorHandler, extraFilterShowHandler, extraFilterHideHandler, disabledChannelListHandler, getECConfig, isAllowTheme, getCheckoutData, getThemeFormData } = dom.businessUtils; const {addChildrenDOM, removeChildrenDOM} = dom.commonRenderUtils; const {getMoreButtonConfig, showMoreButton} = dom.renderMoreUtils; const { ecGlobalVarEnums, getExpressCheckoutList, getProductPrice, getProductDetail, setProductDetail, containerDomId, channel2ProviderEnums, getChannelThemeConfig } = dom.coreData; function getFilly() { const fillyTag = getExtUrl('filly'); if (fillyTag) { loadFilly(fillyTag, init); } } function extraFilterEvent(e) { const {channel, domId, allowShow} = e?.detail || {}; if (channel && domId) { if (allowShow) { extraFilterShowHandler(channel); } else { extraFilterHideHandler(channel); filterECButtonHandler({type: channel}, () => removeChildrenDOM(domId) ); } renderEC(); } } const renderEC = () => { showECButtonHandler(); const {showChannelList} = getExpressCheckoutList(); const {firstClick, maxSize} = getMoreButtonConfig(); if (showChannelList.length === 0) { showMoreButton(renderEC); } showChannelList.forEach((ecName, index) => { const disableShow = firstClick && index >= maxSize; addChildrenDOM(containerDomId[channel2ProviderEnums[ecName]], !disableShow, getChannelThemeConfig(ecName)); showMoreButton(renderEC); }); } const loadErrorEvent = (type) => { const domID = containerDomId[type]; if (!domID) { return; } loadSDKErrorHandler(type); filterECButtonHandler({type}, () => removeChildrenDOM(domID) ); showMoreButton(renderEC); }; async function loadEC() { const themeFormData = getThemeFormData?.() || {}; if (!themeFormData?.product_id || !themeFormData?.variant_id) { console.log('[paymentEC]hide:ๆœชๆ‰พๅˆฐform่กจๅ•ๆˆ–ๅฟ…่ฆไฟกๆฏ') return; } const ecConfig = await getECConfig(); const expressCheckoutList = getExpressCheckoutList(); track('loadEC', expressCheckoutList); if (ecConfig) { const checkoutData = await getCheckoutData(); disabledChannelListHandler(checkoutData, (ecName) => { filterECButtonHandler({type: ecName}, () => removeChildrenDOM(containerDomId[channel2ProviderEnums[ecName]]) ); }); renderEC(); window.PaymentEC.handleEcPluginsLoad = ({ channelInfos = [], loadedCbFn = () => { } }) => { const expressCheckoutLoadList = []; channelInfos.map((channelInfo) => { const {ecGlobalVar, ecName = '', sdkPath = '', datasets} = channelInfo; if (!document.getElementById(containerDomId[ecName])) { return; } const attributeConfig = getAttributeConfig(channelInfo) || {}; expressCheckoutLoadList.push( loadScript(() => window[ecGlobalVar], ecGlobalVar, sdkPath, datasets, () => { loadErrorEvent(ecName); }, attributeConfig) ); }); Promise.all(expressCheckoutLoadList).then(() => { loadedCbFn(checkoutData); }); }; // ้€š็Ÿฅๅค–้ƒจๆ•ฐๆฎๅ˜ๆ›ด ecEvent.emit('tc_payment_ec_data_change', { ecGlobalVarEnums, containerDOMIdEnums: containerDomId }); } } const loadECDebounce = debounce(loadEC, 300) async function refreshEC(data = {}, sources) { if (!sources) { console.warn('[paymentEC]hide: sources is null'); return; } if (data?.detail?.selected?.price) { setProductDetail(data?.detail) } loadECDebounce(); } function init() { ecEvent.on('shoplazza_express_channels_change', extraFilterEvent, false); ecEvent.on('shoplazza_express_channels_change_ready', extraFilterEvent, false); if (typeof window.PaymentEC === 'object') { window.PaymentEC.getCheckoutData = getCheckoutData; } else { console.warn("[payment]window.PaymentEC is null"); } document.addEventListener('dj.variantChange', (data) => refreshEC(data, 'variantChange')); document.addEventListener('payment_ec_refresh', (data) => refreshEC(data, data?.detail?.sources)); refreshEC({}, 'init'); } if (isAllowTheme()) { blockChannelHandler(); if (document.readyState === 'complete') { delayCallback(getFilly); return; } window.addEventListener('load', () => delayCallback(getFilly), {once: true}); } } dom.startFn = start; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { start: true } })) } catch (e) { console.log(e); } // ้ข„่งˆๆจกๅผ try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); function start() { const {track} = dom.commonUtils; const {showMoreButton, getMoreButtonConfig} = dom.renderMoreUtils; const { showECButtonHandler, getECConfig, blockChannelHandler, isAllowTheme, getThemeFormData } = dom.businessUtils; const { disabledThemTips, showChannelNotOpenTips, showSkeletonLayerTips, showMockTips, notFindFormTips } = dom.renderTipsUtils; const {mockAddChildrenDOM, resetRenderDOM} = dom.commonRenderUtils; const { channelEnums, getChannelThemeConfig, getExpressCheckoutList, getOpenChannelType } = dom.coreData; const mockDomId = { [channelEnums.PAYPAL]: channelEnums.PAYPAL, [channelEnums.SHOPLAZZA_GOOGLE]: channelEnums.SHOPLAZZA_GOOGLE, [channelEnums.SHOPLAZZA_APPLE]: channelEnums.SHOPLAZZA_APPLE, [channelEnums.STRIPE_GOOGLE]: channelEnums.STRIPE_GOOGLE, [channelEnums.STRIPE_APPLE]: channelEnums.STRIPE_APPLE, } const renderNotOpenTips = () => { const {blockChannelList, paymentChannelList} = getExpressCheckoutList(); const notOpenChannel = blockChannelList.filter(ecName => !paymentChannelList.includes(ecName)); showChannelNotOpenTips(notOpenChannel); } const renderMockTips = () => { const {hasApplepay, hasGooglepay} = getOpenChannelType(); if (hasApplepay || hasGooglepay) { showMockTips(); } } const renderEC = () => { showECButtonHandler(); const {showChannelList} = getExpressCheckoutList(); const {firstClick, maxSize} = getMoreButtonConfig(); if (showChannelList.length === 0) { showMoreButton(renderEC); } showChannelList.forEach((ecName, index) => { const disableShow = firstClick && index >= maxSize; mockAddChildrenDOM(mockDomId[ecName], !disableShow, getChannelThemeConfig(ecName)); showMoreButton(renderEC); }); } async function loadEC() { const date = new Date().getTime(); dom.loadEC_timestamp = date const ecConfig = await getECConfig(); if (date !== dom.loadEC_timestamp) { return; } const expressCheckoutList = getExpressCheckoutList(); track('preview-loadEC', expressCheckoutList); resetRenderDOM(); // ๅˆๅง‹ๅŒ–ๆ—ถๆฒกๆœ‰ไบ‹ไปถๆŽจ้€ if (ecConfig) { renderNotOpenTips(); renderEC(); renderMockTips(); } } const init = () => { blockChannelHandler(); const {blockChannelList} = getExpressCheckoutList(); if (!isAllowTheme()) { disabledThemTips() return; } const themeFormData = getThemeFormData?.() || {}; if (!themeFormData?.product_id || !themeFormData?.variant_id) { notFindFormTips(); return; } if (blockChannelList.length > 0) { loadEC(); } else { showSkeletonLayerTips() } } init(); } dom.mockStartFn = start; document.dispatchEvent(new CustomEvent('payment_ec_core_ready', { detail: { start: true } })) } catch (e) { } try { const dom = document.getElementById('pm-payment-express-button-1539149753700-9'); window.PaymentEC = {} const delayCallback = (cb) => { window.requestIdleCallback ? requestIdleCallback(cb, {timeout: 50}) : setTimeout(cb, 50); } const checkReady = function (data) { const { i18n, commonUtilsFn, coreDataFn, businessUtilsFn, commonRenderUtilsFn, renderTipsUtilsFn, renderMoreUtilsFn, startFn, mockStartFn } = dom let readyData = { commonUtils: !!(commonUtilsFn) || false, coreData: !!(coreDataFn) || false, businessUtils: !!(businessUtilsFn) || false, commonRenderUtils: !!(commonRenderUtilsFn) || false, renderTipsUtils: !!(renderTipsUtilsFn) || false, renderMoreUtils: !!(renderMoreUtilsFn) || false, start: !!(startFn) || false, mockStart: !!(mockStartFn) || false, i18n: !!(i18n) || false } if (data?.detail) { Object.keys(data.detail).forEach(key => { readyData[key] = data.detail[key] }) } let isReady = true; Object.keys(readyData).forEach(key => { if (!readyData[key]) { isReady = false } }) return isReady } const readyFn = () => { if (!checkReady()) { return; } document.removeEventListener('payment_ec_core_ready', readyFn); dom.commonUtils = dom.commonUtilsFn(); dom.coreData = dom.coreDataFn(); dom.businessUtils = dom.businessUtilsFn(); dom.commonRenderUtils = dom.commonRenderUtilsFn(); dom.renderTipsUtils = dom.renderTipsUtilsFn(); dom.renderMoreUtils = dom.renderMoreUtilsFn(); const productData = dom?.commonUtils?.getProduct?.() || {}; if (JSON.stringify(productData) === '{}') { console.log('[paymentEC]hide: product data is {}') return; } if (dom?.commonUtils?.isPreview()) { dom.mockStartFn() } else { dom.startFn(); } } const init = () => { if (checkReady()) { readyFn(); } else { document.addEventListener('payment_ec_core_ready', readyFn) } } if (document.readyState === 'complete') { delayCallback(init); } else { window.addEventListener('load', () => delayCallback(init), {once: true}); } } catch (e) { }

Clinically Tested. NHS-Approved. and Recommended by BSP for Fast Relief

AnnieCare® DiaLeg Care Phyto Cream is clinically tested. NHS-approved. and recommended by the British Society of Phlebology (BSP) for fast relief from pain and discomfort associated with varicose veins and other vascular issues. In just 2-5 days of regular use. this powerful cream improves circulation. reduces swelling. and supports healthier veins. Its natural ingredients penetrate deeply to reduce inflammation and enhance leg health. Safe. effective. and easy to apply. it's the ideal solution for quick relief and long-term vein care.

100% Natural. Chemical-Free Ingredients

AnnieCare® DiaLeg care phyto cream is crafted with natural plant extracts that gently soothe sensitive skin while effectively relieving pain and swelling from varicose veins. without any harmful chemicals.

Effective for All Types of Varicose Veins

Whether you're dealing with mild or severe varicose veins. our cream is formulated to alleviate pain and swelling. making it effective for all stages of the condition. It works to soothe discomfort in various areas of the legs. including the thighs. calves. and ankles.

LET'S SEE WHAT OUR CUSTOMERS HAVE TO SAY AND JOIN THE 2.000+ PATIENTS WHO ARE TREATING VARICOSE VEINS TODAY:

"I've struggled with varicose veins since I was in my 40s. and over the years. they just kept getting worse. My doctor recommended AnnieCare® DiaLeg care phyto cream. and I'm so glad I tried it. After just a few days. I noticed less swelling and pain in my legs. I've been using it consistently for a couple of weeks now. and I'm already seeing visible improvements in the appearance of my veins!"
— Sarah Thompson 44 y/o | โญโญโญโญโญ

"When my varicose veins went from just a small spot to spreading all over my leg. I was really freaked out. The pain and swelling made it so hard to walk or even stand for long periods. I tried so many products. but nothing worked like AnnieCare® DiaLeg care phyto cream. After just a week of using it. the swelling went down a ton. and the pain was gone. It's been a month now. and my veins look way better. I honestly feel like I got my life back! Huge thanks for this product!"

— Liam Wilson. 52 y/o | โญโญโญโญโญ

I recently got diagnosed with CVI and varicose veins. and to be honest. it hit me hard. At the start of the month. I went to A&E with throbbing vascular pain and swelling in my calf. I also had a “bruise” that turned out to be a blown vein. Visually. my legs look fine from a distance. but I can see the bulging blue veins when I bend my knee. I've felt constant tingling in my legs. and it's like I can feel the blood moving around in them all the time. Anyway. I was feeling pretty down. but then I came across this product and figured. why not give it a try? I wasn't expecting miracles. but after sticking to a routine of applying it twice a day. I've actually seen some improvement. It's been two weeks now. and I'm starting to feel a bit better.

— Sarah Thompson 28 y/o | โญโญโญโญโญ
"I had surgery on my ankle for veins. which worked for a while but unfortunately. the issue came back. Then I developed venous stasis ulcers. and the pain got so bad I couldn't sleep. and the fatigue just made it even harder to heal. I wanted to find alternative pain relief because I'm not a fan of using opioids long-term. After I started using AnnieCare® DiaLeg care phyto cream. I began to see real improvement. The swelling and discomfort started to decrease. and I'm feeling a lot better now. I'm really happy with the results!"
Mason Harris 60 y/o| โญโญโญโญโญ

Expert Insights on AnnieCare® DiaLeg care phyto cream

Dr. Geoffrey Westrich. a respected member of the British Society of Phlebology (BSP) and an esteemed vascular specialist. endorses AnnieCare® DiaLeg Care Phyto Cream for its exceptional ability to alleviate varicose vein symptoms. According to Dr. Westrich. the combination of natural anti-inflammatory ingredients and circulation-boosting agents makes this product particularly effective in treating varicose veins and supporting long-term vein health.

Geoffrey Westrich. MD

"As a vascular specialist. I highly recommend AnnieCare®DiaLeg Care Phyto Cream for varicose vein management. Its natural ingredients. including anti-inflammatory plant extracts. work synergistically to reduce swelling and discomfort by enhancing blood flow and supporting vein elasticity. By penetrating deeply into the skin. it not only improves circulation but also strengthens vein walls. promoting healthier. more toned skin. This combination of soothing and restorative effects makes it an excellent non-invasive alternative for varicose vein care."

What Is Varicose veins?

Varicose veins can occur due to a variety of factors. including age-related degeneration. overuse or injury. and certain medical conditions such as diabetes or rheumatoid arthritis. Poor posture. poor nutrition. and certain types of work or sports can also increase the risk of developing varicose veins.

How It Works?

Reduces Inflammation and Pain

The cream contains natural anti-inflammatory agents that help to reduce swelling. pain. and discomfort associated with varicose veins. These ingredients work to soothe the affected areas. providing fast relief from aching legs.

Promotes Circulation and Healthier Veins

By boosting circulation. the cream helps improve blood flow to the affected areas. preventing further vein damage and promoting overall vein health. Regular use can visibly reduce the appearance of varicose veins.

Deep Tissue Repair and Support

AnnieCare® DiaLeg care phyto cream supports tissue regeneration by nourishing the skin and improving elasticity. It helps strengthen veins and skin tissue over time. leading to long-term improvements in vein function.

What Makes AnnieCare® DiaLeg care phyto cream the GREAT CHOICE?

โœ“ Relieves varicose vein pain and reduces swelling
โœ“ Promotes blood circulation and vein health
โœ“ Improves the appearance of varicose veins
โœ“ Supports long-term vein function and mobility
โœ“ Clinically proven with no harmful side effects
โœ“ Can be used both day and night
โœ“ Fast-acting with visible results within days
โœ“ Developed with expert approval and natural ingredients
โœ“ Cruelty-free and free from harmful chemicals

AnnieCare® DiaLeg care phyto cream Contains Proven. Effective Ingredients

The cream contains ten proven. powerful ingredients that have been used to effectively treat varicose veins and vasculature-related conditions in millions of people around the world.

Aesculus Hippocastanum (Horse Chestnut) Oil Extract: Known for its ability to improve circulation and strengthen vein walls. this extract is an effective natural remedy for varicose veins. It helps reduce swelling. alleviate pain. and improve the appearance of veins.

Cupressus Sempervirens (Cypress) Oil Extract: This extract promotes healthy blood flow. reduces swelling. and helps tone and strengthen the veins. It's especially useful for improving vein health and relieving the discomfort associated with varicose veins.

Lavandula Angustifolia (Lavender) Oil Extract: Lavender oil is known for its calming and anti-inflammatory properties. It helps to reduce swelling. relax the body. and improve circulation. making it ideal for varicose veins treatment.

Melaleuca Alternifolia (Tea Tree) Oil Extract: Known for its anti-inflammatory and antimicrobial properties. this oil extract helps reduce inflammation and promote the healing of damaged veins.

Salvia Rosmarinus (Rosemary) Oil Extract: This extract stimulates blood circulation. strengthens vein walls. and alleviates pain and swelling associated with varicose veins. It helps improve the overall health of the veins.

Aloe Barbadensis (Aloe Vera) Extract: Aloe vera soothes the skin and reduces irritation. making it ideal for individuals with sensitive skin while providing healing properties to affected areas.

Centella Asiatica (Gotu Kola) Extract: Known for its ability to improve skin elasticity and promote blood flow. this herb helps in reducing the visibility of varicose veins and supports long-term vein health.

Allium Sativum (Garlic) Extract: Garlic is known for its anti-inflammatory properties and its ability to improve circulation. It helps to reduce swelling and pain associated with varicose veins and supports overall vein health.

B.H.T. (Butylated HydroxyToluene) Extract: This antioxidant helps protect the skin from oxidative stress. supporting healthy blood vessels and aiding in the prevention of further vein damage.

Vitis Vinifera (Grapeseed) Base Oil: Known for its antioxidant and anti-inflammatory properties. grapeseed oil helps improve circulation. reduce swelling. and strengthen veins. making it ideal for varicose veins treatment.

Triticum Vulgare (Wheat Germ) Oil: This oil is rich in vitamins and fatty acids that help nourish and strengthen the skin. promote healthy blood flow. and improve vein elasticity. supporting long-term vein health.

AnnieCare® DiaLeg care phyto cream

Guarantee 1: Suitable for All Stages of Varicose Veins

Of our almost 80.000 users. 98.5% have solved their skin problems perfectly.

Whatever your varicose veins symptoms. you can benefit from this product.

No more swollen or painful veins.

No more worrying about what others think.

No more searching for the nearest cream.

When you start using this product. all these problems will be solved and you will be rejuvenated.

Guarantee 2: Fast and lasting results

You'll start noticing the effects of this natural varicose veins treatment cream quickly. with significant improvements in just 1-2 weeks.

This means you can finally have healthier veins.

Over half of our users have successfully managed their varicose veins and maintained their results for nearly 3 years.

All they did was use this cream. and the results were impressive.

Imagine yourself!

Picture walking with comfort and confidence. feeling fit and healthy.

Guarantee 3: Absolutely first-class customer service

If you join this family. you will never be alone.

I and my team of doctors are always here for you and ready to help you at any time.

If you have any specific questions about the program. we are here to help...

If you are not getting the results you want. let us know and we will do everything we can to help you...

If you feel confused or frustrated. don't feel like a stranger. Reach out to us right away because we're here to support you.

You are now part of the team. and we will do everything we can to ensure your success.

Here's some more real feedback from our satisfied customers


"I no longer fear long periods of standing at work since I started using AnnieCare®. Even after hours of standing service. my legs feel much more relaxed. It has truly changed my workdays. allowing me to be more efficient without pain or discomfort." 
— Emma Carter. 30 60 y/o โญโญโญโญโญ
"Since I started using AnnieCare®. the pain and discomfort in my legs have almost completely vanished. This has allowed me to freely engage in outdoor activities and family gatherings. significantly enhancing my quality of life. It feels like I've regained my freedom!"
James Wilson 41 y/o| โญโญโญโญโญ

1. Apply a generous amount of AnnieCare® DiaLeg care phyto cream to the affected area.

2. Massage gently in circular motions until absorbed.

3. Use 2-3 times a day for best results.

ORIGINALLY ONLY AVAILABLE IN CLINICS

Some of my elders have used it and have seen positive improvements. This alternative can save you over $3000 compared to costly surgical treatment.

In addition. we use an advanced AYURVEDIC formula with Phyto Topical Oil to retain only the most potent components. ensuring its effectiveness in alleviating varicose vein pain and inflammation. Varco Phyto Oil undergoes rigorous quality control. is free of harmful chemicals. and has been extensively proven to be gentle on the skin. making it suitable even for sensitive users. Its natural. hypoallergenic properties ensure that it does not cause irritation or allergic reactions. With Varco Phyto Oil. you can confidently experience fast. effective pain relief while benefiting from its deep moisturizing and healing effects!

Specifications

AnnieCare® DiaLeg care phyto cream  (1/2/4/6/8 boxs)

Origin:London.UK

Shelf life: 3 years

Flysmus® GUARANTEE
๐ŸŒŽ Worldwide Shipping โœˆ  

Please do note that shipping is insured. However. you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! ๐Ÿ˜‰