// 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

Jasmine Flower Herb Jar

5oz

This enchanting jar of Jasmine Flowers is a timeless treasure for your magical apothecary. Revered for its delicate beauty and intoxicating fragrance, Jasmine is deeply tied to the realms of magic and mysticism.

• Ruling Planet: Moon

• Masculine/Feminine: Feminine

• Zodiac Sign: Cancer

• Element: Water

 

In witchcraft, Jasmine is associated with love, spiritual connection, and prophetic dreams. It is often used to attract romance, deepen emotional bonds, and enhance intuition. Jasmine’s energy is perfect for spellwork related to divination, clarity, and connection with the divine. Its calming presence also aids in relaxation and dream magic, making it ideal for rituals involving sleep and psychic visions.

 

Incorporate Jasmine Flowers into spell jars, love sachets, or ritual baths to strengthen intentions of passion, peace, and spiritual awakening. Use them in dream pillows to invite prophetic dreams or scatter them around your sacred space to foster tranquility and inspiration.

 

Organic, non-GMO, and carefully sourced for premium quality. Let the magic of Jasmine infuse your craft with its serene and mystical energy!

Jasmine Apothecary Jar

$18.00Price
Quantity
    bottom of page