# Checklist QA (/it/online/getting-started/checklist)



Esegua questa checklist nell'[ambiente sandbox](./testing), poi completi i controlli di produzione prima di accettare pagamenti live. La checklist
copre esiti dei pagamenti, verifica, nuovi tentativi, configurazione e sicurezza. Spunti ogni controllo man mano che lo verifica.

<ChecklistProgress />

## 1. Esiti dei pagamenti [#1-payment-outcomes]

<ChecklistItem id="OP-PO-1" code="PO-1" title="Pagamento riuscito">
  Paghi con 

  `4242 4242 4242 4242`

  . La sessione recuperata ha 

  `paymentStatus: successful`

   e l'ordine viene evaso una sola volta.
</ChecklistItem>

<ChecklistItem id="OP-PO-2" code="PO-2" title="Carta rifiutata">
  Paghi con 

  `4916 0184 7581 4056`

  . L'ordine resta non pagato e un nuovo tentativo con la carta del pagamento riuscito va a buon fine finché la sessione è aperta.
</ChecklistItem>

<ChecklistItem id="OP-PO-3" code="PO-3" title="3-D Secure">
  Paghi con 

  `4012 0018 0000 0016`

   e completi la verifica (challenge). L'evasione attende lo stato recuperato.
</ChecklistItem>

<ChecklistItem id="OP-PO-4" code="PO-4" title="Errore di elaborazione">
  Usi una carta di prova che simula un errore di elaborazione nel gateway di test. L'ordine resta non pagato anche se il modulo della carta ha accettato la carta.
</ChecklistItem>

