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

Step into the shadows with Black Cat, a candle inspired by quiet studies, velvet armchairs, and the mysterious elegance of the dark academia aesthetic. The fragrance is a sweet, intoxicating blend of rich coffee, vanilla, and cream, lifted with delicate orange blossom and grounded in the earthy warmth of cedarwood and patchouli. It’s cozy, mysterious, and endlessly inviting—just like a black cat slipping silently into the night.

Hand-poured with 100% soy wax and a clean cotton wick, this candle burns beautifully while keeping your space free of toxins. Each fragrance oil used is clean and phthalate-free, ensuring a safe and indulgent experience.

Available in three sizes to suit your rituals:
– 16 oz glass jar for long, lingering evenings
– 12 oz glass jar for everyday enchantment
– 6 oz travel tin to take your magic anywhere

Light the flame, embrace the shadows, and let the Black Cat candle fill your space with warmth, depth, and mystery.

BLACK CAT Dark Academia Candle Collection

$13.00Price
Quantity
    bottom of page