Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazineWooCommerce

Gateway di pagamento WooCommerce: Stripe, PayPal e la sicurezza del checkout

02 Nov 2026 — 09:30 9 min di lettura
Gateway di pagamento WooCommerce: Stripe, PayPal e la sicurezza del checkout

Il gateway di pagamento è il punto più sensibile di un e-commerce: lì transitano i dati di carta e i token. Come scegliere tra Stripe e PayPal, perché il PCI-DSS non è opzionale, e perché gestire male il 3D Secure 2 (SCA) costa conversioni.

Il gateway di pagamento è il cuore di un e-commerce WooCommerce — e il punto più delicato. Qui transitano i dati di carta di credito (o meglio, i token che li rappresentano), qui si gioca la conversione finale, e qui un errore di configurazione può costare multe salate per non conformità PCI-DSS. La scelta del gateway non è solo una questione di commissioni: è una questione di sicurezza, di conversione, e di conformità normativa. E su WooCommerce, dove il gateway è un plugin, la configurazione conta quanto la scelta.

Il primo punto da chiarire è che WooCommerce non dovrebbe mai toccare i dati di carta. Se il tuo checkout chiede il numero di carta e lo invia al tuo server, sei nel scope PCI-DSS — e il PCI-DSS level 1 (per chi processa direttamente i dati di carta) è un audit annuale che costa decine di migliaia di euro. I gateway seri (Stripe, PayPal, Braintree) usano un pattern che mantiene i dati di carta sul loro dominio: il browser del cliente parla direttamente con il gateway, e il tuo server riceve solo un token. Questo ti tiene fuori dal PCI-DSS level 1 — sei nel level SAQ-A, il più leggero.

Stripe vs PayPal: non è solo una questione di commissioni

Stripe e PayPal sono i due gateway più usati su WooCommerce, e la scelta non è solo di costo. Stripe ha commissioni più basse (1.4% + 0.25€ per carte europee, 3.25% + 0.25€ per non europee) e un'API più pulita. PayPal ha commissioni simili ma è più riconoscuto dai consumatori — molti hanno un conto PayPal e preferiscono non inserire la carta. La scelta ideale è offrire entrambi: Stripe per chi paga con carta, PayPal per chi ha il conto. La conversione aumenta quando dai scelta.

La configurazione di Stripe su WooCommerce con Stripe Payments (il plugin ufficiale):

wp-config.php
// functions.php — configura Stripe con 3D Secure (SCA) obbligatorio
add_filter( 'wc_stripe_payment_intent_options', function( $options ) {
    // Forza il 3D Secure per le carte europee (SCA compliance)
    $options['payment_method_options']['card']['request_three_d_secure'] = 'any';

    // Capture automatico (non authorize-only)
    $options['capture_method'] = 'automatic';

    return $options;
} );

// Configura i webhook di Stripe per gli aggiornamenti ordini
add_action( 'woocommerce_api_wc_stripe', function() {
    // Il webhook aggiorna lo stato dell'ordine quando Stripe
    // conferma il pagamento asincrono (3D Secure, banche lente)
    $payload = @file_get_contents( 'php://input' );
    $event = json_decode( $payload );

    if ( isset( $event->type ) && 'payment_intent.succeeded' === $event->type ) {
        $order_id = $event->data->object->metadata->order_id ?? null;
        if ( $order_id ) {
            $order = wc_get_order( $order_id );
            if ( $order && $order->has_status( 'pending' ) ) {
                $order->payment_complete();
            }
        }
    }

    http_response_code( 200 );
} );
Nota: Il webhook è essenziale per i pagamenti asincroni (3D Secure, bonifici, carte che richiedono autorizzazione della banca). Senza webhook, l'ordine resta 'pending' anche se il pagamento è andato a buon fine — perché il cliente non torna sul sito dopo il 3D Secure. Configura l'endpoint webhook nel dashboard Stripe e verifica la firma.

