// Page Code for /checkout-link import { cart } from 'wix-stores'; import wixLocation from 'wix-location'; /** * Accepts `products` query parameter in Meta format: * - Encoded: products=112233%3A1%2C445566%3A2 * - Unencoded: products=112233:1,445566:2 (still works) * * Each entry is ID:QTY. Colons/commas may be RFC 3986-escaped. * Example final URL for Meta: * https://mysticalcrow.com/checkout-link?products=112233%3A1%2C445566%3A2 */ function parseProductsParam(rawParam) { if (!rawParam || typeof rawParam !== 'string') return []; // Try to decode once; if it throws or changes nothing, we still continue safely let decoded = rawParam; try { // decodeURIComponent will convert %3A -> ":", %2C -> "," decoded = decodeURIComponent(rawParam); } catch (_e) { // If decoding fails, we’ll proceed with the original string } // Split by commas (now that we normalized to ":" and ",") // Trim spaces just in case. return decoded .split(',') .map(s => s.trim()) .filter(Boolean) .map(pair => { const [id, qty] = pair.split(':').map(x => (x || '').trim()); const quantity = Number(qty); return (id && !Number.isNaN(quantity) && quantity > 0) ? { productId: id, quantity } : null; }) .filter(Boolean); } async function addAllToCart(items) { // Wix Stores cart.addProducts accepts an array of product objects. // We’ll add one by one to ensure each promise resolves, but you can batch if desired. for (const item of items) { // If a product has variants/options, you’ll need to pass the relevant // selection data here (e.g., options: [{ optionName, selection }]). // For simple products, productId + quantity is sufficient. await cart.addProducts([{ productId: item.productId, quantity: item.quantity }]); } } $w.onReady(async function () { const { products } = wixLocation.query; if (!products) { // No parameter present; go to cart so the user isn't stuck. wixLocation.to('/cart'); return; } const items = parseProductsParam(products); if (!items.length) { // Parameter present but invalid/empty after parsing wixLocation.to('/cart'); return; } try { await addAllToCart(items); // Success: go straight to checkout wixLocation.to('/checkout'); } catch (_err) { // If anything fails (bad ID, etc.), fall back to cart wixLocation.to('/cart'); } });
top of page

Introducing our enchanting Witches Rose Oil, now available in a convenient and super cute travel-size press dropper bottle. This luxurious oil is infused with delicate rosebuds and petals, along with high-grade rose essential oils, to provide a range of benefits for your skin and senses.

 

Rose oil has long been prized for its skincare properties, known for its ability to hydrate, tone, and rejuvenate the skin. Rich in antioxidants and vitamins, rose oil can help to protect the skin from environmental damage and promote a healthy, radiant complexion. The soothing scent of roses can also help to calm the mind and reduce stress, making it a perfect addition to your self-care routine.

 

Our Witches Rose Oil captures the essence of this beloved flower, harnessing its natural healing properties in a convenient and portable form. The press dropper bottle allows for easy application, whether you're at home or on the go, so you can enjoy the benefits of rose oil wherever you are.

 

Treat yourself to the luxurious experience of our Witches Rose Oil and discover the transformative power of roses for your skin and senses. Embrace the beauty and magic of this precious flower with every drop, and let its soothing and nourishing properties bring a touch of enchantment to your daily skincare routine.

Witch's RoseOil Dropper

$10.00Price
Quantity
Out of Stock
    bottom of page