> ## 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.

# Livraison de Produits Numériques

> Fournissez automatiquement des fichiers téléchargeables, des liens externes et des instructions de téléchargement lors de l'achat par les clients. La Livraison de Produits Numériques est le type de droit Fichiers Numériques. Les fichiers sont fournis avec des URLs de téléchargement présignées à chaque octroi et révoqués lorsque l'accès est retiré.

## Aperçu

La Livraison de Produits Numériques est le type de droit **Fichiers Numériques**. Vous téléchargez vos fichiers une fois sur un droit Fichiers Numériques, attachez le droit à un produit, et Dodo Payments fournit des liens de téléchargement présignés à chaque client payant via email et le portail client.

Le droit prend en charge :

* **Téléchargements de fichiers hébergés** : entreposez des fichiers sur Dodo Payments et servez-les via des URLs présignées à courte durée de vie.
* **Liens de téléchargement externes** : lien vers des fichiers hébergés sur Dropbox, Google Drive, S3 ou n'importe quelle URL.
* **Instructions de téléchargement** : texte libre affiché au client sur sa page de commande et dans l'email de livraison.

Vous pouvez combiner les trois dans un seul droit.

## Caractéristiques Clés

<CardGroup cols={2}>
  <Card title="File Upload" icon="upload">
    Téléchargez des fichiers (PDF, ZIP, images, vidéos, etc.) jusqu'à 100 MB. Les fichiers sont diffusés et stockés efficacement.
  </Card>

  <Card title="Multiple Files" icon="files">
    Ajoutez autant de fichiers que nécessaire à un seul droit.
  </Card>

  <Card title="External Links" icon="link">
    Fournissez des liens de téléchargement externes (Dropbox, Google Drive, URLs S3 signées) comme alternative ou en complément.
  </Card>

  <Card title="Presigned URLs" icon="lock">
    Les fichiers hébergés sont servis via des URLs présignées à courte durée de vie. Chaque URL de téléchargement expire automatiquement après environ 15 minutes.
  </Card>
</CardGroup>

***

## Configurer la Livraison de Produits Numériques

