Stripe Integration (Phase B)
Componenti
HWBillingStripeStripeClient
Wrapper REST minimale (no Composer). Implementa solo gli endpoint usati:
- Products:
product_create,product_update,product_get - Prices:
price_create,price_get,price_archive - Checkout:
checkout_session_create,checkout_session_get - Customers:
customer_create,customer_get - Subscriptions:
subscription_get,subscription_cancel verify_webhook($payload, $sig_header, $secret)— HMAC-SHA256 con tolerance 5min anti-replay
API key letta da wp_option('hwbi_stripe_secret_key'). Tutte le request:
- Header
Stripe-Version: 2024-12-18.acacia - Bracket notation per nested arrays (
metadata[order_id]=42) - Audit log su errori HTTP/API
HWBillingStripeStripeProductSync
Push one-way: piano locale → Stripe Product + Price.
- Idempotent: se
stripe_product_idesiste, update invece di create - Price immutable: se cambia prezzo, archivia vecchio + crea nuovo
- Salva refs (
stripe_product_id,stripe_price_id) nel piano locale sync_all()per bulk sync di tutti i piani attivi
HWBillingRestCheckoutController
Endpoint: POST /wp-json/hostwebo-billing/v1/checkout/stripe/create-session
Auth: logged-in + BillingMode::should_use_v2() (V2 mode attivo per utente).
Flow:
- Recupera piano (per
plan_idoplan_slug) - Verifica
stripe_price_idpresente (cioè: sincronizzato) - Crea ordine locale
pending_payment+ line item - Crea Stripe Checkout Session (mode
subscriptionse recurring,paymentse one-time) - Salva
session_idsull’ordine comepayment_reference - Ritorna
{ ok, order_id, checkout_url }→ browser redirect
Metadata Stripe Session: hwbi_order_id, hwbi_plan_id, hwbi_user_id, hwbi_plesk_plan per matching post-payment.
HWBillingRestWebhookController
Endpoint: POST /wp-json/hostwebo-billing/v1/webhooks/stripe (no auth WP, auth via Stripe-Signature HMAC).
Idempotency: webhook_event_id UNIQUE in wp_hwbi_payments → replay silenti.
Eventi gestiti:
HWBillingProvisioningProvisioningWorker
Cron hwbi_provisioning_worker ogni minuto (usa hwai_1min se hostwebo-ai attivo).
Per ogni provisioning_jobs.status='pending':
- Claim atomico (UPDATE … WHERE status=’pending’)
- Dispatch al handler per
job_type - Su success: status=
done, salvaresult - Su failure: incremento
attempts, exponential backoff (scheduled_at = now + 2^attempts min, max 1h). Quandoattempts >= max_attempts: status=faileddefinitivo.
Handlers Phase B:
create_plesk_subscription: ensure Plesk client exists (auto-detect via email OR create new viaPleskBridge). Full domain creation deferred a Phase D.cancel: log-only (Phase D farà suspend/cancel reale).
Setup (admin)
1. Configura API keys
- wp-admin → Hostwebo Billing → Impostazioni
- Stripe section:
- Recupera
sk_live_…da https://dashboard.stripe.com/apikeys - Recupera
pk_live_…da stessa pagina
- Salva
2. Crea webhook su Stripe
- https://dashboard.stripe.com/webhooks → “Add endpoint”
- URL:
https://hostwebo.it/wp-json/hostwebo-billing/v1/webhooks/stripe - Eventi da listenare:
checkout.session.completedinvoice.paidinvoice.payment_failedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deleted
- Copia
whsec_…→ incolla in Impostazioni → “Webhook signing secret”
3. Sync piani verso Stripe
- wp-admin → Hostwebo Billing → Piani
- Click “💳 Sync to Stripe (all)” → tutti i piani attivi diventano Products + Prices su Stripe
4. Attiva V2
- Impostazioni → V2 enabled = ON
- Modalità: “Parallelo” + aggiungi il tuo user_id ai beta users
- Vai su frontend, click “Acquista ora” su un piano → ti porta a
/v2-checkout/invece di Upmind
Test end-to-end
- Stripe test mode: usa
sk_test_…+pk_test_…+ webhook test - Crea ordine da frontend (beta user)
- Pagamento con carta test
4242 4242 4242 4242 - Verifica:
wp_hwbi_ordersha recordstatus='paid'wp_hwbi_paymentsha record congateway='stripe'+webhook_event_idvalorizzatowp_hwbi_provisioning_jobsha jobcreate_plesk_subscriptionconstatus='done'(entro 1 min)wp_hwbi_subscriptionsha record per i piani recurring
Filter hooks esposti
Action hooks emessi
add_action() per reagire (es. inviare email di benvenuto, abilitare AI features extra). Questa guida ti è stata utile?
Il tuo feedback ci aiuta a tenere la documentazione utile e aggiornata.
Continua a leggere
PayPal Integration (Phase C)
PayPal Integration (Phase C) # Architettura PayPal — differenze chiave da Stripe # PayPal usa una struttura a 3 livelli: Product (catalogo): descrive cosa vendi (id PROD-xxx)Billing Plan: pricing structure ricorrente (id…
Cutover Playbook — Upmind → Hostwebo Billing V2
Cutover Playbook — Upmind → Hostwebo Billing V2 # Procedura passo-passo per la migrazione progressiva da Upmind al sistema V2. Fasi pensate per essere reversibili in ogni momento. Filosofia # Mai un big-bang. Si passa pe…
Hostwebo Billing — Architecture
Hostwebo Billing — Architecture # Sistema custom di fatturazione, pagamenti, abbonamenti e provisioning automatico. Sostituisce Upmind in 10 fasi sequenziali con cutover sicuro. Obiettivo strategico # Eliminare la dipend…
Changelog — Hostwebo Billing
Changelog — Hostwebo Billing Sistema billing custom che ha sostituito Upmind nel maggio 2026. Tieni questo file aggiornato a ogni cambiamento di rilievo (no patch micro-fix). Per la roadmap delle fasi (stato avanzamento …