Come funziona PCI Proxy
Ci invii i dati della carta. Noi li tokenizziamo, li conserviamo in un vault PCI DSS e restituiamo un token. I tuoi sistemi non ricevono mai il numero carta.
Tu mandi
Noi custodiamo
Tu ricevi
Il flusso in 5 fasi
Dal momento in cui il cliente inserisce la carta al token che salvi nel tuo back office: ecco cosa succede passo dopo passo.
Dati carta in entrata
Checkout del sito, chiamata API o modulo call center
PCI Proxy intercetta
Riceviamo i dati carta dal payload HTTP prima che raggiungano i tuoi server
Tokenizzazione
Cifriamo il numero carta e generiamo un token univoco
Vault sicuro
Il numero carta rimane cifrato nel nostro vault PCI DSS Level 1, solo in EU
Token a te
Ricevi il token e lo usi per pagamenti, abbonamenti o rimborsi
Cosa succede quando tokenizziamo
Sostituiamo il numero carta con un token. Non vedi mai la carta in chiaro nei tuoi sistemi. Ecco i tre passaggi interni.
Passo
Rileviamo i dati carta
Analizziamo le richieste in arrivo e identifichiamo i numeri carta in JSON, form o payload multipart. Nessuna modifica al codice da parte tua: collega il tuo flusso e hai finito.
Passo
Creiamo il token
Ogni token inizia con tok_pci_eu_ e include le ultime quattro cifre, il circuito e la scadenza. La tua UI può mostrare "Visa che termina con 1234" senza mai detenere il numero carta.
Passo
Stesso token, stessa carta
Se la stessa carta arriva di nuovo, restituiamo lo stesso token. Utile per abbonamenti e carte salvate. La mappatura rimane solo nel vault e non è esposta tramite API.
→ POST /v1/tokenize
{
"card_number": "4111 1111 1111 1234",
"expiry": "12/26"
}
← 200 OK · 47ms
{
"token": "tok_pci_eu_a1b2c3d4e5f61234",
"last_four": "1234",
"brand": "visa",
"card_in_your_systems": false
}
Quando serve il numero carta
Per autorizzare un pagamento il PSP ha bisogno del numero carta reale. Tu invii il token: noi recuperiamo la carta dal vault e la inoltriamo in modo sicuro. Non la vedi mai.
Quando accade
Quando devi addebitare una carta salvata, invia il token al nostro endpoint forward. Risolviamo il numero carta nel vault e lo passiamo al PSP tramite connessione cifrata. Non appare nei tuoi log.
Chi può farlo
Solo i titolari di una chiave API con permesso forward o detokenize. Puoi restringere per IP, ambiente e volume di richieste.
Completamente auditato
Ogni recupero viene registrato: chi lo ha richiesto, quando e quale PSP. I log sono conservati per almeno 12 mesi e sono disponibili dalla dashboard o tramite API.
Livelli di protezione
Ogni richiesta viene autenticata
Solo dai tuoi server autorizzati
TLS con certificati verificati
Conservati per almeno 12 mesi
Due endpoint, flusso chiaro
Autenticati con la tua chiave API. Un endpoint crea il token, l'altro lo usa per pagare. JSON in entrata, JSON in uscita.
/v1/tokenize Scope: tokenize Corpo richiesta
{ "card_number": "4111111111111111", "expiry": "12/26", "cvv": "123" }
Response 200 OK
{ "token": "tok_pci_eu_a1b2c3d4e5f6", "last_four": "1111", "brand": "visa", "expires_at": "2026-12-31" }
/v1/forward Scope: forward Corpo richiesta
{ "token": "tok_pci_eu_a1b2c3d4e5f6", "target_url": "https://psp.eu/charge", "amount": 9900, "currency": "EUR" }
Risposta (dal PSP, proxied)
{ "status": "authorized", "transaction_id": "txn_9f8e7d6c", "amount": 9900, "currency": "EUR" }
Webhook e notifiche
Quando accade qualcosa (token creato, pagamento inviato, errore), inviamo un evento in tempo reale al tuo endpoint. Ogni messaggio è firmato così puoi verificarlo lato server.
Se la consegna fallisce, riproviamo fino a 5 volte con intervalli crescenti. Puoi anche riprodurre manualmente dalla dashboard entro 72 ore.
Tipi di evento supportati
token.created Nuovo token generato token.used Token inviato al PSP token.expired Token ha raggiunto il TTL token.deleted Token rimosso su richiesta forward.success PSP ha restituito 2xx forward.failure PSP ha restituito errore Esempio di payload webhook
your-server.com/webhooks/pci LIVE
{
"event": "token.created",
"timestamp": "2026-04-03T10:15:30Z",
"data": {
"token": "tok_pci_eu_a1b2c3d4e5f6",
"last_four": "1111",
"brand": "visa",
"merchant_id": "mrc_xyz789"
},
"signature": "sha256=4a8b9c..." // HMAC-SHA256
} Verifica della firma
Ogni webhook include l'header X-PCI-Signature. Calcola HMAC-SHA256 del body con il tuo secret e confrontalo con la firma. Se non corrispondono, rifiuta la richiesta.
SDK e modalità di integrazione
SDK per Node, Python e PHP, o campi ospitati in iFrame. Scegli ciò che si adatta al tuo stack.
JavaScript SDK
npmimport PCIProxy from '@pci-proxy-eu/js';
const pci = new PCIProxy({
merchantId: 'mrc_xyz789'
});
const { token } = await pci.tokenize({
cardNumber: '4111...'
}); Python SDK
PyPIfrom pci_proxy_eu import Client
client = Client(
merchant_id="mrc_xyz789",
api_key="sk_live_..."
)
result = client.tokenize(
card_number="4111..."
) PHP SDK
Composeruse PCIProxyEU\Client;
$client = new Client(
merchantId: 'mrc_xyz789',
apiKey: 'sk_live_...'
);
$result = $client->tokenize([
'card_number' => '4111...'
]); iFrame sicuri per il checkout
Per restare in SAQ A: i campi carta vengono renderizzati nei nostri iFrame. I dati carta non passano mai attraverso il tuo DOM.
<div id="card-number"></div>
<div id="card-expiry"></div>
<div id="card-cvv"></div>
<script>
PCIProxy.hostedFields({
merchantId: 'mrc_xyz789',
fields: {
cardNumber: '#card-number',
expiry: '#card-expiry',
cvv: '#card-cvv'
},
onTokenize: (result) => {
// token only, never the card number
console.log(result.token);
}
});
</script> Dettagli pagamento
Dati carta mai sul tuo server
SAQ A
Meno oneri PCI
CSS
Stile personalizzabile
Mobile
Responsive
Pronto a integrare?
Scopri cos'è un PCI Proxy, approfondisci la tokenizzazione o guarda come gli sviluppatori usano la piattaforma.