// 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 Witch's Gardenia Body Oil, a luxurious blend of gardenia essential oil and dried botanical jasmine flowers that will leave your skin feeling nourished and hydrated. This indulgent body oil can be used in the shower for a moisturizing experience or directly on your body for a touch of botanical luxury.

 

Gardenia oil is known for its soothing and calming properties, making it a popular choice in aromatherapy and skincare products. It is believed to promote relaxation, reduce anxiety, and uplift the spirit. Jasmine, on the other hand, is associated with love, sensuality, and psychic dreams in witchcraft. When combined, these oils create a powerful and magical blend that can enhance your self-care and spiritual practices.

 

Our Witch's Gardenia Body Oil is made with clean and organic ingredients, including coconut oil, gardenia essential oil, and dried botanical jasmine flowers that are food grade. This ensures that you are treating your skin with the utmost care and avoiding harmful chemicals and toxins.

 

Please note that this product is for external use only. Treat yourself to a little touch of magic with our Witch's Gardenia Body Oil and experience the power of botanical skincare.

Witch's Gardenia Oil

$13.00Price
Quantity
Out of Stock
    bottom of page