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

Handmade Botanical Broomsticks – One-of-a-Kind Magical Creations

Each one is unique, you will get the same exact one pictured above!

 

Sweep away negative energy and infuse your space with enchantment using our handcrafted botanical broomsticks. In paganism and witchcraft, broomsticks are powerful beacons of protection, cleansing, and transformation—tools that connect the physical and spiritual realms.

 

Features:

• Crystals & Dried Herbs: Each broomstick is decorated with high-quality crystals and carefully selected dried herbs to amplify its energy and purpose.

• Artistic Details: Many designs include resin skulls and intricately crafted Death’s Head Hawk Moths, adding a touch of mystery and charm.

• Handmade with Intention: No two broomsticks are alike, making each one a truly special piece for your collection.

 

Symbolism in Witchcraft:

Broomsticks have long been associated with magic and mysticism, symbolizing the ability to cleanse a space, cast out negativity, and mark sacred boundaries. In modern witchcraft, they serve as powerful tools for rituals, altar decor, or as talismans of protection and intention.

 

Perfect as altar decor, a ritual tool, or simply a stunning addition to your witchy aesthetic, these botanical broomsticks embody the spirit of magic, nature, and transformation.

 

Embrace the timeless magic of the broomstick and let its energy guide and protect your path.

Pentacle Moon Broomstick

$48.00Price
Quantity
    bottom of page