<Steps>
  <Step title="Open Entitlements">
    Allez dans **Droits** dans votre tableau de bord Dodo Payments et cliquez sur **+** pour créer un nouveau droit.
  </Step>

  <Step title="Choose Digital Files">
    Sélectionnez **Livraison de Produits Numériques** comme intégration.
  </Step>

  <Step title="Add files, links, and instructions">
    Configurez n'importe quelle combinaison de :

    * **Fichiers** : téléchargez un ou plusieurs fichiers. Chaque téléchargement renvoie un `file_id` qui est ajouté au droit.
    * **URL externe** : un lien HTTPS publiquement accessible fourni avec les fichiers hébergés.
    * **Instructions** : texte libre affiché au client (e.g., "Décompressez et exécutez 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="Droit de Fichiers Numériques avec téléchargement de fichiers, URL externe et champs d'instructions" style={{ maxHeight: '500px', width: 'auto' }} width="1669" height="989" data-path="images/entitlements/digital-files/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Enregistrez. Le droit est maintenant disponible pour être attaché à n'importe quel produit.
  </Step>
</Steps>

## Attacher aux Produits

Ouvrez un produit, développez **Paramètres Avancés → Droits & Crédits**, et sélectionnez votre droit Fichiers Numériques. Le droit est fourni à chaque achat réussi ou abonnement actif lié à ce produit.

<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="Panneau des droits du produit montrant la Livraison de Produits Numériques sélectionnée" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1197" data-path="images/entitlements/attach-to-product.png" />
</Frame>

***

## Comment la Livraison Fonctionne

La livraison de Fichiers Numériques suit le cycle de vie standard [de l'octroi](/features/entitlements/introduction#how-grants-work) :

| Événement                                        | Comportement                                                                                                                                                                                         |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payment.succeeded` (ponctuel)                   | Délivrer un octroi. L'octroi contient des URLs de téléchargement présignées valables environ 15 minutes ; les clients peuvent les actualiser en rouvrant le lien email ou la page du portail client. |
| `subscription.active`                            | Délivrer un octroi. Les fichiers restent accessibles tant que l'abonnement est actif.                                                                                                                |
| `subscription.renewed`                           | Aucun effet. Le même octroi continue ; de nouvelles URLs présignées sont créées à chaque récupération.                                                                                               |
| `subscription.on_hold` / `cancelled` / `expired` | Révoquer l'octroi. De nouvelles URLs présignées ne sont plus émises.                                                                                                                                 |
| `subscription.plan_changed`                      | Révoquer l'ancien octroi ; délivrer un nouveau pour le droit du nouveau plan.                                                                                                                        |
| `refund.succeeded` (ponctuel)                    | Révoquer l'octroi.                                                                                                                                                                                   |
| Révocation manuelle                              | Révoquer avec `revocation_reason: manual`.                                                                                                                                                           |

<Warning>
  La révocation empêche Dodo Payments d'émettre de nouvelles URLs de téléchargement, mais elle **n'invalide pas** les copies qu'un client a déjà téléchargées. Considérez les téléchargements de fichiers hébergés comme "livrés une fois lus".
</Warning>

***

## Expérience Client

### Confirmation d'Achat

Après une transaction réussie, le client reçoit un email avec les liens de téléchargement et les instructions que vous avez configurées.

<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 de confirmation d'achat montrant les liens de téléchargement pour les produits numériques" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/2.png" />
</Frame>

### Accès au Portail Client

Les clients peuvent récupérer les liens de téléchargement à tout moment depuis le [Portail Client](/features/customer-portal). La page du portail génère des URLs présignées fraîches à la demande, donc le même achat continue de fonctionner même après l'expiration des liens de l'email.

<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="Interface du portail client montrant les produits numériques disponibles pour téléchargement" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/3.png" />
</Frame>

<Check>
  Les clients peuvent télécharger des fichiers directement depuis les emails de confirmation ou y accéder à tout moment via leur portail.
</Check>

***

## Gérer les Fichiers Programmatiquement

### Téléverser un fichier vers un droit

<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>

### Lister les octrois et résoudre les URLs de téléchargement

```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`);
  }
}
```

### Supprimer un fichier d'un droit

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

***

## Considérations Importantes

* **Les URLs présignées expirent rapidement.** Les URLs de téléchargement renvoyées dans les charges utiles des octrois ou les événements webhook sont valables environ 15 minutes. Ne les stockez pas ; les récupérer à nouveau lorsque le client a besoin de télécharger à nouveau.
* **La mise à jour des fichiers affecte uniquement les achats futurs.** Remplacer ou supprimer un fichier ne modifie pas rétroactivement les téléchargements déjà fournis. Les anciens clients peuvent toujours récupérer la version qui était en vigueur lorsque leur octroi a été créé.
* **Les remboursements n'invalident pas les copies téléchargées.** Un client qui a déjà téléchargé un fichier conserve cette copie. Pour les contenus révocables (médias à licence restreinte, accès limité dans le temps), associez les Fichiers Numériques avec [les Clés de Licence](/features/license-keys) et validez à l'exécution.
* **Pour les contenus sensibles, préférez les URLs externes avec leur propre authentification.** Les URLs présignées de Dodo Payments sont à courte durée de vie mais non authentifiées dans leur fenêtre ; toute personne disposant de l'URL peut télécharger dans cette fenêtre. Les contenus hébergés à l'externe et protégés par un compte offrent de meilleures garanties.

***

## Gestion via API

<CardGroup cols={2}>
  <Card title="Create Entitlement" icon="plus" href="/api-reference/entitlements/create-entitlement">
    Créez un droit Fichiers Numériques avec une URL externe et des instructions optionnelles.
  </Card>

  <Card title="Upload File" icon="upload" href="/api-reference/entitlements/upload-file">
    Téléversez un fichier (jusqu'à 100 MB) et ajoutez-le au droit.
  </Card>

  <Card title="Delete File" icon="trash" href="/api-reference/entitlements/delete-file">
    Supprimez un fichier du droit.
  </Card>

  <Card title="List Grants" icon="users" href="/api-reference/entitlements/list-grants">
    Listez les octrois et lisez les URLs de téléchargement résolues.
  </Card>

  <Card title="Update Entitlement" icon="pen" href="/api-reference/entitlements/update-entitlement">
    Mettez à jour les instructions, l'URL externe, ou remplacez les fichiers.
  </Card>

  <Card title="Revoke Grant" icon="ban" href="/api-reference/entitlements/revoke-grant">
    Révoquez manuellement l'accès d'un client.
  </Card>
</CardGroup>

***

## Webhooks

La livraison et la révocation de fichiers numériques déclenchent les quatre [événements webhook `entitlement_grant.*`](/developer-resources/webhooks/intents/entitlement-grant). Pour les octrois Fichiers Numériques, la charge utile inclut un objet `digital_product_delivery` avec la liste de fichiers résolus (URLs présignées, noms de fichiers, tailles), et les optionnels `instructions` et `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
}
```

***

## Livraison Numérique Héritée

<Note>
  Les produits configurés avec l'ancien bloc `digital_product_delivery` sur le produit lui-même ont été **automatiquement migrés** vers un droit Fichiers Numériques. Les fichiers existants téléchargés sous l'ancienne API de fichier produit sont préservés ; ils continuent à être téléchargeables et apparaissent dans les charges utiles d'octroi avec la mention `source: "legacy"`. Les futures mises à jour (ajout de fichiers, changement d'instructions, remplacement de l'URL externe) doivent être effectuées en éditant le droit Fichiers Numériques migré sous **Droits**.

  Les champs au niveau du produit hérités (`digital_product_delivery.external_url`, `digital_product_delivery.instructions`) continuent à être remplis dans les réponses de produit pour garantir la compatibilité descendante, mais le droit est la source de vérité à l'avenir.
</Note>

***

## Bonnes Pratiques

* **Traitez les téléchargements comme ponctuels.** Les clients partageront ou perdront les liens, alors concevez votre produit en supposant que tout ce qu'ils téléchargent leur appartient.
* **Utilisez les instructions pour définir les attentes.** Pour les ensembles de fichiers multiples, ajoutez une ligne `instructions` expliquant quoi installer en premier ou comment combiner les fichiers.
* **Surveillez la limite de 100 MB.** Les artefacts plus volumineux (ensembles de données multi-GB, cours vidéo) doivent être hébergés à l'externe et liés via `external_url` au lieu d'être téléchargés.
* **Combinez avec les Clés de Licence pour un accès révocable.** Si vous devez révoquer l'accès aux fonctionnalités du produit après un remboursement, associez le droit Fichiers Numériques avec un droit de Clé de Licence et validez la clé à l'exécution.
* **Testez le flux de rafraîchissement du portail client.** Confirmez qu'un client peut revenir sur le portail une semaine plus tard et obtenir encore un lien de téléchargement fonctionnel. C'est le principal chemin de récupération lorsque les liens des emails expirent.
