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

100% Handmade Labradorite Necklace 18k Gold Plated, hand carved stones on gold with labradorite rosary style chain.

Adjustable.

Labradorite

Known as the “Stone of Magic,” labradorite is deeply tied to intuition, psychic abilities, and protection. Its shimmering iridescence mirrors the aurora borealis, reminding us of the hidden realms and the mysteries of the universe.

    •    Element: Water

    •    Planet: Uranus

    •    Chakra: Third Eye (Ajna) and Crown (Sahasrara)

    •    Energy: Feminine (Yin)

 

Magical Properties:

    •    Enhances psychic abilities, intuition, and spiritual insight

    •    Shields against negative energy and psychic attacks

    •    Encourages self-discovery and awakening one’s true purpose

    •    Balances the aura and strengthens the energy field

    •    Aids in dreamwork, astral travel, and lucid dreaming

 

Uses in Witchcraft:

    •    Carry during divination rituals to enhance clarity and connection to other realms.

    •    Use in spellwork for protection, especially when exploring the unseen.

    •    Place under your pillow to encourage vivid dreams and messages from the subconscious.

    •    Meditate with labradorite to open your third eye and strengthen intuition.

    •    Add to moon water for amplifying its connection to the ethereal.

 

Ritual Ideas:

    •    Create a protective energy grid using labradorite and black tourmaline.

    •    Incorporate labradorite in rituals for transformation, guiding you through changes and illuminating your path.

 

This stone is a reminder that magic exists within and around us, waiting to be revealed.

Labradorite TearDrop Necklace

$120.00Price
Quantity
Out of Stock
    bottom of page