// 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
Detailed Description
Revealing to you the secrets of Hoodoo magick, Charms, Spells and Formulas by Ray Malbrough helps you learn how to use the simple materials of nature to bring positive benefits to your life.