3D Secure 2 e SCA: perché non configurarlo costa conversioni

Il 3D Secure 2 (Strong Customer Authentication) è obbligatorio in Europa dal 2021. Se non lo configuri, le banche rifiutano i pagamenti — e il cliente vede un errore generico invece di una richiesta di autenticazione. La differenza tra un 3D Secure ben configurato e uno assente è misurabile: il primo ha un tasso di completamento del 95% sulle carte europee, il secondo del 60% — perché il 40% delle transazioni viene rifiutato dalla banca senza che il cliente capisca perché.

Il 3D Secure ha un impatto sulla conversione che va gestito. Non è solo attivarlo — è configurarlo per minimizzare l'attrito:

wp-config.php
// Configura il 3D Secure per minimizzare l'attrito
add_filter( 'wc_stripe_card_payment_intent', function( $intent, $order ) {
    // SCA: 'any' richiede 3DS quando possibile, 'automatic' lo decide a Stripe
    $intent['payment_method_options']['card']['request_three_d_secure'] = 'automatic';

    // Per i clienti registrati, usa il payment method salvato (3DS non ripetuto)
    if ( is_user_logged_in() && function_exists( 'wc_stripe_get_customer_id' ) ) {
        $customer_id = wc_stripe_get_customer_id( get_current_user_id() );
        if ( $customer_id ) {
            $intent['customer'] = $customer_id;
            $intent['setup_future_usage'] = 'on_session'; // salva per pagamenti futuri
        }
    }

    return $intent;
}, 10, 2 );
Nota: 'automatic' lascia che Stripe decida quando richiedere il 3DS in base alla banca — meglio per la conversione. 'any' lo richiede sempre, più sicuro ma più attrito. Salva il payment method per i clienti registrati (setup_future_usage) per evitare il 3DS ripetuto sui acquisti successivi.

Il test del checkout end-to-end

Ogni modifica al gateway va testata end-to-end prima di andare in produzione. Il test non è 'vedo la pagina di checkout' — è 'completo un ordine reale con una carta di test e verifico che l'ordine risulti pagato'. Stripe ha carte di test dedicate:

Terminale
# Carte di test Stripe (modalità sandbox)
# 4242 4242 4242 4242 — Visa, pagamento riuscito senza 3DS
# 4000 0027 6000 3184 — Visa, richiede 3DS (SCA)
# 4000 0000 0000 9995 — Visa, pagamento rifiutato (insufficient funds)
# 5555 5555 5555 4444 — Mastercard, pagamento riuscito

# Verifica che il webhook di Stripe sia configurato
curl -sI https://www.example.com/?wc-api=wc_stripe
# Output atteso: HTTP/2 200

# Verifica che il checkout carichi correttamente
curl -s https://www.example.com/checkout/ | grep -c 'stripe'
# Output > 0: Stripe è caricato nella pagina di checkout
Nota: Testa sempre con una carta che richiede 3DS (4000 0027 6000 3184) — è il caso più comune in Europa e il più probabile a rompersi. Se il 3DS non si attiva, il problema è quasi sempre la configurazione del webhook o la mancata attivazione di Stripe Payments in modalità SCA.

Il gateway di pagamento è l'ultimo miglio dell'e-commerce — dove la tecnologia incontra i soldi. Configurarlo bene non è solo sicurezza: è conversione. Un 3D Secure che non si attiva costa il 40% delle transazioni europee. Un webhook non configurato costa gli ordini asincroni. E una scelta sbagliata di gateway costa commissioni che si accumulano mese dopo mese. Il checkout è il punto dove non ci si può permettere di essere approssimativi.

Assistenza WooCommerce

Checkout, pagamenti e prestazioni del tuo e-commerce sotto controllo.

Verifica tecnica del tuo store WooCommerce: aggiornamenti controllati, sicurezza e ottimizzazione delle prestazioni.

Assistenza WooCommerce
Condividi