Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured
Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured

Polarized Sunglasses for Men and Women Matte Finish Sun glasses Color Mirror Lens UV Blocking (3 Pack) Black/Green Blue/Orange Multicoloured

94270 sold
$15.99
$55.00
-$39.01
Color-Black/Tortoise Black/Gradient Brown
Please select a color
Lens Color-Multicoloured
Please select a lens color
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments
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: "快捷支付按钮是否展示还取决于买家使用的浏览器以及商品的货币、金额", } }; 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.", } }; 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-10'); 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-10') 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); } } }, 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-10'); const coreData = function () { const {getProduct} = dom.commonUtils; let productDetail = getProduct(); let productPrice = productDetail?.selected?.price || 15.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-10` } 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-10') const businessUtils = function () { const {track, isChrome, isSafari, req, isPreview, multiply} = dom.commonUtils; const {getProductPrice, containerDomId, ecGlobalVarEnums} = dom.coreData; const listeningProductData = { product_id: "", variant_id: "", quantity: 1, properties: {}, } const { channelEnums, shopCurrencyCode, isRequiresShipping, getProductDetail, setShowChannel, setBlockChannel, setSdkErrorList, setExtraChannelList, setDisabledChannelList, setPaymentChannelList, getExpressCheckoutList } = dom.coreData; const _businessUtils = { listeningProductData, 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() { const themeFormData = {}; const formDOM = dom.closest("form"); if (formDOM) { 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; }, setListeningProductData(data) { const _selling_plan_option_id = _businessUtils.getSubscriptionId() listeningProductData.product_id = data?.product_id || data?.product?.id || listeningProductData?.product_id || ''; listeningProductData.variant_id = data?.variant_id || data?.variant?.id || data?.selected?.id || listeningProductData?.variant_id || ''; listeningProductData.quantity = data?.quantity || data?.qty || listeningProductData?.quantity || 1; listeningProductData.properties = { _selling_plan_option_id, ...listeningProductData?.properties, ...(data?.properties || {}), }; return listeningProductData; }, getProductFormData() { const themeFormData = _businessUtils.getThemeFormData() return [{ ...themeFormData, note: themeFormData?.note || "", product_id: themeFormData?.product_id || listeningProductData?.product_id || "", variant_id: themeFormData?.variant_id || listeningProductData?.variant_id || "", quantity: themeFormData?.quantity || listeningProductData?.quantity || 1, // 与主题确认,只以一个为准,防止form不存在的数据仍被传递 properties: themeFormData?.properties || listeningProductData?.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', 'Wind', 'Flash', 'Hero']; 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},监听-${listeningProductData?.properties?._selling_plan_option_id},默认-${defaultID}`); if (formData?.properties) { return formData?.properties?._selling_plan_option_id } if (listeningProductData?.properties?._selling_plan_option_id || listeningProductData?.properties?._selling_plan_option_id === null) { return listeningProductData?.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-10'); const containerDOM = 'pm-payment-express-button-container-1539149753700-10'; 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-10", "pm-payment-express-more-button-1539149753700-10", "pm-payment-express-mock-tips-1539149753700-10", "pm-payment-express-skeletonLayer-1539149753700-10", ] const resetHtmlList = [ "pm-payment-express-skeletonLayer-title-content-1539149753700-10", "pm-payment-express-skeletonLayer-content-1539149753700-10", "pm-payment-express-mock-tips-1539149753700-10", "pm-payment-express-error-tips-1539149753700-10", "pm-payment-express-button-container-1539149753700-10", "pm-payment-express-more-button-1539149753700-10", ] 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-10'); 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-10'); 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-10-${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-10'); if (!isPreview()) { return; } if (!tipsDom) { return; } tipsDom.style.display = 'block'; const id = 'pm-payment-express-error-tips-1539149753700-10-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); } }, showSkeletonLayerTips() { const skeletonLayerDOMId = 'pm-payment-express-skeletonLayer-1539149753700-10'; const skeletonLayerDOM = document.getElementById(skeletonLayerDOMId); const titleDOM = document.getElementById('pm-payment-express-skeletonLayer-title-content-1539149753700-10'); const contentDOM = document.getElementById('pm-payment-express-skeletonLayer-content-1539149753700-10'); 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-10'); 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-10'); const moreDOM = document.getElementById('pm-payment-express-more-button-1539149753700-10'); const moreButtonConfig = { firstClick: true, maxSize: isNaN(1) ? 1 : 1 }; 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-10'); function start() { const { getExtUrl, loadFilly, delayCallback, ecEvent, track, loadScript, } = dom.commonUtils; const { blockChannelHandler, setListeningProductData, getAttributeConfig, showECButtonHandler, filterECButtonHandler, loadSDKErrorHandler, extraFilterShowHandler, extraFilterHideHandler, disabledChannelListHandler, getECConfig, isAllowTheme, getCheckoutData } = 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(data = {}) { const ecConfig = await getECConfig(); const expressCheckoutList = getExpressCheckoutList(); track('loadEC', expressCheckoutList); if (data?.detail?.selected?.price) { setProductDetail(data?.detail) } // 初始化时没有事件推送 setListeningProductData(data?.detail || getProductDetail()); 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 }); } } 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', loadEC); loadEC(); } 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-10'); function start() { const {track} = dom.commonUtils; const {showMoreButton, getMoreButtonConfig} = dom.renderMoreUtils; const { showECButtonHandler, getECConfig, blockChannelHandler, isAllowTheme, } = dom.businessUtils; const {disabledThemTips, showChannelNotOpenTips, showSkeletonLayerTips, showMockTips} = 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(); } } blockChannelHandler(); const {blockChannelList} = getExpressCheckoutList(); if (!isAllowTheme()) { disabledThemTips() return; } if (blockChannelList.length > 0) { loadEC(); } else { showSkeletonLayerTips() } } 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-10'); window.PaymentEC = {} 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(); if (dom?.commonUtils?.isPreview()) { dom.mockStartFn() } else { dom.startFn(); } } if (checkReady()) { readyFn(); } else { document.addEventListener('payment_ec_core_ready', readyFn) } } catch (e) { }
Vendor by: amazon
SKU: -Black/Tortoise Black/Gradient Brown-Multicoloured-A0015718

