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

Dark Academia Coffee Shop Candle
Available in 12 oz or 16 oz | 100% Soy | Cotton Wick | Clean Fragrance

Step into the warm hush of a rainy afternoon spent in an old-world café—where the scent of fresh espresso mingles with worn leather-bound books and the flicker of candlelight casts shadows on handwritten letters. Our Dark Academia Coffee Shop Candle is more than just a fragrance—it's a story.

Crafted with 100% soy wax, natural cotton wicks, and clean, phthalate-free fragrance oils, this candle burns beautifully and safely, filling your space with a cozy, nostalgic aroma inspired by hidden libraries, moody weather, and the comforting hum of intellectual solitude.

Each candle comes in your choice of

4 oz

12 oz 

16 oz

size, topped with a natural cork lid, and finished with a beautifully designed label worthy of any aesthetic shelf or study desk. Every candle includes a unique backstory, connecting you to the fictional world behind the scent—a touch of literary magic in every jar.

Perfect for slow mornings, writing sessions, or quiet nights spent chasing inspiration.

COFFEE SHOP Dark Academia Candle Collection

$13.00Price
Quantity
    bottom of page