概述
Digital Product Delivery 是 Digital Files 权益类型。您只需将文件上传到 Digital Files 权益一次,然后将该权益附加到产品。Dodo Payments 随后会通过电子邮件和 Customer Portal 向每位付款客户提供预签名下载链接。 Digital Files 权益支持:- 托管文件上传:Dodo Payments 存储您的文件,并通过短时有效的预签名 URL 提供文件。
- 外部下载链接:每个权益可配置一个 URL,指向托管在其他位置的文件,例如 Dropbox、Google Drive 或 S3。
- 下载说明:在客户订单页面和交付邮件中向客户显示的自由文本。
关键功能
File Upload
Multiple Files
External Links
Presigned URLs
设置 Digital Product Delivery
1
Open Entitlements
在控制台中转到 Entitlements,然后点击 + 创建权益。
2
Choose Digital Files
选择 Digital Files,并为权益输入一个 Name。
3
Add Files, Links, and Instructions
配置以下字段的任意组合:
- Upload files:上传一个或多个文件。每次上传都会返回
file_id,并将文件添加到权益的digital_file_ids中。 - External Download Link:一个以
http://或https://开头、客户可以访问的 URL。Dodo Payments 会将其与托管文件一同交付。 - Instructions:向客户显示的自由文本,例如“解压并运行 setup.sh。”

4
Save the Entitlement
点击 Create Entitlement。现在,您可以将该权益附加到任何产品。
附加到产品
打开一个产品,转到其 Entitlements 部分,然后选择您的 Digital Files 权益。对于该产品的每次成功购买或有效订阅,Dodo Payments 都会交付此权益。
Attaching the Digital Files entitlement to a product alongside other entitlements.
交付工作原理
Digital Files 交付遵循标准的授予生命周期。每个事件对 Digital Files 授予的影响如下:客户体验
购买确认
付款成功后,客户会收到一封包含下载链接和您配置的说明的电子邮件。
客户门户访问
在授予有效期间,客户可以从 Customer Portal 再次获取下载链接。该门户会按需生成新的预签名 URL,因此即使邮件中的链接过期,购买内容仍可正常使用。
客户可以从确认邮件中下载文件,也可以随时从 Customer Portal 中打开文件。
程序化管理文件
将文件上传到权益
要上传文件,请将其作为multipart/form-data 发送到 file 字段中。可选的 filename 字段必须位于 file 部分之前,因为 Dodo Payments 会忽略其后发送的字段。如果没有 filename,Dodo Payments 会使用上传文件的名称。响应会返回新的 file_id。
列出授予并解析下载 URL
每个 Digital Files 授予都有一个digital_product_delivery 对象,其中每个文件都包含一个新的预签名 URL。要读取这些 URL,请列出该权益的授予:
从权益中移除文件
要解除文件关联,请传入其file_id 和权益 ID:
重要注意事项
- **预签名 URL 很快就会过期。**授予 payload 和 webhook 事件中的下载 URL 有效期为 15 分钟。不要存储这些 URL。客户需要再次下载时,请获取新的 URL。
- **更新文件只会影响未来的购买。**替换或移除文件不会改变已经发放的下载内容。每个授予都会保留其创建时的权益配置,因此过去的客户仍可获取当时有效的版本。
- **退款不会使已下载的副本失效。**已经下载文件的客户会保留该副本。对于许可证受限媒体或限时访问等可撤销内容,请将 Digital Files 与 License Keys 搭配使用,并在运行时验证密钥。
- **对于敏感内容,建议使用带有独立身份验证的外部 URL。**Dodo Payments 的预签名 URL 有效期较短,但任何拥有该 URL 的人都可以在其过期前下载文件。将外部托管内容置于账户登录保护之后,可以让您获得更多控制权。
API 管理
Create Entitlement
Upload File
Delete File
List Grants
Update Entitlement
Revoke Grant
Webhooks
Digital file 交付和撤销会发送四个entitlement_grant.* webhook 事件。对于 Digital Files 授予,payload 包含一个 digital_product_delivery 对象,其中包括解析后的文件列表、可选的 instructions 和可选的 external_url。每个文件都包含一个预签名的 download_url、filename、content_type、以字节为单位的 file_size,以及 expires_in,即 URL 过期前的秒数:
Legacy Digital Product Delivery
在产品本身配置了旧版
digital_product_delivery 区块的产品,已自动迁移到 Digital Files 权益。通过旧版产品文件 API 上传的文件会被保留:这些文件仍可下载,并会与新上传的文件一起出现在授予 payload 中。权益的 digital_files 配置会在 legacy_file_ids 列表中跟踪这些文件。要添加文件、更改说明或替换外部 URL,请在 Entitlements 下编辑迁移后的 Digital Files 权益。产品响应仍会包含旧版产品级字段(digital_product_delivery.external_url、digital_product_delivery.instructions)以保持向后兼容,但权益才是事实来源。最佳实践
- **将下载视为一次性交付。**客户可能会分享或丢失链接,因此应基于客户下载的任何内容都归其所有这一前提来设计产品。
- **使用说明明确客户预期。**对于多文件捆绑包,请添加一行
instructions,说明应先安装什么或如何组合文件。 - **注意 500 MiB 上限。**对于多 GB 数据集或视频课程等较大的资源,请将其托管在外部,并使用
external_url链接到这些资源,而不是上传它们。 - **与 License Keys 结合使用以实现可撤销访问。**要在退款后撤销客户对产品内功能的访问权限,请将 Digital Files 权益与 License Key 权益搭配使用,并在运行时验证密钥。
- **测试 Customer Portal 刷新流程。**确认客户一周后返回门户时,仍能获取有效的下载链接。邮件链接过期后,门户是主要的恢复途径。