★ Gift Ideas Package and Brand Service ▶ Classic sunglasses*3, microfiber pouch*3, microfiber glasses cleaning cloth*3, gift box*1. Our sunglasses for men women are also gift packed, which will be great gifts for your family and friends! All customers enjoy brand service for our polarized sunglasses. The integrity of every box and the quality of the lenses are double checked by third-party companies. And that goes with a lifetime support!. ★ Move Free And Feel Free ▶ We know how uncomfortable frames can be and how this affects every wearer. We care about your vision and want to help you keep your sun glasses on for as long as you need them. Therefore we picked ultra-light materials for glasses frame, shatterproof polarized lenses and we took care so that every edge is smoothed and polished so you’ll even forget that you wear them out in the sun. Wearing sunglasses has never been more relaxing, secure and comfortable than now!. ★ See The World In Its True Colors ▶ The HD polarized lens of our sunglasses mens offer true color perception because of the neutral color coating and clear vision by eliminating reflected and scattered light. Therefore you will be able to enjoy the sunglasses during all outdoor activities, driving, fishing or any water sport as well. Just imagine how good you will feel not having to worry about eyes health while being able to enjoy and admire the world in every beautiful detail. ★ Be More Relaxed Every Day ▶ Those sunglasses come with top rated polarized lenses that we tested over time. Polarization reduces glare reflected by mirrors, shiny or polished materials or any other kind of sun rays reflection. You will feel your eyes permanently relaxed because you will not squint anymore! Whether you are driving to work or having a nice sunbath on the beach, you will be less tired at the end of the day because your eyes are more relaxed. ★ Protect Your Eyes With Style ▶ We created our polarized sunglasses men women to protect your eyes while you are out under the harmful sun UV rays and to make you look Irresistible at the same time. Whether you are driving, walking or working, whether you are a man or a woman, prepare yourself for all the prime attention you can get and the envy of all of those who can’t figure out your little secret: Your Sunglasses.