WWooshPayment docs
API

API reference

Endpoint REST WooshPayment per integrazioni custom. Oggi prevalentemente endpoint server-to-server interni; API pubblica per merchant in roadmap.

4 min di lettura

API pubblica per merchant: roadmap Q3. Oggi WooshPayment espone endpoint REST usati dal nostro frontend e dallo script tag, autenticati via JWT di sessione (cookie-based o Authorization: Bearer <jwt>). Non esiste ancora un sistema di API key custom per merchant generabili dalla dashboard. Quando sarà pronto, lo annunceremo via email.

Sotto trovi gli endpoint effettivamente esposti oggi dal nostro backend (https://api.wooshpayment.com). Sono utili per debugging, integrazioni headless e script custom.

Base URL

https://api.wooshpayment.com

Autenticazione

I JWT vengono emessi al login (POST /api/auth/login o POST /api/auth/register) e firmati con JWT_SECRET. Devi passarli come:

Authorization: Bearer <jwt>

I JWT contengono { merchantId, shopDomain } come claim e durano 30 giorni. Quasi tutti gli endpoint marcati requireAuth qui sotto richiedono questo header.

Rate limit

  • Login: 10 / 15 min per IP
  • Register: 5 / 15 min per IP
  • Checkout create: limiter dedicato
  • Init payment: limiter dedicato
  • Discount validation: limiter dedicato

Oltre limite → 429.

Endpoint principali

Auth

MetodoPathNote
POST/api/auth/registerCrea merchant (email, password, shopName) → JWT
POST/api/auth/loginLogin email/password → JWT, con timing-equalize
POST/api/auth/password/reset-requestManda email reset password
POST/api/auth/password/reset-confirmImposta nuova password con token
GET/api/auth/shopify/installAvvia OAuth Shopify (con handoff token JWT)
GET/api/auth/shopify/callbackCallback OAuth: salva accessToken + installa ScriptTag

Merchant

MetodoPathAuth
GET/api/merchant/me
GET/api/merchant/config/:identifierNo (public per checkout)
PATCH/api/merchant/config
PATCH/api/merchant/account
PATCH/api/merchant/slug
POST/api/merchant/slug/regenerate
GET/api/merchant/subdomain
PATCH/api/merchant/shop
GET/api/merchant/stats
GET/api/merchant/stats/funnel
POST/api/merchant/domainSì — aggiunge checkout.tuostore.com
GET/api/merchant/domain/status
POST/api/merchant/domain/verifySì — innesca verifica DNS
DELETE/api/merchant/domain
GET/api/merchant/whop
POST/api/merchant/whop/connectSì — body { apiKey }
DELETE/api/merchant/whop
GET/api/merchant/woocommerce
POST/api/merchant/woocommerce/connect
DELETE/api/merchant/woocommerce
GET/api/merchant/script-tag/status
POST/api/merchant/script-tag/installSì — reinstall manuale
POST/api/merchant/previewSì — render preview checkout

Checkout (public, no auth)

MetodoPathNote
POST/api/checkout/createCrea session da carrello Shopify/Woo
GET/api/checkout/session/:tokenStato sessione
GET/api/checkout/session-bundle/:tokenBundle completo (cart + branding + shipping + pixels)
GET/api/checkout/:token/upsellsUpsell config
GET/api/checkout/:token/pixelsPixel config
GET/api/checkout/:token/order-bumpsOrder bump config
POST/api/checkout/:token/refresh-statusRe-fetch stato Whop
POST/api/checkout/:token/init-paymentInit pagamento Whop
POST/api/checkout/:token/payFinalizza pagamento
POST/api/checkout/:token/complete-codConferma COD
POST/api/checkout/:token/validate-discountValida codice sconto

Checkout merchant (auth)

MetodoPathNote
GET/api/checkout/merchant/ordersLista ordini del merchant
GET/api/checkout/merchant/orders/:tokenDetail singolo
POST/api/checkout/merchant/orders/:token/refundRefund totale
POST/api/checkout/merchant/orders/:token/backfill-statusForza sync stato Whop

Platform billing

MetodoPathNote
GET/api/platform-billing/plansCatalogo piani public
GET/api/platform-billing/currentSub corrente del merchant
POST/api/platform-billing/subscribeUpgrade piano via Whop
POST/api/platform-billing/cancelCancella sub, downgrade a Starter

Webhook in entrata (sui nostri server)

MetodoPathNote
POST/webhooks/whop/payment-updateWhop firma HMAC-SHA256
POST/webhooks/shopify/*Shopify (uninstall, customers, ecc.)

Vedi Webhook.

Formato risposta

Le risposte di successo sono JSON con shape variabile per endpoint (non sempre { ok, data }).

Errori standard:

{
  "error": "Messaggio leggibile",
  "code": "INVALID_INPUT" 
}

Codici principali: INVALID_INPUT, INVALID_WHOP_KEY, WHOP_TIMEOUT, EMAIL_EXISTS, DOMAIN_EXISTS, INVALID_CREDENTIALS, RATE_LIMITED, INVALID_SLUG, SLUG_COLLISION.

Body limits

Body massimo per request: 1 MB. Oltre → 413.

CORS

Allowlist:

  • https://wooshpayment.com
  • https://*.wooshpayment.com (tutti i subdomain)
  • https://{custom_domain} se il merchant ha un dominio custom verificato (auto-detect dell'apex)
  • https://{shop}.myshopify.com per script tag

Origini non in allowlist → 403.

SDK

  • Node/TypeScript: roadmap (npm @wooshpayment/sdk)
  • PHP / Python: oggi nessun client ufficiale

Per ora: chiama l'API direttamente con fetch / axios / requests — è REST standard.

Versioning

Endpoint stabili. Modifiche backward-compatible (campi aggiunti) non sono breaking. Breaking change avrà prefix versione + 6 mesi di warning.