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

Dragon’s Blood – Dark Academia Candle

Forged in battle and crowned in fire, Dragon’s Blood carries the essence of war-dragons and the ancient skies they command. Its fragrance is bold, resinous, and unyielding—steeped in the rich smoke of Dragon’s Blood incense with undertones of earth and spice. This is the scent of power and protection, of wings cutting through storm clouds and flames searing the horizon. It whispers of loyalty bound in blood, of courage tempered by war, and of a legacy that soars beyond the mortal realm.

Hand-poured with 100% soy wax and a clean cotton wick, this candle ensures a pure, toxin-free burn. Each fragrance oil is clean and phthalate-free, crafted to bring intensity without compromise.

Available in three sizes to suit your rituals:
– 16 oz glass jar for endless nights steeped in legend
– 12 oz glass jar for daily sparks of strength and defiance
–6 oz travel tin to carry dragon fire wherever you roam

Light the flame and call upon the spirit of the Empyrean—where dragons rule the skies and courage burns brighter than fear.

DRAGON'S BLOOD Dark Academia Candle Collection

$13.00Price
Quantity
    bottom of page