// 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 spells and rituals, it is also known for its ability to enhance and empower magic involving love. Also, it is known for being a great aid in your spells and rituals where you are seeking to attain spiritual growth and mastery for yourself or another. Patchouli oil has also been held to be valuable in the representation of the astrological signs of Taurus, Virgo, Sagittarius, and Capricorn, and is also a powerful aid in drawing upon the properties of those signs. Similarly, it is quite potent when applied as a representative of the element of Earth, drawing those properties and powers into your ritual magic. During the holidays of Litha and Mabon, Patchouli oil is sometimes used to enhance celebration and worship, and in such cases is often used in a diffuser or as anointing oil.

Patchouli Loose powder incense

$10.00Price
Quantity
    bottom of page