> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Consegna di Prodotti Digitali

> Fornisci automaticamente file scaricabili, link esterni e istruzioni per il download quando i clienti acquistano. La Consegna di Prodotti Digitali è il tipo di autorizzazione per i File Digitali. I file vengono distribuiti con URL di download presigned a ogni concessione e vengono revocati quando l'accesso viene ritirato.

## Panoramica

La Consegna di Prodotti Digitali è il tipo di autorizzazione **File Digitali**. Carichi i tuoi file una volta su un'autorizzazione File Digitali, colleghi l'autorizzazione a un prodotto, e Dodo Payments fornisce link di download presigned a ogni cliente pagante tramite email e il portale clienti.

L'autorizzazione supporta:

* **Caricamenti di file ospitati**: memorizza i file su Dodo Payments e fornisce loro tramite URL presigned a breve durata.
* **Link di download esterni**: collega a file ospitati su Dropbox, Google Drive, S3 o qualsiasi URL.
* **Istruzioni di download**: testo libero mostrato al cliente sulla pagina dell'ordine e nell'email di consegna.

Puoi combinare tutti e tre su un'unica autorizzazione.

## Caratteristiche Principali

<CardGroup cols={2}>
  <Card title="File Upload" icon="upload">
    Carica file (PDF, ZIP, immagini, video, ecc.) fino a 500 MiB. I file vengono trasmessi in streaming e archiviati in modo efficiente.
  </Card>

  <Card title="Multiple Files" icon="files">
    Allega quanti file vuoi a un'unica autorizzazione.
  </Card>

  <Card title="External Links" icon="link">
    Fornisci link di download esterni (Dropbox, Google Drive, URL S3 firmati) come alternativa o aggiunta.
  </Card>

  <Card title="Presigned URLs" icon="lock">
    I file ospitati vengono forniti tramite URL presigned a breve durata. Ogni URL di download scade automaticamente dopo circa 15 minuti.
  </Card>
</CardGroup>

***

## Configura Consegna di Prodotti Digitali

<Steps>
  <Step title="Open Entitlements">
    Vai su **Autorizzazioni** nel dashboard di Dodo Payments e fai clic su **+** per creare una nuova autorizzazione.
  </Step>

  <Step title="Choose Digital Files">
    Seleziona **Consegna di Prodotti Digitali** come integrazione.
  </Step>

  <Step title="Add files, links, and instructions">
    Configura qualsiasi combinazione di:

    * **File**: carica uno o più file. Ogni caricamento restituisce un `file_id` che viene aggiunto all'autorizzazione.
    * **URL esterno**: un link HTTPS pubblicamente raggiungibile consegnato insieme ai file ospitati.
    * **Istruzioni**: testo libero mostrato al cliente (ad es., "Decomprimi ed esegui setup.sh").

    <Frame>
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/digital-files/create.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=33ad03277809d14585d247442c191462" alt="Autorizzazione File Digitali con campi di caricamento file, URL esterno e istruzioni" style={{ maxHeight: '500px', width: 'auto' }} width="1669" height="989" data-path="images/entitlements/digital-files/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Salva. L'autorizzazione è ora disponibile per essere allegata a qualsiasi prodotto.
  </Step>
</Steps>

## Allegare ai Prodotti

Apri un prodotto, espandi **Impostazioni Avanzate → Autorizzazioni & Crediti**, e seleziona la tua autorizzazione File Digitali. L'autorizzazione viene consegnata a ogni acquisto riuscito o abbonamento attivo collegato a quel prodotto.

<Frame caption="Attaching the Digital Files entitlement to a product alongside other entitlements.">
  <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=965ad78262791fa8dbb712b4fdf89538" alt="Pannello di autorizzazioni del prodotto con Consegna di Prodotti Digitali selezionata" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1197" data-path="images/entitlements/attach-to-product.png" />
</Frame>

***

## Come Funziona la Consegna

