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

# Digital Produktleverans

> Leverera nedladdningsbara filer, externa länkar och nedladdningsinstruktioner automatiskt när kunder köper. Digital Product Delivery är typen för rättigheterna Digital Files. Filer utfärdas med förtecknade nedladdnings-URL:er vid varje beviljande och återkallas när åtkomst dras tillbaka.

## Översikt

Digital Product Delivery är typen för rättigheterna **Digital Files**. Du laddar upp dina filer en gång till ett Digital Files-rättighet, kopplar rättigheten till en produkt, och Dodo Payments levererar förtecknade nedladdningslänkar till varje betalande kund via e-post och kundportalen.

Rättigheten stöder:

* **Värdade filuppladdningar**: lagra filer på Dodo Payments och leverera dem via kortlivade förtecknade URL:er.
* **Externa nedladdningslänkar**: länka till filer som värdas på Dropbox, Google Drive, S3, eller vilken URL som helst.
* **Nedladdningsinstruktioner**: fri text som visas för kunden på deras ordersida och i leverans-e-posten.

Du kan blanda alla tre på en enda rättighet.

## Viktiga Funktioner

Upload files (PDF, ZIP, images, videos, etc.) up to 100 MB. Files are streamed and stored efficiently.

Attach as many files as you need to a single entitlement.

Provide external download links (Dropbox, Google Drive, signed S3 URLs) as an alternative or addition.

Hosted files are served via short-lived presigned URLs. Each download URL expires automatically after roughly 15 minutes.

***

## Ställ in Digital Product Delivery

Gå till **Rättigheter** i din Dodo Payments-kontrollpanel och klicka på **+** för att skapa en ny rättighet.

Välj **Digital Product Delivery** som integration.

Konfigurera valfri kombination av:

* **Filer**: ladda upp en eller flera filer. Varje uppladdning returnerar en `file_id` som läggs till rättigheten.
* **Extern URL**: en offentligt tillgänglig HTTPS-länk som levereras tillsammans med värdade filer.
* **Instruktioner**: fri text som visas för kunden (t.ex., "Unzip och kör setup.sh").

<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="Digital Files-rättighet med filuppladdning, extern URL och instruktioner" style={{ maxHeight: '500px', width: 'auto' }} width="1669" height="989" data-path="images/entitlements/digital-files/create.png" />

Spara. Rättigheten är nu tillgänglig att koppla till vilken produkt som helst.

## Koppla till Produkter

Öppna en produkt, expandera **Avancerade Inställningar → Rättigheter & Krediter**, och välj din Digital Files-rättighet. Rättigheten levereras vid varje lyckat köp eller aktiv prenumeration kopplad till den produkten.

<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="Produktens rättighetspanel som visar Digital Product Delivery valt" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1197" data-path="images/entitlements/attach-to-product.png" />

***

## Hur Leveransen Fungerar

