How to Add Stripe Checkout to a Custom PHP Website (No Plugins) – BuiltToWinWeb
EN ES FR DE IT PT ZH JA KO RU NL
← Back to all articles

Come aggiungere Stripe Checkout a un sito web PHP personalizzato (senza plugin)

Stripe è l'API di pagamento più pulita disponibile. Nessuna tariffa SaaS mensile, nessun overhead WooCommerce, nessuna commissione di transazione Shopify. Questa è l'implementazione esatta utilizzata sui negozi dei clienti di BuiltToWinWeb — PHP, Stripe SDK, webhook e conferme via email.

Perché PHP nativo + Stripe supera qualsiasi costruttore di pagine

Shopify addebita dallo 0,5 al 2% per transazione oltre alla commissione di Stripe. WooCommerce aggiunge 14+ dipendenze di plugin che rallentano l'LCP della pagina di checkout a 3,8 s. Un'integrazione PHP personalizzata offre un checkout che si carica in meno di 0,6 s.

  • Zero commissioni di piattaforma per transazione – solo il 2,9% + 30¢ di Stripe
  • Punteggio Lighthouse della pagina checkout: 98 contro il tipico 61 di Shopify
  • Pieno controllo webhook – adempimento personalizzato, inventario, email
  • Nessun costo di abbonamento ricorrente alla piattaforma e-commerce
  • Possiedi il codice, ospita ovunque, migra liberamente

Passo 1 — Installare il PHP SDK di Stripe

Composer è l'approccio più pulito. Se il tuo host non supporta Composer, scarica il ZIP dell'SDK.

composer require stripe/stripe-php

Poi caricalo in cima al tuo script di checkout:

require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));

Passo 2 — Creare una sessione Checkout (lato server)

Non mettere mai la tua chiave segreta nel browser. Crea un endpoint lato server a cui il frontend fa POST:

<?php
require_once __DIR__ . '/vendor/autoload.php';
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));

$session = \Stripe\Checkout\Session::create([
    'payment_method_types' => ['card'],
    'line_items' => [[
        'price_data' => [
            'currency' => 'usd',
            'unit_amount' => 175000,
            'product_data' => ['name' => 'Business Pro Website'],
        ],
        'quantity' => 1,
    ]],
    'mode' => 'payment',
    'success_url' => 'https://yoursite.com/success?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => 'https://yoursite.com/pricing',
]);

header('Content-Type: application/json');
echo json_encode(['url' => $session->url]);

Passo 3 — Reindirizzare l'utente dal frontend

Una semplice chiamata fetch sul pulsante della tua pagina prezzi:

document.getElementById('buy-btn').addEventListener('click', async () => {
    const res = await fetch('/create-checkout-session.php', { method: 'POST' });
    const data = await res.json();
    window.location.href = data.url;
});

Passo 4 — Gestire i webhook (evasione ordini)

Stripe invia un POST al tuo endpoint webhook quando il pagamento ha successo. Qui attivi l'email, aggiorni l'inventario e registri l'ordine.

<?php
$payload = file_get_contents('php://input');
$sig = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$secret = getenv('STRIPE_WEBHOOK_SECRET');
try {
    $event = \Stripe\Webhook::constructEvent($payload, $sig, $secret);
} catch (\Exception $e) {
    http_response_code(400); exit;
}
if ($event->type === 'checkout.session.completed') {
    fulfill_order($event->data->object);
}
http_response_code(200);

Registra l'URL del webhook nel pannello Stripe sotto Sviluppatori → Webhook.

Passo 5 — Inviare un'email di conferma tramite PHPMailer

Nella tua funzione `fulfill_order()`, recupera l'email del cliente dalla sessione:

function fulfill_order($session) {
    $email = $session->customer_details->email;
    $mail = new PHPMailer\PHPMailer\PHPMailer(true);
    $mail->isSMTP();
    $mail->Host = 'smtp.yourhost.com';
    $mail->setFrom('hello@yoursite.com', 'La Tua Azienda');
    $mail->addAddress($email);
    $mail->Subject = 'Pagamento ricevuto — Grazie!';
    $mail->Body = 'Il tuo ordine è confermato.';
    $mail->send();
}

Platform Comparison — Custom PHP vs Shopify vs WooCommerce

Metrica PHP personalizzato + Stripe Shopify WooCommerce
Checkout LCP 0,6s 1,9s 2,8s
Punteggio Lighthouse 98 61 55
Commissione piattaforma/txn 0% 0,5–2% 0%*
Costo mensile piattaforma $0 $39–$399 $0*
Dipendenze plugin 0 n/a 14+
Proprietà codice 100% 0% ~60%

Impatto reale sul business

Su uno store da $50.000/mese, il 2,9% + 30¢ di Stripe è inevitabile. Ma la commissione aggiuntiva di piattaforma Shopify dello 0,5–2% costa $250–$1.000 extra al mese.

  • Shopify Advanced ($399/mese) + 0,5% su $50k = $649/mese di costi piattaforma
  • PHP personalizzato + Stripe = $0/mese di costi piattaforma
  • Breakeven su uno store da $5.600: meno di 9 mesi
  • Le pagine checkout caricano 3× più velocemente = minor tasso di abbandono del carrello

Il calcolo è semplice: se elabori più di $15.000/mese, uno store PHP personalizzato si ripaga in meno di un anno.

Lista di controllo sicurezza

  • Archivia le chiavi nelle variabili d'ambiente – mai hardcoded nei file PHP
  • Verifica sempre le firme webhook Stripe con `constructEvent()`
  • Usa HTTPS ovunque – Stripe lo richiede
  • Idempotenza: verifica se l'ordine esiste già prima di evaderlo
  • Limita il rate su `/create-checkout-session.php` (10 richieste/ora per IP)

Frequently Asked Questions

Ho bisogno di Composer per usare Stripe con PHP?

Composer è consigliato ma non obbligatorio. Puoi scaricare l'SDK PHP di Stripe come file ZIP e includerlo manualmente con require_once.

È sicuro elaborare pagamenti senza una piattaforma come Shopify?

Sì. Stripe è certificato PCI-DSS Livello 1. Il tuo server non gestisce mai i numeri di carta grezzi – il JS di Stripe li tokenizza lato client.

Come testo Stripe senza addebitare carte reali?

Usa la modalità test di Stripe con prefisso sk_test_. Usa la carta di test 4242 4242 4242 4242 con qualsiasi data di scadenza futura.

Posso aggiungere abbonamenti con questo approccio?

Sì. Cambia la modalità della sessione Checkout da "payment" a "subscription" e passa un ID prezzo ricorrente. Stripe gestisce i cicli di fatturazione automaticamente.

Vuoi uno store Stripe personalizzato costruito per te?

BuiltToWinWeb costruisce store e-commerce PHP personalizzati con integrazione Stripe nativa, punteggi Lighthouse 98+, e zero commissioni mensili di piattaforma.

Gli store vengono consegnati tipicamente in 3–4 settimane. Risposta garantita entro 24 ore.

Ottieni un preventivo gratuito

Dati benchmark da test controllati su hosting Hostinger VPS identico.