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

Glass cork 1oz jar

Deliciously soft and sweet

Burn a small portion of this lightly scented powdered incense to energize and magnify your magical works. Self-lighting and easy to use, simply place a small portion of this powder into a burn-safe bowl or cauldron and carefully apply flame to it with a match or lighter. 1 ounce.

In some Wiccan traditions of magic, Dragon’s Blood is used for healing, protection, and banishing. Many Pagan paths believe that adding Dragon’s Blood to any other incense or herb blend will increase the potency of the original mix.
Dragon's Blood also comes in handy when it comes to cleansing a space. If the previous occupant of the location left behind some dodgy energy, burn Dragon's Blood incense, or sprinkle the powder around the perimeter to banish away negativity. Blend it with dried sage or sweetgrass for extra metaphysical protection.
Ways to Use Dragon's Blood in Magic
* Add it to an herbal blend of incense, to give your magic an extra boost.        


* Some traditions use Dragon's Blood in love spells, particularly if you hope to receive a marriage proposal. 
* Use it in an herbal sachet for healing magic related to bleeding, especially involving women's reproductive issues.

Dragons Blood loose powder incense

$10.00Price
Quantity
Out of Stock
    bottom of page