ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Spree 6 如何配置数字商品:数字交付档案与数字交付档案与订单后自动发送下载链接?

2026/9/15 21:49:50 拓冰建站 浏览量
Spree 6 如何配置数字商品:数字交付档案与数字交付档案与订单后自动发送下载链接? Spree 6 如何配置数字商品数字交付档案与数字交付档案与订单后自动发送下载链接【免费下载链接】spreeOpen Source eCommerce Platform for B2B, Marketplace, and Enterprise. REST API, TypeScript SDK, and production-ready Next.js storefront. Self-host it. Own your stack. No vendor lock-in. Zero platform fees.项目地址: https://gitcode.com/GitHub_Trending/sp/spree在 Spree 6 里卖一个电子书、PDF 或素材包你要完成两件事让商品在结账时不索要收货地址并在客户下单付款后自动收到带下载链接的邮件。Spree 6 用产品的delivery profile交付档案来决定这一点——把产品分配到内置的Digital档案上结账、履约和客户体验都会自动适配。本文基于 Sell Digital Products 的完整流程从给产品设置数字交付档案、上传文件到订单确认后自动发放并邮件发送下载链接每一步都可以照做。前提条件一个可用的 Spree 6 商店产品已创建本文示例中的prod_86Rf07xd4z是文档示例的产品 ID替换为你自己的产品 IDAdmin API 访问能力Admin SDKadminClient或带X-Spree-API-Key请求头的 cURL示例中的sk_xxx替换为你的 Admin API Key要交付的文件例如guide.pdf及其大小和校验值checksum。理解一个关键设定在 Spree 6 中数字商品不是一个独立的商品类型而是一个交付决策——变体的 delivery profile 是数字档案时该变体就不需要收货地址纯数字购物车会跳过整个交付步骤。而是否携带可下载文件是另一个独立决策物理变体也可以附带保修 PDF。第一步把产品设为数字商品商店自带一个Digital交付档案把它分配给产品即可。用 Admin SDK 先列出交付档案、找到kind digital的那个再更新产品// 将商店内置的数字交付档案分配给产品 const { data: profiles } await adminClient.deliveryProfiles.list() const digital profiles.find((p) p.kind digital) await adminClient.products.update(prod_86Rf07xd4z, { delivery_profile_id: digital.id, })或直接用 cURLcurl -X PATCH https://api.mystore.com/api/v3/admin/products/prod_86Rf07xd4z \ -H X-Spree-API-Key: sk_xxx \ -H Content-Type: application/json \ -d { delivery_profile_id: dp_digital }不通过 API 而在 dashboard 中操作时这是产品页面上的Shipping profile字段。注意产品创建时交付档案会自动分配来自产品类型的模板或商店默认值只有在要改变它时才需要显式设置。在 Fulfillments 概念文档中digital类型的交付方法行为被定义为 Available the moment the order is placed. No address needed.订单一下单即可用无需地址——这就是下一步自动发货的依据。第二步上传文件并作为数字资产挂到变体上数字文件必须放在私有存储它只能通过短时效签名链接交付永远不会是公开 URL。Admin API 会拒绝落到了公共存储桶的 blob——而且挂载操作不会把文件在服务之间移动所以上传到公共桶的文件即使看起来挂上了实际上仍公开可读。请求直传时必须带private: true// 1. 申请私有存储上传位PUT 上传文件2. 把 blob 挂为数字资产 const { direct_upload, signed_id } await adminClient.directUploads.create({ private: true, blob: { filename: guide.pdf, byte_size: file.size, checksum, content_type: application/pdf }, }) await fetch(direct_upload.url, { method: PUT, headers: direct_upload.headers, body: file }) await adminClient.products.digitalAssets.create(prod_86Rf07xd4z, { signed_id })等价的 cURL 是先POST /api/v3/admin/products/{产品ID}/digital_assetsbody 为{ signed_id: eyJfcmFpbHMi..., authorized_clicks: 5, authorized_days: 30 }signed_id为上一步直传返回的值。下载限额参数authorized_clicks可下载次数和authorized_days链接有效天数可以省略省略时继承商店级设置。商店默认值在 Products → Digital products 概念文档中给出字段含义商店默认值authorized_clicks文件可被下载次数5authorized_days购买后链接有效天数7商店级默认值和开关位于 dashboard 的Settings → Store。如果同一商品里既有长期有效的下载、又有限期课程文件可以在单个文件上覆盖这两项来混用。第三步订单确认后自动发放链接并发送邮件这一步没有需要配置的东西。订单一下单数字履约提供器自动运行不需要地址、不需要人工派发并按每个购买单位、每个文件一条的规则发放下载链接Spree::DigitalLink——购买 3 份双文件组合包买家会拿到 6 条链接。重复运行履约是幂等的不会重复发链接。随后Spree::DigitalAssetMailer把链接作为一条独立于订单确认邮件的 your files are ready 消息发出。独立成一条邮件的意义在于即使你替换了订单确认模板它也能存活并且可以随时从订单页重新发送。有一个启用条件要注意这条文件就绪邮件只在订单确实包含数字链接、且商店开启了 consumer transactional emails 时发送。如果你的商店通过自己的前台或 webhooks 交付文件可以关掉这个开关。验证客户拿到文件了吗文档给出的验证方式有四处邮件本身客户收到一条带下载链接的独立邮件。链接里的 token 就是凭证——它本身能识别商店所以邮件链接不需要任何 API key 就能工作。订单页管理员在订单页能看到买家收到的每个文件、已用掉多少次下载、何时失效、以及是否已用尽。下载计数与事件客户每次按链接下载计数会扣减并发出digital_link.downloaded事件成功下载、扣费之后发出可通过 webhooks 订阅用于审计或分析。客户账户登录的客户可以在自己的下载端点看到跨所有订单、历次被授予的全部链接。关于下载的技术细节一次下载是对链接 token 的GET交付产物生成成功之后才计次所以提供器故障或文件缺失只会返回错误、不扣客户的名额。在 Spree 6.0 中5.6 到 6.0 的升级说明 指出下载端点改为返回302重定向到一个短时效签名 URL而不是直接输出文件字节因此客户端必须跟随重定向——绝大多数 HTTP 客户端和浏览器本来就会这样做。digital_asset_link_expire_time商店偏好设置决定单个签名 URL 的寿命默认 5 分钟上限 1 小时并且会被钳制得不会超过其所属下载链接的剩余有效期。访问用尽或文件被中途替换后如何恢复管理员从订单页重置该链接即可——计数清零、时效重新起算。另外替换资产文件不会让已发放的链接失效链接解析经过资产而非底层 blob商家可以在销售中途换文件而不破坏任何人的访问。混合购物车物理与数字商品同一订单购物车里同时有物理商品和数字商品时不需要任何特殊处理。Spree 按交付档案把订单拆成独立的 fulfillments物理商品收地址、走发货数字商品直接发放链接。只有当至少一件商品真正需要配送时交付步骤才会出现在结账里纯数字购物车永远看不到这一步。边界与下一步想交付的不是上传文件而是按需生成的授权码或你自有系统的权益交付环节是可插拔的注册一个自定义 digital asset provider 即可。空provider_type表示内置的文件提供器。具体做法见 Build a Custom Digital Asset Provider。概念细节资产、链接、限额、提供器见 Products → Digital productsdashboard 侧能力Digital files 卡片、下载可见性、权限见 Digital Products Admin Capabilities。配置完成后的落点是产品挂在 Digital 交付档案上、文件已作为数字资产挂载下一笔订单确认后客户无需填地址、无需等待人工操作就能收到含下载链接的邮件。【免费下载链接】spreeOpen Source eCommerce Platform for B2B, Marketplace, and Enterprise. REST API, TypeScript SDK, and production-ready Next.js storefront. Self-host it. Own your stack. No vendor lock-in. Zero platform fees.项目地址: https://gitcode.com/GitHub_Trending/sp/spree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考