La consegna dei File Digitali segue il processo standard del [ciclo di vita della concessione](/features/entitlements/introduction#how-grants-work):

| Evento                                           | Comportamento                                                                                                                                                                                 |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payment.succeeded` (una tantum)                 | Emetti una concessione. La concessione fornisce URL di download presigned validi per \~15 minuti; i clienti possono aggiornarli riaprendo il link dell'email o la pagina del portale clienti. |
| `subscription.active`                            | Emetti una concessione. I file restano accessibili finché l'abbonamento è attivo.                                                                                                             |
| `subscription.renewed`                           | Nessuna azione. La stessa concessione continua; nuovi URL presigned vengono creati a ogni richiesta.                                                                                          |
| `subscription.on_hold` / `cancelled` / `expired` | Revoca la concessione. Nuovi URL presigned non vengono più forniti.                                                                                                                           |
| `subscription.plan_changed`                      | Revoca la vecchia concessione; emetti una nuova per l'autorizzazione del nuovo piano.                                                                                                         |
| `refund.succeeded` (una tantum)                  | Revoca la concessione.                                                                                                                                                                        |
| Revoca manuale                                   | Revoca con `revocation_reason: manual`.                                                                                                                                                       |

<Warning>
  La revoca impedisce a Dodo Payments di emettere nuovi URL di download, ma **non** invalida le copie che un cliente ha già scaricato. Tratta i download dei file ospitati come "forniti una volta letti."
</Warning>

***

## Esperienza del Cliente

### Conferma Acquisto

Dopo una transazione riuscita, il cliente riceve un'email con link di download e eventuali istruzioni configurate.

<Frame>
  <img src="https://mintcdn.com/dodopayments/mOQO5ej_lx0yH9p-/images/digital-product-delivery/2.png?fit=max&auto=format&n=mOQO5ej_lx0yH9p-&q=85&s=54f5247f6d67fe5bb48736682995e23e" alt="Email di conferma acquisto che mostra link di download per i prodotti digitali" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/2.png" />
</Frame>

### Accesso al Portale Clienti

I clienti possono recuperare nuovamente i link di download in qualsiasi momento dal [Portale Clienti](/features/customer-portal). La pagina del portale genera nuovi URL presigned su richiesta, quindi lo stesso acquisto continua a funzionare anche dopo che i link dell'email sono scaduti.

<Frame>
  <img src="https://mintcdn.com/dodopayments/mOQO5ej_lx0yH9p-/images/digital-product-delivery/3.png?fit=max&auto=format&n=mOQO5ej_lx0yH9p-&q=85&s=490c6755474c1f00a93f7adde7dabb63" alt="Interfaccia del portale clienti che mostra i prodotti digitali disponibili per il download" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/3.png" />
</Frame>

<Check>
  I clienti possono scaricare i file direttamente dalle email di conferma o accedervi in qualsiasi momento attraverso il loro portale.
</Check>

***

## Gestione Programmata dei File

### Carica un file su un'autorizzazione

<CodeGroup>
  ```typescript TypeScript theme={null} theme={null}
  import DodoPayments from 'dodopayments';
  import fs from 'node:fs';

  const client = new DodoPayments({
    bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
    environment: 'test_mode',
  });

  await client.entitlements.files.upload('ent_files_abc', {
    file: fs.createReadStream('./pro-bundle.zip'),
    filename: 'pro-bundle.zip',
  });
  ```

  ```bash cURL theme={null} theme={null}
  curl -X POST "https://test.dodopayments.com/entitlements/ent_files_abc/files" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -F "file=@./pro-bundle.zip" \
    -F "filename=pro-bundle.zip"
  ```
</CodeGroup>

### Elenca concessioni e risolvi URL di download

```typescript theme={null} theme={null}
const grants = await client.entitlements.grants.list('ent_files_abc', {
  customer_id: 'cus_abc123',
});

for (const grant of grants.items) {
  for (const file of grant.digital_product_delivery.files) {
    console.log(file.filename, file.download_url, `expires in ${file.expires_in}s`);
  }
}
```

### Rimuovi un file da un'autorizzazione

```typescript theme={null} theme={null}
await client.entitlements.files.delete('ent_files_abc', 'df_a4f6c1de');
```

***

## Considerazioni Importanti

* **Gli URL presigned scadono velocemente.** Gli URL di download restituiti nei payload delle concessioni o negli eventi webhook sono validi per \~15 minuti. Non memorizzarli; recuperali nuovamente quando il cliente deve scaricare di nuovo.
* **Aggiornare i file influisce solo sugli acquisti futuri.** Sostituzioni o rimozioni di file non alterano retroattivamente i download già emessi. I clienti precedenti possono comunque recuperare la versione che era valida quando la loro concessione è stata creata.
* **I rimborsi non invalidano le copie scaricate.** Un cliente che ha già scaricato un file mantiene quella copia. Per contenuti revocabili (media con licenze, accesso limitato nel tempo), abbina File Digitali con [Chiavi di Licenza](/features/license-keys) e valida a runtime.
* **Per contenuti sensibili, preferisci URL esterni con la propria autenticazione.** Gli URL presigned di Dodo Payments sono a breve durata ma non autenticati all'interno del loro intervallo; chiunque abbia l'URL può scaricare in quel lasso di tempo. Contenuti ospitati esternamente e protetti da account offrono garanzie più forti.

***

## Gestione API

<CardGroup cols={2}>
  <Card title="Create Entitlement" icon="plus" href="/api-reference/entitlements/create-entitlement">
    Crea un diritto ai file digitali con URL esterno opzionale e istruzioni.
  </Card>

  <Card title="Upload File" icon="upload" href="/api-reference/entitlements/upload-file">
    Carica un file (fino a 500 MiB) e aggiungilo al diritto.
  </Card>

  <Card title="Delete File" icon="trash" href="/api-reference/entitlements/delete-file">
    Rimuovi un file dal diritto.
  </Card>

  <Card title="List Grants" icon="users" href="/api-reference/entitlements/list-grants">
    Elenca i permessi e leggi gli URL di download risolti.
  </Card>

  <Card title="Update Entitlement" icon="pen" href="/api-reference/entitlements/update-entitlement">
    Aggiorna istruzioni, URL esterno o sostituisci file.
  </Card>

  <Card title="Revoke Grant" icon="ban" href="/api-reference/entitlements/revoke-grant">
    Revoca manualmente l'accesso di un cliente.
  </Card>
</CardGroup>

***

## Webhook

La consegna e la revoca dei file digitali attivano i quattro [eventi webhook `entitlement_grant.*`](/developer-resources/webhooks/intents/entitlement-grant). Per le concessioni File Digitali, il payload include un oggetto `digital_product_delivery` con l'elenco dei file risolti (URL presigned, nomi file, dimensioni), l'opzionale `instructions`, e il opzionale `external_url`.

```json theme={null} theme={null}
"digital_product_delivery": {
  "files": [
    {
      "file_id": "df_a4f6c1de",
      "download_url": "https://files.dodopayments.com/.../pro-bundle.zip?Signature=...",
      "filename": "pro-bundle.zip",
      "content_type": "application/zip",
      "file_size": 18742390,
      "expires_in": 900
    }
  ],
  "instructions": "Unzip and run setup.sh from the project root.",
  "external_url": null
}
```

***

## Consegna di Prodotti Digitali Legacy

<Note>
  I prodotti configurati con il vecchio blocco `digital_product_delivery` sul prodotto stesso sono stati **automaticamente migrati** a un'autorizzazione File Digitali. I file esistenti caricati sotto l'API legacy dei file del prodotto sono preservati; continuano a essere scaricabili e apparire nei payload delle concessioni contrassegnati con `source: "legacy"`. Gli aggiornamenti futuri (aggiungere file, modificare istruzioni, sostituire l'URL esterno) devono essere effettuati modificando l'autorizzazione File Digitali migrata sotto **Autorizzazioni**.

  I campi legacy a livello di prodotto (`digital_product_delivery.external_url`, `digital_product_delivery.instructions`) continuano a essere popolati nelle risposte dei prodotti per la compatibilità con versioni precedenti, ma l'autorizzazione è la fonte di verità andando avanti.
</Note>

***

## Buone Pratiche

* **Tratta i download come operazioni una tantum.** I clienti condivideranno o perderanno i link, quindi progetta il tuo prodotto assumendo che ciò che scaricano sia loro da conservare.
* **Usa le istruzioni per impostare aspettative.** Per pacchetti multi-file, aggiungi una riga `instructions` che spieghi cosa installare per primo o come combinare i file.
* **Controlla il limite di 500 MiB.** Gli oggetti più grandi (dataset multi-GB, corsi video) dovrebbero essere ospitati esternamente e collegati tramite `external_url` invece di essere caricati.
* **Combina con chiavi di licenza per accesso revocabile.** Se è necessario revocare l'accesso a funzionalità del prodotto dopo un rimborso, associa il diritto ai file digitali con un diritto alla chiave di licenza e convalida la chiave in fase di esecuzione.
* **Testa il flusso di aggiornamento del portale clienti.** Conferma che un cliente possa tornare al portale una settimana dopo e ottenere ancora un link di download funzionante. Questo è il percorso di recupero principale quando i link email scadono.
