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

Vervain

Verbena Officinalis

• Ruling Planet: Venus

• Masculine/Feminine: Feminine

• Zodiac Sign: Gemini

• Element: Water

• Meaning: Purification, protection, and boosting magical power.

• Spell Use: Perfect for cleansing and spell enhancement.

 

VERVAIN is a certified organic processor through Oregon Tilth Certified Organic, which is fully accredited with the USDA National Organic Program. Since 1987 we have continuously worked for the advancement of sustainable organic agriculture. We're working with the Non-GMO Project to verify a selection of our products! These ingredients have been chosen because they are produced from plant crops that are known to be at risk of GMO contamination. Thankfully, most herbs and spices are not in danger of industrial genetic modification, so organic certification is our go-to for insuring that our herbal goodies are grown without synthetic pesticides, fertilizers, GMO seed stock, or irradiation. Taking this commitment one step further, we listened to the herbal community and now have products verified through the Non-GMO Project as well.

 

Witch's Herb Jar

5oz jars 


 

Vervain Herb Jar

$21.00Price
Quantity
    bottom of page