Help
RSS
API
Feed
Maltego
Contact
Domain > admin.easy.co
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-05-07
151.101.66.236
(
ClassC
)
2025-12-01
3.175.34.5
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Mon, 01 Dec 2025 15:54:20 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://admin.easy.co/X-Cache: Redirect from cloudfrontVia: 1.1 e46509f22800a7c13e2737ab1c5f5990.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: UWv7faa1UCv4aDNzDZulGDWqHBcn-Y6qDrSiS5UtkI7wJLo3WHtboQ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveDate: Mon, 01 Dec 2025 15:54:22 GMTX-XSS-Protection: 1; modeblockX-Content-Type-Options: nosniffVary: Accept-EncodingX-Powered-By: ExpressSet-Cookie: localeen_US; expiresWed, 31 Dec 2025 15:54:21 GMT; Max-Age2592000; path/Set-Cookie: sf_sessioncTVWLYSTPmnX7Goqqg56lAjt7pP9cixKzbplxqkL; path/; domainadmin.easy.co; secure; httponly; samesitelaxSet-Cookie: _landing_page%252F; expiresMon, 15 Dec 2025 15:54:21 GMT; Max-Age1209599; path/; domainadmin.easy.co; secure; httponly; samesitelaxCache-Control: no-cache, no-store, privateX-Cache: Miss from cloudfrontVia: 1.1 8f42534fa1cba6cc97a23ecd9e54c040.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: TvAwvPsUXo1TygYssvFFevNeIKmIKFdLJLMIJKPDS-TzKi7v7BAJEgStrict-Transport-Security: max-age15552000 !doctype html>!--if lt IE 7>html classno-js lt-ie9 lt-ie8 lt-ie7 langen> !endif-->!--if IE 7>html classno-js lt-ie9 lt-ie8 langen> !endif-->!--if IE 8>html classno-js lt-ie9 langen> !endif-->!--if IE 9 >html classie9 no-js> !endif-->!--if (gt IE 9)|!(IE)>!--> html classno-js> !--!endif-->head> !-- Basic page needs --> meta charsetutf-8> meta http-equivX-UA-Compatible contentIEedge,chrome1> link relicon hrefhttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/favicon.png /> !-- Title and description --> title> ADMIN /title> !-- Social meta --> meta propertyog:type contentwebsite> meta propertyog:title contentADMIN> meta propertyog:url contenthttps://admin.easy.co> meta propertyog:image contenthttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/logo.png?width350> meta propertyog:image:secure_url contenthttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/logo.png?width350> meta propertyog:description contentADMIN>meta propertyog:site_name contentADMIN> meta nametwitter:card contentsummary> meta nametwitter:site content@> meta nametwitter:title contentADMIN> meta nametwitter:description content> !-- Helpers --> link relcanonical hrefhttps://admin.easy.co> meta nameviewport contentwidthdevice-width,initial-scale1> meta nametheme-color content> !-- CSS --> link hrefhttps://store-themes.easystore.co/225809/themes/203/assets/timber.css?t1763492621 relstylesheet typetext/css mediascreen /> link hrefhttps://store-themes.easystore.co/225809/themes/203/assets/theme.css?t1763492621 relstylesheet typetext/css mediascreen /> script src//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js typetext/javascript >/script> !-- Header hook for plugins --> !-- ScriptTags -->script>window.__st{p: index, cid: };/script>script src/assets/events.js>/script>script>const __es_ads {country_code:MY ,title: Online store by img srchttps://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg altEasyStore styledisplay: block !important;width:8em;margin:-2px 0 0 8px;> i stylewidth: 1px;height: 25px;margin: 0 10px;background: #E3E7EB;>/i> Create yours for free today.,title_mb: Create online store with img srchttps://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg altEasyStore styledisplay: block !important;width:8em;margin:-2px 8px 0;>,cta: Get started}/script>script src/assets/js/ads/storefront-ads.js>/script>script>(function(){function asyncLoad(){var urls/assets/traffic.js?v1;for(var i0;iurls.length;i++){var sdocument.createElement(script);s.typetext/javascript;s.asynctrue;s.srcurlsi;var xdocument.getElementsByTagName(script)0;x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent(onload, asyncLoad) : window.addEventListener(load, asyncLoad, false);})();/script>!-- /ScriptTags --> !--if lt IE 9>script src//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js typetext/javascript >/script>script srchttps://store-themes.easystore.co/225809/themes/203/assets/respond.min.js?t1763492621 typetext/javascript >/script>link hrefhttps://store-themes.easystore.co/225809/themes/203/assets/respond-proxy.html idrespond-proxy relrespond-proxy />link href//admin.easy.co/search?q560bee1a56e0df3c92bb04ed9496cde4 idrespond-redirect relrespond-redirect />script src//admin.easy.co/search?q560bee1a56e0df3c92bb04ed9496cde4 typetext/javascript>/script>!endif--> script srchttps://store-themes.easystore.co/225809/themes/203/assets/modernizr.min.js?t1763492621 typetext/javascript >/script> script> (function(i,s,o,g,r,a,m){iGoogleAnalyticsObjectr;irir||function(){ (ir.qir.q||).push(arguments)},ir.l1*new Date();as.createElement(o), ms.getElementsByTagName(o)0;a.async1;a.srcg;m.parentNode.insertBefore(a,m) })(window,document,script,https://www.google-analytics.com/analytics.js,ga); ga(create, , auto,myTracker); ga(myTracker.send, pageview); /script> /head>body idadmin classtemplate-index > !-- Snippet:global/body_start: Console Extension -->div ides_console styledisplay: none;>225809/div>!-- /Snippet --> style> .search-modal__form{ position: relative; } .dropdown-wrapper { position: relative; } .dropdown-wrapper:hover .dropdown { display: block; } .dropdown { display: none; position: absolute; top: 100%; left: -20px; width: 100%; padding: 8px 0; margin: 0; background-color: #fff; z-index: 1000; border-radius: 5px; border: 1px solid rgba(var(--color-foreground), 1); border-top: none; overflow-x: hidden; overflow-y: auto; max-height: 350px; min-width: 150px; box-shadow: 0 0 5px rgba(0,0,0,0.1); } .dropdown li,.dropdown a{ display: block; } .dropdown a{ text-decoration: none; padding: 2px 10px; color: #000 !important; } .dropdown-item { padding: 0.4rem 2rem; cursor: pointer; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dropdown-item:hover{ background-color: #f3f3f3; } .search__input.is-focus{ border-radius: 15px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border: 1px solid rgba(var(--color-foreground), 1); border-bottom: none; box-shadow: none; } .clear-all { text-align: right; padding: 0 2rem 0.2rem; line-height: 1; font-size: 70%; margin-bottom: -2px; } .clear-all:hover{ background-color: #fff; } .referral-notification { position: absolute; top: 100%; right: -12px; background: white; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); width: 280px; z-index: 1000; padding: 16px; margin-top: 8px; font-size: 14px; line-height: 1.4; } .referral-notification::before { content: ; position: absolute; top: -8px; right: 20px; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 8px solid white; } .referral-notification::after { content: ; position: absolute; top: -9px; right: 20px; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 8px solid #e0e0e0; } .referral-notification h4 { margin: 0 0 8px 0; color: #2196F3; font-size: 16px; font-weight: 600; } .referral-notification p { margin: 0 0 12px 0; color: #666; } .referral-notification .referral-code { background: #f5f5f5; padding: 8px; border-radius: 4px; font-family: monospace; font-size: 13px; text-align: center; margin: 8px 0; border: 1px solid #ddd; } .referral-notification .close-btn { position: absolute; top: 8px; right: 8px; background: none; border: none; font-size: 18px; color: #999; cursor: pointer; padding: 0; width: 20px; height: 20px; line-height: 1; } .referral-notification .close-btn:hover { color: #333; } .referral-notification .action-btn { background: #2196F3; color: white; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-size: 12px; margin-right: 8px; margin-top: 8px; } .referral-notification .action-btn:hover { background: #1976D2; } .referral-notification .dismiss-btn { background: transparent; color: #666; border: 1px solid #ddd; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-size: 12px; margin-top: 8px; } .referral-notification .dismiss-btn:hover { background: #f5f5f5; } .referral-modal__dialog { transform: translate(-50%, 0); transition: transform var(--duration-default) ease, visibility 0s; z-index: 10000; position: fixed; top: 20vh; left: 50%; width: 100%; max-width: 350px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border-radius: 12px; background-color: #fff; color: #000; padding: 20px; text-align: center; } .modal-overlay.referral-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); z-index: 2001; display: block; opacity: 1; transition: opacity var(--duration-default) ease, visibility 0s; }/style>div classheader-bar> div classwrapper medium-down--hide> div classlarge--display-table> div classheader-bar__left large--display-table-cell> div classheader-bar__module header-bar__search> form action/search methodget classheader-bar__search-form clearfix rolesearch> button typesubmit classbtn icon-fallback-text header-bar__search-submit> span classicon icon-search aria-hiddentrue>/span> span classfallback-text>Search/span> /button> input typesearch nameq value aria-labelSearch classheader-bar__search-input placeholderSearch autocompleteoff> div classdropdown idsearchDropdown>/div> input typehidden namesearch_history idsearch_history> /form>script> var _search_history_listings if(_search_history_listings ! ) localStorage.setItem(searchHistory, JSON.stringify(_search_history_listings)); function clearAll() { localStorage.removeItem(searchHistory); var customer ; if(customer) { // Your logic to clear all data or call an endpoint fetch(/account/search_histories, { method: DELETE, headers: { Content-Type: application/json, X-Requested-With: XMLHttpRequest }, body: JSON.stringify({ _token: eSPX8rKBxEXkiZQbWBujmF2oSTXT7Ot3Rr007rUq }), }) .then(response > response.json()) } } // End - store view history in local storage // search history dropdown var searchInputs document.querySelectorAll(inputtypesearch); if(searchInputs.length > 0) { searchInputs.forEach((searchInput)>{ searchInput.addEventListener(focus, function() { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchDropdown.innerHTML ; // Clear existing items // retrieve data from local storage var searchHistoryData JSON.parse(localStorage.getItem(searchHistory)) || ; // Convert JSON to string var search_history_json JSON.stringify(searchHistoryData); // Set the value of the hidden input searchInput.closest(form).querySelector(#search_history).value search_history_json; // create dropdown items var clearAllItem document.createElement(div); clearAllItem.className dropdown-item clear-all; clearAllItem.textContent Clear; clearAllItem.addEventListener(click, function() { clearAll(); searchDropdown.style.display none; searchInput.classList.remove(is-focus); }); searchDropdown.appendChild(clearAllItem); // create dropdown items searchHistoryData.forEach(function(item) { var dropdownItem document.createElement(div); dropdownItem.className dropdown-item; dropdownItem.textContent item.term; dropdownItem.addEventListener(click, function() { searchInput.value item.term; searchDropdown.style.display none; }); searchDropdown.appendChild(dropdownItem); }); if(searchHistoryData.length > 0){ // display the dropdown searchInput.classList.add(is-focus); document.body.classList.add(search-input-focus); searchDropdown.style.display block; } }); searchInput.addEventListener(focusout, (event) > { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchInput.classList.remove(is-focus); searchDropdown.classList.add(transparent); setTimeout(()>{ searchDropdown.style.display none; searchDropdown.classList.remove(transparent); document.body.classList.remove(search-input-focus); }, 400); }); }) } // End - search history dropdown/script> /div> /div> div classheader-bar__right large--display-table-cell> ul classheader-bar__module header-bar__module--list styleposition: relative;> li> a href/account/login>Log in/a> /li>li>OR/li> li> a href/account/register>Create account/a> /li> !-- Referral Notification Popup for Desktop --> div idreferralNotification classreferral-notification styledisplay: none;> button classclose-btn onclickdismissReferralNotification()>×/button> div styletext-align: center; margin-bottom: 16px;> div stylewidth: 100px; height: 100px; margin: 0 auto;> img srchttps://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg> /div> /div> p idreferralSignupMessage styletext-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;> Your friend gifted you credit! Sign up now to redeem. /p> div styletext-align: center;> button classbtn onclickgoToSignupPage() stylewidth: 100%; color: #fff;> Sign Up /button> /div> /div> /ul> div classheader-bar__module> span classheader-bar__sep aria-hiddentrue>/span> a href/cart classcart-page-link> span classicon icon-cart header-bar__cart-icon aria-hiddentrue>/span> /a> /div> div classheader-bar__module> a href/cart classcart-page-link> Cartspan classhidden-count>:/span> span classcart-count header-bar__cart-count hidden-count>0/span> /a> /div> /div> /div> /div> div classwrapper large--hide stylepadding: 5px 30px 0;> button typebutton classmobile-nav-trigger idMobileNavTrigger> span classicon icon-hamburger aria-hiddentrue>/span> Menu /button> !-- Referral Notification Modal for Mobile --> details-modal classreferral-modal idreferralMobileModal> details> summary classreferral-modal__toggle aria-haspopupdialog aria-labelOpen referral modal styledisplay: none;> /summary> div classmodal-overlay referral-modal-overlay>/div> div classreferral-modal__dialog roledialog aria-modaltrue aria-labelReferral notification> div classreferral-modal__content> button typebutton classmodal__close-button aria-labelClose onclickcloseMobileReferralModal() styleposition: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;> × /button> div stylemargin-bottom: 24px;> div stylewidth: 120px; height: 120px; margin: 0 auto 20px;> img srchttps://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg stylewidth: 100%; height: 100%;> /div> /div> p idreferralSignupMessageMobile stylefont-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;> Your friend gifted you credit! Sign up now to redeem. /p> button typebutton classbtn onclickgoToSignupPageFromMobile() stylewidth: 100%; color: #fff;> Sign Up /button> /div> /div> /details> /details-modal> a href/cart classcart-page-link mobile-cart-page-link> span classicon icon-cart header-bar__cart-icon aria-hiddentrue>/span> Cart span classcart-count hidden-count>0/span> /a> div classmobile-cart-page-link stylemargin-right: 20px;> /div> /div> ul idMobileNav classmobile-nav large--hide> li classmobile-nav__link> div classheader-bar__module header-bar__search> form action/search methodget classheader-bar__search-form clearfix rolesearch> button typesubmit classbtn icon-fallback-text header-bar__search-submit> span classicon icon-search aria-hiddentrue>/span> span classfallback-text>Search/span> /button> input typesearch nameq value aria-labelSearch classheader-bar__search-input placeholderSearch autocompleteoff> div classdropdown idsearchDropdown>/div> input typehidden namesearch_history idsearch_history> /form>script> var _search_history_listings if(_search_history_listings ! ) localStorage.setItem(searchHistory, JSON.stringify(_search_history_listings)); function clearAll() { localStorage.removeItem(searchHistory); var customer ; if(customer) { // Your logic to clear all data or call an endpoint fetch(/account/search_histories, { method: DELETE, headers: { Content-Type: application/json, X-Requested-With: XMLHttpRequest }, body: JSON.stringify({ _token: eSPX8rKBxEXkiZQbWBujmF2oSTXT7Ot3Rr007rUq }), }) .then(response > response.json()) } } // End - store view history in local storage // search history dropdown var searchInputs document.querySelectorAll(inputtypesearch); if(searchInputs.length > 0) { searchInputs.forEach((searchInput)>{ searchInput.addEventListener(focus, function() { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchDropdown.innerHTML ; // Clear existing items // retrieve data from local storage var searchHistoryData JSON.parse(localStorage.getItem(searchHistory)) || ; // Convert JSON to string var search_history_json JSON.stringify(searchHistoryData); // Set the value of the hidden input searchInput.closest(form).querySelector(#search_history).value search_history_json; // create dropdown items var clearAllItem document.createElement(div); clearAllItem.className dropdown-item clear-all; clearAllItem.textContent Clear; clearAllItem.addEventListener(click, function() { clearAll(); searchDropdown.style.display none; searchInput.classList.remove(is-focus); }); searchDropdown.appendChild(clearAllItem); // create dropdown items searchHistoryData.forEach(function(item) { var dropdownItem document.createElement(div); dropdownItem.className dropdown-item; dropdownItem.textContent item.term; dropdownItem.addEventListener(click, function() { searchInput.value item.term; searchDropdown.style.display none; }); searchDropdown.appendChild(dropdownItem); }); if(searchHistoryData.length > 0){ // display the dropdown searchInput.classList.add(is-focus); document.body.classList.add(search-input-focus); searchDropdown.style.display block; } }); searchInput.addEventListener(focusout, (event) > { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchInput.classList.remove(is-focus); searchDropdown.classList.add(transparent); setTimeout(()>{ searchDropdown.style.display none; searchDropdown.classList.remove(transparent); document.body.classList.remove(search-input-focus); }, 400); }); }) } // End - search history dropdown/script> /div> /li> li classmobile-nav__link aria-haspopuptrue> a href/ classmobile-nav> Home /a> /li> li classmobile-nav__link aria-haspopuptrue> a href/collections/all classmobile-nav> Catalog /a> /li> li classmobile-nav__link aria-haspopuptrue> a href/blogs/blog classmobile-nav> Blog /a> /li> li classmobile-nav__link> a href/account/login>Log in/a> /li> li classmobile-nav__link> a href/account/register>Create account/a> /li> /ul>/div>script> // referral notification popup const referralMessageTemplate Your friend gifted you __CURRENCY_CODE__ __CREDIT_AMOUNT__ credit! Sign up now to redeem.; const shopPrefix RM; function getCookie(name) { const value `; ${document.cookie}`; const parts value.split(`; ${name}`); if (parts.length 2) return parts.pop().split(;).shift(); return null; } function removeCookie(name) { document.cookie `${name}; expiresThu, 01 Jan 1970 00:00:00 UTC; path/;`; } function showReferralNotification() { const referralCode getCookie(customer_referral_code); const customerReferralCode null; const activeReferralCode referralCode || customerReferralCode; const referralData JSON.parse(localStorage.getItem(referral_notification_data)) || {}; if (referralData.timestamp && referralData.expirationDays) { const expirationTime referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000); if (Date.now() > expirationTime) { localStorage.removeItem(referral_notification_data); return; } } if (referralData.dismissed) return; if (activeReferralCode) { if (referralData.creditAmount) { displayReferralNotification(referralData.creditAmount); } else { fetchReferralCampaignData(activeReferralCode); } } } function fetchReferralCampaignData(referralCode) { fetch(`/customer/referral_program/campaigns/${referralCode}`) .then(response > { if (!response.ok) { throw new Error(Network response was not ok); } return response.json(); }) .then(data > { let refereeCreditAmount null; if (data.data.campaign && data.data.campaign.referral_rules) { const refereeRule data.data.campaign.referral_rules.find(rule > rule.target_type referee && rule.event_name customer/create && rule.entitlement && rule.entitlement.type credit ); if (refereeRule) { refereeCreditAmount refereeRule.entitlement.amount; } } const referralData JSON.parse(localStorage.getItem(referral_notification_data)) || {}; referralData.creditAmount refereeCreditAmount; referralData.dismissed referralData.dismissed || false; referralData.timestamp Date.now(); referralData.expirationDays 3; localStorage.setItem(referral_notification_data, JSON.stringify(referralData)); displayReferralNotification(refereeCreditAmount); }) .catch(error > { removeCookie(customer_referral_code); }); } function displayReferralNotification(creditAmount null) { const isMobile innerWidth 749; if (isMobile) { const mobileModal document.querySelector(#referralMobileModal details); const mobileMessageElement document.getElementById(referralSignupMessageMobile); if (mobileModal && mobileMessageElement) { if (creditAmount) { const finalMessage referralMessageTemplate .replace(__CREDIT_AMOUNT__, creditAmount) .replace(__CURRENCY_CODE__, shopPrefix); mobileMessageElement.textContent finalMessage; } mobileModal.setAttribute(open, ); } } else { const notification document.getElementById(referralNotification); if (notification) { if (creditAmount) { const messageElement document.getElementById(referralSignupMessage); if (messageElement) { const finalMessage referralMessageTemplate .replace(__CREDIT_AMOUNT__, creditAmount) .replace(__CURRENCY_CODE__, shopPrefix); messageElement.textContent finalMessage; } } notification.style.display block; } } } showReferralNotification(); addEventListener(beforeunload, function() { const referralData JSON.parse(localStorage.getItem(referral_notification_data)) || {}; if (referralData.creditAmount ! undefined) { referralData.creditAmount null; localStorage.setItem(referral_notification_data, JSON.stringify(referralData)); } }); function closeReferralNotification() { const notification document.getElementById(referralNotification); if (notification) { notification.style.display none; } } function dismissReferralNotification() { const referralData JSON.parse(localStorage.getItem(referral_notification_data)) || {}; referralData.dismissed true; referralData.timestamp referralData.timestamp || Date.now(); referralData.expirationDays referralData.expirationDays || 3; localStorage.setItem(referral_notification_data, JSON.stringify(referralData)); closeReferralNotification(); } function goToSignupPage() { location.href /account/register; dismissReferralNotification(); } function closeMobileReferralModal() { const mobileModal document.querySelector(#referralMobileModal details); if (mobileModal) { mobileModal.removeAttribute(open); } const referralData JSON.parse(localStorage.getItem(referral_notification_data)) || {}; referralData.dismissed true; referralData.timestamp referralData.timestamp || Date.now(); referralData.expirationDays referralData.expirationDays || 3; localStorage.setItem(referral_notification_data, JSON.stringify(referralData)); } function goToSignupPageFromMobile() { location.href /account/register; closeMobileReferralModal(); } // End - referral notification popup/script> header classsite-header rolebanner> div classwrapper> div classgrid--full> div classgrid__item> h1 classsite-header__logo itemscope itemtypehttp://schema.org/Organization> a href/ classlogo-wrapper itempropurl> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/logo.png?width350 altADMIN itemproplogo> /a> /h1> p classheader-message large--hide> small>/small> /p> /div> /div> div classgrid--full medium-down--hide> div classgrid__item> ul classsite-nav idAccessibleNav> li classsite-nav--active> a href/ classsite-nav__link>Home/a> /li> li > a href/collections/all classsite-nav__link>Catalog/a> /li> li > a href/blogs/blog classsite-nav__link>Blog/a> /li> /ul> /div> /div> /div> /header> main classwrapper main-content rolemain> div classgrid> div classgrid__item> div classflexslider> ul classslides> li> a href classslide-link> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/slider1.png?width1500 alt class /> /a> /li> li> a href classslide-link> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/slider2.png?width1500 alt class /> /a> /li> /ul>/div> hr classhr--small hr--clear> div classgrid-uniform> link href/assets/theme-onboarding.css relstylesheet typetext/css mediascreen /> div classgrid__item> div classhelper-section> div classhelper-note> h3>Almost there.../h3> p>You havent added any products to your store yet. a hrefhttps://admin.easystore.co/products/new>Add a product/a> to feature on homepage collection to have it displayed here./p> p>a classadmin-btn-primary hrefhttp://cp.easystore.co/products/new>Add a Product/a>/p> /div> div classgrid-uniform helper-content> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-201-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 1/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-202-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 2/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-203-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 3/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-204-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 4/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-205-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 5/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-206-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 6/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-207-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 7/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-208-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 8/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-201-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 1/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-202-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 2/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-203-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 3/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-204-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 4/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-205-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 5/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-206-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 6/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-207-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 7/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> div classgrid__item one-half large--one-quarter> a hrefhttp://cp.easystore.co/products/ classgrid-link> span classgrid-link__image grid-link__image--product> span classgrid-link__image-centered> img srchttps://s3-ap-southeast-1.amazonaws.com/eesb.themes/onboarding/prisme/product-208-g.jpg alt class /> /span> /span> p classgrid-link__title>Product Title 8/p> p classgrid-link__meta> strong>span classmoney>RM 19.99 /span>/strong> /p> /a> /div> /div> /div> /div> /div> /div> /div> /main> footer classsite-footer small--text-center rolecontentinfo> div classwrapper> div classgrid-uniform> div classgrid__item large--one-half medium--one-half> h4>Quick Links/h4> ul classsite-footer__links> li>a href/a/contact-form >Contact us/a>/li> /ul> /div> div classgrid__item large--one-half medium--one-half> h4>Follow Us/h4> ul classinline-list social-icons> li> a classicon-fallback-text hrefhttps://twitter.com/ titleADMIN on Twitter target_blank> span classicon icon-twitter aria-hiddentrue>/span> span classfallback-text>Twitter/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.facebook.com/ titleADMIN on Facebook target_blank> span classicon icon-facebook aria-hiddentrue>/span> span classfallback-text>Facebook/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.pinterest.com/ titleADMIN on Pinterest target_blank> span classicon icon-pinterest aria-hiddentrue>/span> span classfallback-text>Pinterest/span> /a> /li> li> a classicon-fallback-text hrefhttps://plus.google.com/ titleADMIN on Google Plus relpublisher target_blank> span classicon icon-google_plus aria-hiddentrue>/span> span classfallback-text>Google/span> /a> /li> li> a classicon-fallback-text hrefhttps://instagram.com/ titleADMIN on Instagram target_blank> span classicon icon-instagram aria-hiddentrue>/span> span classfallback-text>Instagram/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.tumblr.com/ titleADMIN on Tumblr target_blank> span classicon icon-tumblr aria-hiddentrue>/span> span classfallback-text>Tumblr/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.youtube.com/ titleADMIN on YouTube target_blank> span classicon icon-youtube aria-hiddentrue>/span> span classfallback-text>YouTube/span> /a> /li> li> a classicon-fallback-text hrefhttps://vimeo.com/ titleADMIN on Vimeo target_blank> span classicon icon-vimeo aria-hiddentrue>/span> span classfallback-text>Vimeo/span> /a> /li> /ul> /div> /div> hr classhr--small hr--clear> div classgrid> div classgrid__item text-center> p classsite-footer__links>Copyright © 2025 ADMIN. E-commerce Powered by a hrefhttps://www.easystore.co/?localeen_US>EasyStore/a>/p> p classsite-footer__links> a href/legal/terms-of-service>Terms of Service/a> | a href/legal/privacy-policy>Privacy Policy/a> | a href/legal/refund-policy>Refund Policy/a> /p> /div> /div> /div> /footer> script srchttps://store-themes.easystore.co/225809/themes/203/assets/jquery.flexslider.min.js?t1763492621 typetext/javascript >/script> !-- Testing slick slider --> !-- script typetext/javascript src//cdn.jsdelivr.net/jquery.slick/1.5.9/slick.min.js>/script> --> script typetext/javascript> // $(document).ready(function(){ // $(.flexslider .slides).slick({ // dots: true // }); // }); window.timberSlider window.timberSlider || {}; timberSlider.cacheSelectors function () { timberSlider.cache { // Home Page $slider: $(.flexslider) } }; timberSlider.init function () { timberSlider.cacheSelectors(); timberSlider.sliders(); }; timberSlider.sliders function () { var $slider timberSlider.cache.$slider, sliderArgs { animation: slide, animationSpeed: 500, pauseOnHover: true, keyboard: false, slideshow: 1, slideshowSpeed: 3000, controlNav: 1, smoothHeight: false, touch: true, }; if ($slider.length) { if ($slider.find(li).length 1) { sliderArgs.slideshow false; sliderArgs.slideshowSpeed 0; sliderArgs.controlNav false; sliderArgs.directionNav false; } $slider.flexslider(sliderArgs); } }; // Initialize slider on docready $(window).on(load, function() { timberSlider.init(); }); /script> script srchttps://store-themes.easystore.co/225809/themes/203/assets/fastclick.min.js?t1763492621 typetext/javascript >/script> script srchttps://store-themes.easystore.co/225809/themes/203/assets/timber.js?t1763492621 typetext/javascript >/script> script srchttps://store-themes.easystore.co/225809/themes/203/assets/theme.js?t1763492621 typetext/javascript >/script> script src/assets/currencies.js typetext/javascript >/script>script src/assets/jquery.currencies.min.js typetext/javascript >/script>script src/assets/currencies_format.js typetext/javascript >/script>script>Currency.format money_with_currency_format;var shopCurrency MYR;var selectedCurrency MYR; Currency.convert function(amount, from, to) { return amount; }; if( $.cookie(currency) null ){ if( selectedCurrency ! false ) { Currency.convertAll(shopCurrency, selectedCurrency); jQuery(.selected-currency).text(Currency.currentCurrency); }}/* Sometimes merchants change their shop currency, lets tell our JavaScript file */// Currency.moneyFormatsshopCurrency.money_with_currency_format ;// Currency.moneyFormatsshopCurrency.money_format RM {{amount}} ; /* Default currency */var defaultCurrency MYR; /* Cookie currency */var cookieCurrency Currency.cookie.read(); cookieCurrency shopCurrency;$(inputnamecurrent_currency).val(cookieCurrency);if(cookieCurrency null){ cookieCurrency shopCurrency; Currency.cookie.write(shopCurrency);}/* Fix for customer account pages */jQuery(span.money span.money).each(function() { jQuery(this).parents(span.money).removeClass(money);});/* Saving the current price */jQuery(span.money).each(function() { jQuery(this).attr(data-currency-MYR, jQuery(this).html());});// If theres no cookie.if (cookieCurrency null) { if (shopCurrency ! defaultCurrency) { Currency.convertAll(shopCurrency, defaultCurrency); } else { Currency.currentCurrency defaultCurrency; }}// If the cookie value does not correspond to any value in the currency dropdown.else if (jQuery(namecurrencies).size() && jQuery(namecurrencies optionvalue + cookieCurrency + ).size() 0) { Currency.currentCurrency shopCurrency; Currency.cookie.write(shopCurrency);}else if (cookieCurrency shopCurrency) { Currency.currentCurrency shopCurrency; Currency.convertAll(shopCurrency, cookieCurrency);}else { Currency.convertAll(shopCurrency, cookieCurrency);}jQuery(namecurrencies).val(Currency.currentCurrency).change(function() { var newCurrency jQuery(this).val(); Currency.cookie.write(newCurrency) if (index cart) { const params new URLSearchParams(window.location.search); params.set(delete_cache, 1); window.location.search params; } else { window.location.reload(); } });var original_selectCallback window.selectCallback;var selectCallback function(variant, selector) { var currencies null; original_selectCallback(variant, selector); if(typeof jQuery(namecurrencies).val() undefined){ currencies shopCurrency; } else{ currencies jQuery(namecurrencies).val(); } Currency.convertAll(shopCurrency, currencies); jQuery(.selected-currency).text(Currency.currentCurrency);};$(body).on(ajaxCart.afterCartLoad, function(cart) { Currency.convertAll(shopCurrency, jQuery(namecurrencies).val()); jQuery(.selected-currency).text(Currency.currentCurrency); });jQuery(.selected-currency).text(Currency.currentCurrency);/script>script> /* ------ Events ------ pages/viewed customers/signup customers/login products/searched collections/viewed products/viewed products/shared wishlists/item_added carts/items_added carts/viewed carts/item_removed checkouts/initiated checkouts/shipping_info_added checkouts/payment_info_added checkouts/completed orders/placed orders/purchased payments/captured payments/failed */ window.__latest_cart window.__latest_cart || null; const _selector document.querySelector.bind(document), _selectorAll document.querySelectorAll.bind(document) document.addEventListener(DOMContentLoaded, (event) > { const default_currency getCookie(currency) const customer_id window.__st.cid const template window.__st.p onPageView() //-----------------------// // Configs // //-----------------------// window.dataLayer window.dataLayer || Array.prototype.last Array.prototype.last || function() { return thisthis.length - 1 || null } Array.prototype.first Array.prototype.first || function() { return this0 || null } //----------------------// // Triggers // //----------------------// const XHR window.XMLHttpRequest function xhr() { const xhr new XHR() xhr.addEventListener(readystatechange, function() { if(xhr.readyState ! 4) return try { const response_url xhr.responseURL if (response_url.includes(cart/add)) { window.__latest_cart JSON.parse(xhr.response) onCartItemsAdded() // ok } if (response_url.includes(cart/remove_item_quantity)) { window.__latest_cart JSON.parse(xhr.response) onCartItemRemoved() // ok } if (response_url.includes(new_cart?retrievetrue)) { result JSON.parse(xhr.response) if (result.cart) { window.__latest_cart result.cart } } } catch(e) { console.error(e) } }, false); return xhr } window.XMLHttpRequest xhr switch(template) { case cart: onCartView() // ok break case product: onProductView() // ok break case collection: onCollectionView() // ok break case blog: onBlogView() break case article: onArticleView() break case payment_completed: onOrderPlace() break case payment_fail: onPaymentFail() break } // _selector(formaction/checkout/payments).addEventListener(submit, onPaymentInfoAdded(_selector(formaction/checkout/payments))) if (_selector(formaction/checkout/detail)) _selector(formaction/checkout/detail).addEventListener(submit, ()>{onShippingInfoAdded(_selector(formaction/checkout/detail))}) // ok if (_selector(formaction/checkout/shipping)) _selector(formaction/checkout/shipping).addEventListener(submit, ()>{onShippingInfoAdded(_selector(formaction/checkout/shipping))}) // ok if (_selector(formaction/account/register)) _selector(formaction/account/register).addEventListener(submit, onSignUp) // ok if (_selector(formaction/account/login)) _selector(formaction/account/login).addEventListener(submit, onLogin) // ok if (_selector(formaction/search)) _selector(formaction/search).addEventListener(submit, onProductSearch()) // ok if (_selector(#line-login-btn)) _selector(#line-login-btn).addEventListener(click, onLineLogin) // ok if (_selector(#PlaceOrder)) _selector(#PlaceOrder).addEventListener(click, ()>{onCheckoutComplete(_selector(formaction/checkout/payments))}); // ok if (_selector(#add_wishlist)) _selector(#add_wishlist).addEventListener(click, onWishlistItemAdded) // ok if (_selectorAll(ahref/account/logout)) _selectorAll(ahref/account/logout).forEach(logoutButton > logoutButton.addEventListener(click, onLogout)) // ok if (_selector(.CartDrawerTrigger.cart-page-link)) _selector(.CartDrawerTrigger.cart-page-link).addEventListener(click, onCartView) // ok if (_selector(.CartDrawerTrigger.cart-page-link.mobile-cart-page-link)) _selector(.CartDrawerTrigger.cart-page-link.mobile-cart-page-link).addEventListener(click, onCartView) // ok if (_selectorAll(aclass^share-)) _selectorAll(aclass^share-).forEach(shareButton > shareButton.addEventListener(click, ()>{onProductShare(shareButton)}) ) // ok if (_selectorAll(name$checkout)) _selectorAll(name$checkout).forEach(checkoutButton > checkoutButton.addEventListener(click, onCheckoutInitiate)) // For append elements const bodyMutationObserver new MutationObserver(() > { if (_selector(#form__spc #PlaceOrder)) _selector(#form__spc #PlaceOrder).addEventListener(click, onSinglePageCheckout) // ok if (_selectorAll(name$checkout)) _selectorAll(name$checkout).forEach(checkoutButton > checkoutButton.addEventListener(click, onCheckoutInitiate)) }); bodyMutationObserver.observe(_selector(body), {subtree: true, childList: true}); //------------------------------// // Event handlers // //------------------------------// function onPageView() { EasyStore.Event.dispatch(pages/viewed, { page: { type: template, title: document.title, description: _selector(metanamedescription) ? _selector(metanamedescription).getAttribute(content) : null, url: location.href, } }) } function onSignUp() { const email_regex new RegExp(/^a-zA-Z0-9.!#$%&*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)*$/) const phone_regex new RegExp(/^(\+?6?01)0-46-9-*0-9{7,8}$/) const email_or_phone _selector(`inputnamecustomeremail_or_phone`).value.replace(+, ).replace(/\s+/, ) let data {} if (email_regex.test(email_or_phone)) { data.method email data.email email_or_phone } if (phone_regex.test(email_or_phone)) { data.method phone data.phone email_or_phone } if (!data.method) return EasyStore.Event.dispatch(customers/signup, data) } function onLogin() { const email_regex new RegExp(/^a-zA-Z0-9.!#$%&*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)*$/) const phone_regex new RegExp(/^(\+?6?01)0-46-9-*0-9{7,8}$/) const email_or_phone _selector(`inputnamecustomeremail_or_phone`).value.replace(+, ).replace(/\s+/, ) let data {} if (email_regex.test(email_or_phone)) { data.method email data.email email_or_phone } if (phone_regex.test(email_or_phone)) { data.method phone data.phone email_or_phone } if (!data.method) return EasyStore.Event.dispatch(customers/login, data) } function onLineLogin() { EasyStore.Event.dispatch(customers/login, { method: line }) } function onLogout() { EasyStore.Event.dispatch(customers/logout, { customer_id }) } function onBlogView() { const blog EasyStore.Event.dispatch(blogs/viewed, { blog }) } function onArticleView() { const article EasyStore.Event.dispatch(articles/viewed, { article }) } function onProductSearch() { const query _selector(inputnameq).value if (!query) return EasyStore.Event.dispatch(products/searched, { query }) } function onCollectionView() { const collection {id:349238,handle:feature-on-homepage,name:Feature on homepage,title:Feature on homepage,url:\/collections\/feature-on-homepage,description:,content:,featured_image:{src:null},products:,sort_by:featured} EasyStore.Event.dispatch(collections/viewed, { collection }) } function onProductView() { const product EasyStore.Event.dispatch(products/viewed, { product }) } function onProductShare(el) { const product const channel el.getAttribute(class).split(-).last() EasyStore.Event.dispatch(products/shared, { product, channel }) } function onWishlistItemAdded() { let product const quantity _selector(#Quantity).value EasyStore.Event.dispatch(wishlists/item_added, { product }) } async function onCartItemsAdded() { const cart await getCart() if(cart && cart.items ! undefined && cart.items.length > 0) { EasyStore.Event.dispatch(carts/item_added, { cart }) } } async function onCartView() { const cart await getCart() EasyStore.Event.dispatch(carts/viewed, { cart }) } async function onCartItemRemoved() { const cart await getCart() cart.items if(cart) { EasyStore.Event.dispatch(carts/item_removed, { cart }) } } async function onCheckoutInitiate() { const cart await getCart() EasyStore.Event.dispatch(checkouts/initiated, { cart }) } async function onShippingInfoAdded(form) { let checkout getCheckout() let form_data {} new FormData(form).forEach((value, key) > form_datakey value) let shipping_tier null if (form_data.type && form_data.type.startsWith(r_pickup)) { shipping_tier `Pickup - ${form_data.pick_location}` } if (form_data.s_id) { shipping_tier _selector(`inputid`+form_data.s_id+``).getAttribute(data-shipping-name) } if (!shipping_tier) return EasyStore.Event.dispatch(checkouts/shipping_info_added, { checkout, shipping_tier }) } async function onPaymentInfoAdded(form) { let checkout getCheckout() let payment_type new FormData(form).get(payment_method) EasyStore.Event.dispatch(checkouts/payment_info_added, { checkout, payment_type }) } async function onOrderPlace() { let cart_token getCookie(cart_js) let previous_cart_token getCookie(previous_cart_ga4_js) if (previous_cart_token && previous_cart_token cart_token) { // Prevent duplicate purchase tracking return } let order getOrder() EasyStore.Event.dispatch(orders/placed, { order }) if(order.is_manual_payment) { EasyStore.Event.dispatch(orders/purchased, { order }) } const last_transaction order.transactions.last() if (last_transaction.status) { EasyStore.Event.dispatch(orders/purchased, { order }) EasyStore.Event.dispatch(payments/captured, { order }) } } async function onPaymentFail() { const order getOrder() EasyStore.Event.dispatch(payments/failed, { order }) } async function onCheckoutComplete(form) { onPaymentInfoAdded(form) const checkout getCheckout() EasyStore.Event.dispatch(checkouts/completed, { checkout }) } async function onSinglePageCheckout() { // let checkout $(data-app-checkout).data(app-checkout) let checkout getCheckout() // const payment_type _selector(#app_spc_payment_method).find(`class*label-content`).first().find(b).first().text() const payment_type _selector(#app_spc_payment_method).getElementsByClassName(label-content)0.getElementsByTagName(b)0.innerHTML const shipping_method _selector(#delivery_method).value let shipping_tier null let app_spc_customer_info_label _selector(#app_spc_customer_info).getElementsByClassName(label-content) if (shipping_method shipping) { shipping_tier app_spc_customer_info_labelapp_spc_customer_info_label.length - 1.getElementsByTagName(b)0.innerHTML } if (shipping_method pickup) { shipping_tier app_spc_customer_info_label0.innerHTML } if (shipping_tier) { EasyStore.Event.dispatch(checkouts/shipping_info_added, { checkout, shipping_tier, }) } if (payment_type) { EasyStore.Event.dispatch(checkouts/payment_info_added, { checkout, payment_type, }) } EasyStore.Event.dispatch(checkouts/completed, { checkout }) } }) //-----------------------// // Functions // //-----------------------// function getCookie(name) { name + decodedCookie decodeURIComponent(document.cookie) ca decodedCookie.split(;) for(i 0; i ca.length; i++) { c cai while (c.charAt(0) ) { c c.substring(1) } if (c.indexOf(name) 0) { return c.substring(name.length, c.length) } } return } const parsePrice price > { if(typeof price string) { return parseFloat(price.split(,).join()) } return price } const requestCart async (method, data) > { let response await fetch(/cart.json, {method: GET,headers: {Content-Type: application/json}}) result await response.json() return result.cart } const getCart async (latest false) > { let cart window.__latest_cart const cart_invalid !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) if(latest || cart_invalid) { cart await requestCart() } cart.items cart.items || return mapCart(cart) } const getCheckout async () > { mapCheckout(window.__latest_cart || await requestCart()) } const getOrder async () > { mapOrder(window.__latest_cart || await requestCart()) } //-----------------------// // Mappers // //-----------------------// const fallbackAttribute (object, attribute) > { if(!Array.isArray(attribute)) { attribute attribute } let final_value null do { final_value objectattribute.shift() } while(!final_value && attribute.length) return final_value } const map (object, mapper) > { const newObject {} for(const key in mapper) { // Handle different keys between new and old format newObjectkey fallbackAttribute(object, mapperkey) // Cast price to float if(newObjectkey && price, amount, discount, discounts.some(x > key.endsWith(x))) { newObjectkey parsePrice(newObjectkey) } if(newObjectkey undefined) { delete newObjectkey } } return newObject } const mapCart cart > { const oldCart cart const mapper { id: id, currency: currency, item_count: item_count, items: items, total_price: total_price, latest_items: latest_items } cart map(cart, mapper) const discounts (oldCart.storewide_discounts || ).concat((oldCart.voucher_discounts || )) cart.discount_applications discounts.map(discount > ({ title: discount.voucher_code || null, value: parsePrice(discount.amount), })) cart.original_total_price cart.items.length ? cart.items .map(item > item.original_price) .reduce((sum, price) > sum + price) : 0 cart.total_discount cart.discount_applications.length ? cart.discount_applications .map(discount > parsePrice(discount.value)) .reduce((sum, value) > sum + value) : 0 cart.items cart.items.map(item > mapLineItem(item)) return cart } const mapCheckout checkout > { const mapper { note: note, attributes: note_attributes, billing_address: billing_address, currency: currency, customer_id: customer_id, discounts_amount: total_discount, id: id, line_items: order_item, order_number: order_number, shipping_address: shipping_address, shipping_price: shipping_tax, shipping_method: shipping_method_name, tax_price: total_tax, } checkout map(checkout, mapper) checkout.requires_shipping checkout.line_items.some(item > item.shipping_required) checkout.line_items checkout.line_items.map(item > mapLineItem(item)) return checkout } const mapOrder order > { const mapper { attributes: note_attributes, billing_address: billing_address, cancelled: is_cancelled, cancelled_at: cancelled_at, created_at: created_at, customer_id: customer_id, // discount_applications: discount_applications, email: email, financial_status: financial_status, fulfillment_status: fulfillment_status, line_items: order_item, note: note, order_number: order_number, phone: phone, shipping_address: shipping_address, shipping_methods: shipping_methods, shipping_price: total_shipping, subtotal_price: subtotal_price, // tax_lines: tax_lines, tax_price: total_tax, total_discounts: total_discount, total_net_amount: total_amount_include_transaction, total_price: total_price, transactions: transaction_records, is_manual_payment: is_manual_payment, } order.email order.billing_address.email order.phone order.billing_address.phone order.shipping_method order.shipping_method_name order map(order, mapper) order.line_items order.line_items.map(item > mapLineItem(item)) order.transactions order.transactions.map(transaction > mapTransaction(transaction)) return order } const mapLineItem line_item > { const old_line_item line_item const mapper { final_price: price, image: img_url, message: message, original_line_price: original_line_price, original_price: original_price, properties: properties, quantity: quantity, requires_shipping: shipping_required, sku: sku, taxable: taxable, title: product_name, product_name: product_name, url: url, product_id: product_id, variant_id: variant_id, id: id, i_id, } line_item map(line_item, mapper) line_item.product_id line_item.product_id || (old_line_item.product && old_line_item.product.id) || null line_item.variant_id line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null line_item.image line_item.image || (old_line_item.image && old_line_item.image.url) || null return line_item } const mapTransaction transaction > { const mapper { amount: amount, created_at: created_at, gateway: gateway_type, id: id, status: status, } transaction map(transaction, mapper) return transaction }/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]