<ChecklistItem id="OP-PO-5" code="PO-5" title="Stati non gestiti">
  Il Suo codice tratta 

  `unpaid`

  , 

  `failed`

  , 

  `action_needed`

  , 

  `cancelled`

   e i valori sconosciuti come non pagati. Si veda 

  [Stato del pagamento](/online/integration/api_integration#payment-status)

  .
</ChecklistItem>

## 2. Verifica ed evasione [#2-verification-and-fulfillment]

<ChecklistItem id="OP-VF-1" code="VF-1" title="Controllo lato server">
  L'evasione confronta riferimento dell'ordine, importo, valuta e 

  `paymentStatus`

   con l'ordine salvato, non con il reindirizzamento.
</ChecklistItem>

<ChecklistItem id="OP-VF-2" code="VF-2" title="URL di successo senza pagamento">
  Visiti direttamente l'URL di successo senza pagare. L'ordine resta non pagato.
</ChecklistItem>

<ChecklistItem id="OP-VF-3" code="VF-3" title="Link di annullamento">
  Segua il link di annullamento di Checkout. L'ordine resta non pagato e il Suo codice non presume uno stato 

  `cancelled`

   sulla sola base della navigazione.
</ChecklistItem>

<ChecklistItem id="OP-VF-4" code="VF-4" title="Ritorno ripetuto">
  Dopo un pagamento riuscito, ricarichi due volte la pagina di ritorno. L'ordine viene evaso una sola volta.
</ChecklistItem>

## 3. Nuovi tentativi e interruzioni [#3-retries-and-interruptions]

Usi un nuovo ordine di prova e una nuova sessione per ogni caso indipendente. Per i test dei nuovi tentativi, riutilizzi l'ordine originale, il corpo della richiesta e la idempotency key.

<ChecklistItem id="OP-RI-1" code="RI-1" title="Risposta di creazione persa">
  Scarti la risposta di creazione nel Suo ambiente di test e ripeta la richiesta con lo stesso 

  `Idempotency-Key`

   e lo stesso corpo. Viene restituita la sessione originale e non ne viene creata una seconda.
</ChecklistItem>

<ChecklistItem id="OP-RI-2" code="RI-2" title="Corpo modificato">
  Riutilizzi una chiave con un corpo diverso. L'API restituisce HTTP 409 e il Suo codice non lo tratta come una nuova sessione.
</ChecklistItem>

<ChecklistItem id="OP-RI-3" code="RI-3" title="Il cliente non torna mai">
  Paghi, poi chiuda la scheda prima del ritorno. Il Suo job di riconciliazione recupera la sessione salvata e registra il pagamento una sola volta.
</ChecklistItem>

<ChecklistItem id="OP-RI-4" code="RI-4" title="Timeout dello stato">
  Faccia andare in timeout il recupero. La Sua app conserva l'ID della sessione, lascia l'esito in sospeso e non crea una sessione sostitutiva.
</ChecklistItem>

<ChecklistItem id="OP-RI-6" code="RI-6" title="Sessione sostituita">
  Crei una seconda sessione per lo stesso ordine non pagato. Il primo URL riporta 

  `expired`

   e non può accettare pagamenti. Dopo che l'ordine è stato pagato, la creazione di un'altra sessione restituisce HTTP 409.
</ChecklistItem>

<ChecklistItem id="OP-RI-5" code="RI-5" title="Scadenza della sessione">
  Attenda oltre 

  `expiresAt`

   (30 minuti) e riapra l'URL. Non è possibile avviare un nuovo pagamento e l'ordine resta non pagato.
</ChecklistItem>

## 4. Impostazioni di Checkout [#4-checkout-settings]

<ChecklistItem id="OP-CS-1" code="CS-1" title="Esercente approvato">
  Ogni esercente per cui accetta pagamenti è nella tabella 

  **Checkout merchants**

   con stato 

  **Ready**

  .
</ChecklistItem>

<ChecklistItem id="OP-CS-2" code="CS-2" title="Destinazioni di ritorno">
  Gli URL predefiniti di successo e di annullamento sono impostati per la credenziale che usa (i valori predefiniti dell'organizzazione per la Secret key, le impostazioni dell'esercente per una chiave dell'esercente), usano HTTPS e le loro origini esatte sono presenti in 

  **Allowed websites**

   di quella credenziale.
</ChecklistItem>

<ChecklistItem id="OP-CS-3" code="CS-3" title="Sostituzioni per sessione">
  Ogni 

  `successUrl`

   o 

  `cancelUrl`

   che invia corrisponde a un'origine configurata.
</ChecklistItem>

<ChecklistItem id="OP-CS-4" code="CS-4" title="Wallet">
  Apple Pay e Google Pay sono attivati o disattivati come previsto. Google Pay live ha un Google Pay merchant ID configurato.
</ChecklistItem>

<ChecklistItem id="OP-CS-6" code="CS-6" title="Wallet nei pagamenti incorporati">
  Il totale nel wallet corrisponde all'ordine sul server. Modificare la spedizione o gli sconti lo aggiorna. L'annullamento nel wallet lascia disponibile il checkout e i pagamenti in sospeso bloccano un altro addebito.
</ChecklistItem>

<ChecklistItem id="OP-CS-5" code="CS-5" title="Branding">
  Colore e logo appaiono correttamente in 

  **Checkout preview**

   sia nel layout desktop sia in quello mobile.
</ChecklistItem>

## 5. Sicurezza [#5-security]

<ChecklistItem id="OP-SE-1" code="SE-1" title="Chiave sul server">
  La Sua chiave checkout dell'esercente o la Secret key dell'organizzazione si trova solo nella configurazione del server, mai nel codice del browser, nei bundle delle app o nel sistema di controllo versione.
</ChecklistItem>

<ChecklistItem id="OP-SE-2" code="SE-2" title="Totali gestiti dal server">
  Importo, valuta e ID dell'ordine provengono dal Suo ordine salvato, mai dal browser.
</ChecklistItem>

<ChecklistItem id="OP-SE-3" code="SE-3" title="Endpoint per i pagamenti incorporati">
  Se usa i pagamenti incorporati, 

  `prepare`

   e 

  `submit`

   sono vincolati a un checkout autenticato o a un cookie HTTP-only firmato e le origini delle richieste che modificano i dati vengono convalidate.
</ChecklistItem>

<ChecklistItem id="OP-SE-4" code="SE-4" title="Content Security Policy">
  Se usa i pagamenti incorporati, la Sua CSP consente le origini degli script e dei frame di Tapaya e le verifiche 3-D Secure continuano a funzionare con essa.
</ChecklistItem>

## 6. Configurazione della sandbox [#6-sandbox-configuration]

<ChecklistItem id="OP-PR-1" code="PR-1" title="API sandbox">
  `TAPAYA_CHECKOUT_API_URL`

   punta a 

  `https://api.sandbox.tapaya.com`

  .
</ChecklistItem>

<ChecklistItem id="OP-PR-2" code="PR-2" title="Chiave sandbox">
  L'integrazione usa una chiave checkout dell'esercente o una Secret key dell'organizzazione della sandbox, caricata dalla configurazione del server.
</ChecklistItem>

<ChecklistItem id="OP-PR-3" code="PR-3" title="Job di riconciliazione">
  Il job che recupera le sessioni in sospeso è pianificato nel Suo ambiente di test.
</ChecklistItem>

## 7. Preparazione alla produzione [#7-production-readiness]

<ChecklistItem id="OP-LV-1" code="LV-1" title="Preparazione dell'esercente">
  L'esercente live ha completato l'onboarding con i pagamenti online, ha ottenuto l'approvazione del processore di pagamento e ha un gateway di pagamento configurato. L'esercente è 

  **Ready**

   nelle impostazioni di Checkout.
</ChecklistItem>

<ChecklistItem id="OP-LV-2" code="LV-2" title="Credenziali live">
  Il server usa le credenziali di produzione e 

  `https://api.tapaya.com`

  . Le integrazioni tramite SDK impostano 

  `TAPAYA_ENVIRONMENT=production`

  . Le chiavi sandbox e le carte di prova non vengono usate per i pagamenti live.
</ChecklistItem>

<ChecklistItem id="OP-LV-3" code="LV-3" title="Wallet live">
  I domini dei negozi per Apple Pay sono attivi. Google Pay live ha un merchant ID configurato. I wallet supportati completano un pagamento e tornano a funzionare dopo un annullamento.
</ChecklistItem>

<ChecklistItem id="OP-LV-4" code="LV-4" title="Riconciliazione live">
  Gli URL di ritorno di produzione, la verifica sul server, l'evasione e il job di riconciliazione usano la configurazione di produzione.
</ChecklistItem>

<ChecklistProgress />

<Callout title="Approvazione finale" type="tip">
  Completi i test in sandbox e i controlli di preparazione alla produzione. Usi **Reset** per avviare un ciclo pulito, poiché le spunte dei cicli di test precedenti restano salvate in questo browser.
</Callout>
