/** * HelcimCheckout — extends CartCheckout for HelcimPay.js payments * * Payment flow: * 1. User clicks checkout → extractOrderData() * 2. Server call to /helcim/initialize-checkout → returns checkoutToken * 3. Call appendHelcimPayIframe(checkoutToken) → Helcim renders modal * 4. Listen for window 'message' event → SUCCESS / CANCELLED / ERROR * 5. On SUCCESS, validate transaction server-side * * @see https://devdocs.helcim.com/docs/helcim-pay-js */ class CheckoutHelcim extends window.jvbCheckout { constructor(config = {}) { super({ ...window.helcimConfig, ...config, }); this.pendingSecretToken = null; } /***************************************************************** * INIT — HelcimPay.js SDK (loaded externally) *****************************************************************/ async init() { // HelcimPay.js is loaded via