Sicurezza di Checkout
Le regole lato server che mantengono sicura un'integrazione di Checkout, dalla gestione delle chiavi alla verifica di un pagamento prima dell'evasione dell'ordine.
Tapaya ospita i campi della carta e gestisce tokenizzazione, autenticazione della carta e addebito, quindi i Suoi sistemi non gestiscono mai dati della carta in chiaro. A Lei resta il server che crea i pagamenti e decide quando un ordine è pagato. Queste regole valgono sia per il Hosted Checkout sia per i pagamenti incorporati.
Per sapere come Tapaya tratta i dati del titolare della carta e i dati personali, consulti Protezione dei dati e privacy.
Conservare le chiavi sul server
- Salvi la chiave checkout dell'esercente o la Secret key dell'organizzazione solo nella configurazione lato server. Nessuna delle due va nel codice del browser, nei bundle delle app mobili o nel sistema di controllo versione. Al browser arrivano solo la publishable key e il client secret di un pagamento.
- Chiami la Checkout API dell'esercente dal Suo ambiente server. Non esegua queste richieste nel browser del cliente.
- Una chiave checkout dell'esercente dà accesso solo al proprio esercente. Al backend dell'esercente fornisca quella chiave, mai la Secret key della Sua organizzazione.
- La Secret key dell'organizzazione ha privilegi su tutta l'organizzazione. In modalità piattaforma, la invii con
X-Tapaya-Merchant-Tokenin ogni richiesta; l'API verifica che l'esercente appartenga all'organizzazione della chiave. Si veda Autenticazione di Checkout. - Le chiavi dell'esercente vengono mostrate una sola volta e salvate solo come hash. Revochi una chiave che sospetta sia stata esposta, dopo averne creata una sostitutiva.
Gestire l'ordine sul server
- Calcoli il totale dell'ordine sul Suo server e salvi l'ordine prima di creare una sessione o un tentativo di pagamento.
- Legga importi, valuta e ID dell'ordine dallo snapshot dell'ordine salvato. Non accetti valori sostitutivi inviati dal browser.
- Per i pagamenti incorporati, vincoli i Suoi endpoint
prepareesubmita un checkout autenticato o a un cookie HTTP-only firmato e convalidi l'origine delle richieste che modificano i dati.
Verificare prima di evadere
Un reindirizzamento del browser, una visita al Suo URL di successo, i parametri della query, i cookie di ritorno e i messaggi del browser sono dati di navigazione. Nessuno di essi prova il pagamento.
- Recuperi la sessione dal Suo server e confronti riferimento dell'ordine, importo, valuta e stato del pagamento con l'ordine salvato.
- Evada l'ordine solo quando questo controllo conferma
paymentStatus: successful. Una risposta HTTP 200 da sola non prova il pagamento. - Registri l'evasione in modo atomico, così che ritorni ripetuti o controlli di stato ripetuti non possano evadere due volte lo stesso ordine.
- Se la sessione è ancora
unpaido il recupero non riesce, conservi l'ID della sessione e ripeta il controllo con un numero limitato di tentativi. Non crei un'altra sessione perché il primo esito è sconosciuto: una nuova sessione per l'ordine sostituisce quella vecchia. I webhook non sono ancora disponibili, quindi esegua la riconciliazione tramite polling.
Ripetere le richieste in sicurezza
- Salvi una idempotency key univoca insieme all'ordine prima di creare una sessione. Se una richiesta va in timeout o la sua risposta va persa, la ripeta con la stessa chiave e un corpo invariato.
- Non generi una nuova chiave per un esito incerto. Le regole di ripetizione sono descritte in Idempotenza ed errori.
Limitare le origini di reindirizzamento
- Aggiunga a Allowed websites nelle impostazioni di Checkout solo le origini dei Suoi negozi.
- Usi HTTPS per i negozi pubblicati online. Le sostituzioni di
successUrlecancelUrlper singola sessione devono comunque corrispondere a un'origine configurata.
Segnalare un problema di sicurezza
Se sospetta una vulnerabilità o un incidente di sicurezza, contatti il team di sicurezza come descritto in Contatti.
Manca qualcosa in questa pagina?Richieda una funzionalità. Alleghiamo questa pagina, così il team vede il contesto.