Debug dello script tag Shopify
Lo script di redirect WooshPayment non intercetta il bottone Check out di Shopify? Ecco le cause più frequenti e come fixarle in 10 minuti.
TLDR: se clicchi "Check out" su Shopify e atterri sul checkout Shopify default invece che sul tuo WooshPayment, il problema è quasi sempre uno di questi: 1) script non caricato, 2) tema custom con selettori esotici, 3) cache CDN del tema, 4) CSP restrittivo. Segui la sequenza diagnostica sotto.
Diagnostica in 3 minuti
Apri il tuo store, aggiungi un prodotto al carrello, poi DevTools (F12).
Check 1 — lo script è caricato?
DevTools → Network → filtra per wooshpayment. Ricarica la pagina carrello. Devi vedere:
checkout-interceptor.js 200 api.wooshpayment.com ~3 KB
Se NON lo vedi:
- Lo script viene installato in automatico via Shopify ScriptTag API al callback OAuth. Se manca, l'install è stata revocata o c'è un'OAuth scaduta.
- Fix in 1 click: WooshPayment → Integrazioni → bottone "Reinstalla script tag". L'app fa una nuova chiamata
POST /admin/api/2024-10/script_tags.jsoncon l'accessToken corrente. Lo script torna attivo entro 30 secondi (poi serve un hard refresh del tema su Shopify per evitare cache). - Se la reinstall fallisce con "OAuth scaduta", rifai la connessione da Impostazioni → Connessione Shopify.
Niente copia/incolla nel tema. L'install è completamente API-driven: scriviamo lo script_src direttamente nell'oggetto ScriptTag di Shopify. Non devi mai aprire theme.liquid.
Check 2 — lo script si esegue?
Console del browser sulla pagina carrello: cerca log [WooPay]. Se vedi [WooPay] Failed to create session: … significa che lo script è arrivato ma la chiamata POST /api/checkout/create ha fallito. Apri il dettaglio nella Network tab e leggi lo status + corpo della risposta:
400 Carrello non valido→ prezzi cambiati fra add-to-cart e checkout, il cliente refresha401→ token Shopify revocato lato store, reinstalla l'app403→ origine dello store non in allowlist CORS, scrivici
Check 3 — il tema usa un pattern noto?
Lo script intercetta:
- Form submit verso
/carto/checkout(Dawn, Sense, Refresh e la maggior parte dei temi) history.pushStateverso/checkout(SPA delle vetrine moderne)window.location.assign/replaceverso/checkout
Se il tuo tema usa un selettore esotico (es. handler proprio che chiama XMLHttpRequest senza passare da location), lo script non lo vede. Scrivici con URL store + nome tema e aggiungiamo il pattern.
Cause specifiche
Cache CDN del tema
Shopify Plus a volte ha Cloudflare/Fastly davanti che cachano theme.liquid per 30 min. Dopo aver installato lo script tag, forza un purge:
Shopify Admin → Online Store → Temi → "Azioni" → Pubblica (ri-pubblicare invalida il CDN).
CSP del tema
Se il tema imposta un Content-Security-Policy restrittivo, lo script viene bloccato. Console mostrerà:
Refused to load script 'https://api.wooshpayment.com/api/checkout-interceptor.js' because it violates CSP
Fix: aggiungi api.wooshpayment.com agli script-src del tema, oppure rimuovi il meta CSP custom (Shopify ne imposta uno default sicuro).
Tema headless (Hydrogen/Remix)
WooshPayment non supporta nativamente storefront Hydrogen. Devi invocare l'API REST direttamente:
const res = await fetch('https://api.wooshpayment.com/api/checkout/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ shop, cartToken, items, totalPrice, currency }),
})
const { checkoutUrl } = await res.json()
window.location.href = checkoutUrlVedi API reference per il payload completo.
Apps "Buy Now" o sticky checkout
App tipo ReConvert, OneClickUpsell, EasyAccess possono bypassare il tuo carrello e chiamare /checkout direttamente in modi che non passano dai pattern intercettati. Disattiva l'app, verifica, riattivala step by step.
Quando contattarci
Dopo i check sopra, se non funziona scrivi a noreply@wooshpayment.com con:
- URL del tuo store
- Nome del tema (Online Store → Temi → nome accanto al thumb)
- Screenshot console + Network tab
- Eventuale log
[WooPay]visibile in console
Link utili
- Integrazione Shopify — install iniziale
- WooCommerce — equivalente Woo
- Pagamento fallisce — se lo script funziona ma il pagamento si pianta