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

"A TAROT FOR A NEW ERA"

 

Strengthen your connection to your divine self, recognize when change is approaching and prepare to live to your fullest potential with this unique and powerful deck. Author and artist, Ravynne Phelan, combines the familiar structure of tarot with bold new archetypes, symbology and meanings for more intimate, insightful and relevant messages. Embark on a journey of being and becoming, and be inspired into tomorrow with the award-winning Dreams of Gaia Tarot.

 

This pocket-sized edition features 81 borderless cards. The 116-page booklet provides keywords and Key Phrases to help you seek, feel, grow and heal.

 

Ravynne Phelan creates illustrations that are magical, powerful, and evocative; works of art that open the mind and touch the hearts of many. Ravynne has also authored and illustrated the Messenger Oracle and contributed illustrations for Oracle of the Dragonfae.  

 

Includes 81 cards and 112-page booklet

 

 

 

 

 

...

Specs

SKU PDG81

Weight 0.8 lb(s)

ISBN 978-1-57281-983-2

Size Cards measure 2.5” x 3.5”; Box measures 3” x 4”

Language EN

Author Ravynne Phelan

Pocket Dreams Of Gaia Tarot

$25.00Price
Quantity
    bottom of page