Digital Files-leverans följer standarden för [rättighetslivscykel](/features/entitlements/introduction#how-grants-work):

| Händelse                                         | Beteende                                                                                                                                                                                |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payment.succeeded` (engångs)                    | Utfärda en rättighet. Rättigheten bär förtecknade nedladdnings-URL:er som är giltiga i \~15 minuter; kunder kan uppdatera dem genom att öppna e-postlänken eller kundportalssidan igen. |
| `subscription.active`                            | Utfärda en rättighet. Filer förblir åtkomliga medan prenumerationen är aktiv.                                                                                                           |
| `subscription.renewed`                           | No-op. Samma rättighet fortsätter; nya förtecknade URL:er skapas vid varje hämtning.                                                                                                    |
| `subscription.on_hold` / `cancelled` / `expired` | Återkalla rättigheten. Nya förtecknade URL:er utfärdas inte längre.                                                                                                                     |
| `subscription.plan_changed`                      | Återkalla den gamla rättigheten; utfärda en ny för den nya planens rättighet.                                                                                                           |
| `refund.succeeded` (engångs)                     | Återkalla rättigheten.                                                                                                                                                                  |
| Manuell återkallelse                             | Återkalla med `revocation_reason: manual`.                                                                                                                                              |

Återkallelse stoppar Dodo Payments från att utfärda nya nedladdnings-URL:er, men det **anser inte** ogiltigförklara kopior som en kund redan har laddat ner. Behandla värdade filnedladdningar som "levererade en gång lästa."

***

## Kundupplevelse

### Bekräftelse av köp

Efter en lyckad transaktion får kunden ett e-postmeddelande med nedladdningslänkar och eventuella instruktioner du konfigurerade.

<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="Orderbekräftelse-e-posta som visar nedladdningslänkar för digitala produkter" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/2.png" />

### Åtkomst till kundportalen

Kunder kan återhämta nedladdningslänkar när som helst från [Kundportalen](/features/customer-portal). Portalsidan genererar nya förtecknade URL:er vid behov, så samma köp fortsätter fungera även efter att e-postlänkarna har gått ut.

<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="Kundportalgränssnitt som visar tillgängliga digitala produkter för nedladdning" style={{ maxHeight: '500px', width: 'auto' }} width="1920" height="1080" data-path="images/digital-product-delivery/3.png" />

Kunder kan ladda ner filer direkt från bekräftelse-e-poster eller nå dem när som helst via sin portal.

***

## Hantera Filer Programmatisk Vä

### Ladda upp en fil till en rättighet

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

### Lista rättigheter och lös nedladdnings-URL:er

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

### Ta bort en fil från en rättighet

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

***

## Viktiga Överväganden

* **Förtecknade URL:er går snabbt ut.** Nedladdnings-URL:er som returneras i rättighetslämningsbelastningar eller webhook-händelser är giltiga i \~15 minuter. Spara dem inte; hämta dem igen när kunden behöver ladda ner igen.
* **Uppdatering av filer påverkar endast framtida köp.** Att ersätta eller ta bort en fil förändrar inte retroaktivt nedladdningar som redan har utfärdats. Tidigare kunder kan fortfarande återhämta den version som var aktuell när deras rättighet skapades.
* **Återbetalningar annullerar inte hämtade kopior.** En kund som redan laddat ner en fil behåller den kopian. För rättighetsbegränsat innehåll (licensbegränsat media, tidsbegränsad åtkomst), para ihop Digital Files med [Licensnycklar](/features/license-keys) och validera vid körning.
* **För känsligt innehåll, föredra externa URL:er med egen autentisering.** Dodo Payments förtecknade URL:er är kortlivade men oautentiserade inom sitt fönster; vem som helst med URL:en kan ladda ner inom det fönstret. Externt värdat, kontoavgränsat innehåll ger starkare garantier.

***

## API-hantering

Skapa en Digital Files-rättighet med valfri extern URL och instruktioner.

Ladda upp en fil (upp till 100 MB) och lägg till den till rättigheten.

Ta bort en fil från rättigheten.

Lista rättigheter och läs de lösta nedladdnings-URL:erna.

Uppdatera instruktioner, externa URL:er, eller ersätt filer.

Återkalla manuellt en kunds åtkomst.

***

## Webhooks

Digital filleverans och återkallelse utlöser de fyra [`entitlement_grant.*` webhook-händelserna](/developer-resources/webhooks/intents/entitlement-grant). För Digital Files-rättigheter inkluderar belastningen ett `digital_product_delivery`-objekt med den lösta fillistan (förtecknade URL:er, filnamn, storlekar), den valfria `instructions`, och den valfria `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
}
```

***

## Äldre Digital Product Delivery

## Bästa praxis

* **Behandla nedladdningar som engångsaktiviteter.** Kunder kommer att dela eller tappa bort länkar, så utforma din produkt med antagandet att allt de laddar ner är deras att behålla.
* **Använd instruktioner för att ställa förväntningar.** För paket med flera filer, lägg till en `instructions` rad som förklarar vad som ska installeras först eller hur man kombinerar filerna.
* **Var uppmärksam på 100 MB-gränsen.** Större artefakter (dataset i flera GB, videokurser) bör hostas externt och länkas via `external_url` istället för att laddas upp.
* **Kombinera med licensnycklar för återkallningsbar åtkomst.** Om du behöver återkalla åtkomst till funktioner i produkten efter en återbetalning, kombinera Digital Files-rättigheten med en Licensnyckel och validera nyckeln vid körning.
* **Testa uppdateringsflödet för kundportalen.** Bekräfta att en kund kan återvända till portalen en vecka senare och fortfarande få en fungerande nedladdningslänk. Detta är den primära återställningsvägen när e-postlänkar har gått ut.
