一套适合数字商品的 WooCommerce 结账流程:不要收货地址、已付款的订单自己完成, 以及让你可以立即交付的那份欧盟同意。
这篇是给已经装好 AumDigital 的人看的。它的全部设置都在 WooCommerce → 设置 → Digital goods —— 这个标签页是按它做的事命名的, 不是按插件名,照插件名去找会找不到。
界面是英文的,本文里的按钮名也保持英文。 AumDigital 目前没有发布简体中文语言包, 所以中文站的后台里这些名字就是英文原文。本文照原样写出来,你照着找得到; 译成中文反而会让你在界面上找不到那一项。
1. 它改什么,什么时候改
WooCommerce 是为包裹设计的。 用它卖许可证密钥、PDF、课程席位或预约,就意味着要 绕开它关于实物商品的三个前提。
AumDigital 改掉这三件事 —— 而且只在购物车里每一件都是虚拟商品的时候。 一旦加进一件实物,结账流程立刻变回 WooCommerce 自己的那一套,所有字段原样回来。 你不必在「数字店」和「混合店」之间二选一。
区块结账和短代码结账都支持。

⚠️ AumDigital 依赖 WooCommerce。 没有它,这个插件什么都不做。
2. Skip the address(跳过地址)
WooCommerce → 设置 → Digital goods → Checkout for an all-digital cart.
| 设置 | 默认 |
|---|---|
| Skip the address | 开 |
拿掉结账页上的街道、地址第二行、城市、邮编、州/省。东西不往任何地方寄,就不需要 地址 —— 买家本来要白填的五个字段就此消失。
有三个字段是故意留下的:
- 国家。 税是按它算的,而且好几家支付网关没有国家就拒绝付款。拿掉它两样都坏。
- 姓名和邮箱。 没有这两样,订单对你毫无用处。
公司和电话由 WooCommerce 自己的设置管,这个插件不碰。

2.1 它是怎么做到的,以及这为什么要紧
AumDigital 不是用 CSS 把字段藏起来,也没有替换结账流程。它用的是 WooCommerce 本来就有的那套机制:按国家的地址 locale —— 一个被标成 required => false, hidden => true 的字段,既不渲染也不校验。 WooCommerce 核心就是用它给阿联酋去掉邮编、给阿富汗去掉州的。
AumDigital 把同样的标记打在同样的字段上,只是把条件从「是哪个国家」换成 「购物车里有没有实物」。
实际后果有三条:两种结账方式都遵守它;校验和屏幕上看到的一致; 读取字段列表的主题或支付插件得到的是同一个答案。 用 CSS 藏的做法,这三条一条都不成立。
3. Complete paid virtual orders(已付款的虚拟订单直接完成)
WooCommerce → 设置 → Digital goods → Orders.
| 设置 | 默认 |
|---|---|
| Complete paid virtual orders | 开 |
WooCommerce 自己把一个已付款订单标成完成,只在每一件商品既是虚拟、又是可下载的 时候。这条规则比大多数数字店需要的窄得多。
一件虚拟但不是下载的商品 —— 你手工发的许可证密钥、一次预约、一个课程席位、一次咨询 —— 会让订单一直停在 Processing,直到有人打开它手工标记完成。 对卖这类东西的店来说,这意味着每一单都要先经过一个人,客户才收得到「订单已完成」 那封邮件。
打开这个开关之后,每一件虚拟商品都被当作「不需要处理」,于是一个已付款的全虚拟订单 直接变成 Completed。
⚠️ 只有真的收到钱的订单才受影响。 银行转账、支票、货到付款的订单仍然照常等待付款 —— 这个开关不会把一张没付钱的订单标成完成。
⚠️ 如果真的需要人做点什么,就别开 —— 手工发密钥、审核预约、核查资格。 那种情况下 Processing 正在发挥它的作用:它就是那张「还欠着活」的订单清单。

4. EU right of withdrawal(欧盟撤回权)
WooCommerce → 设置 → Digital goods → EU right of withdrawal.
| 设置 | 默认 |
|---|---|
| Ask for consent | 关 |
| Consent wording | 空 —— 用内置文案 |
在欧盟,消费者对数字内容的购买保有 14 天撤回权 —— 除非他在交付之前明确同意 立即交付,并同意因此失去该权利。
一家立即交付、却从不索取这份同意的店,处境是:货已经交出去了,而买家在十四天内 仍然可以退。
打开 Ask for consent 会在结账页的 Additional order information 那一块加一个 必选的勾选框,只在购物车全是数字商品时出现。不勾就下不了单。
4.1 记录了什么
同意会写到订单本身上,带上同意的时间,并出现在两处:
- 后台订单页上,显示为 Withdrawal right waived: Yes, at …
- 订单邮件里,一行 Withdrawal right waived
这份记录才是这个功能的意义所在。 勾选框是买家当时同意的动作; 而订单上那个时间戳,是几个月之后你手上还剩下的东西。
4.2 文案
Consent wording 留空时,AumDigital 用它自带的一句:
I expressly request that the digital content be delivered immediately, and I acknowledge that I thereby lose my right of withdrawal once delivery has begun.
(我明确要求立即交付该数字内容,并知悉一旦交付开始,我即因此失去撤回权。)
律师给了你文案、或者你需要用客户的语言写,就填自己的。填什么就原样显示什么。

⚠️ 这个插件给的是机制,不是法律意见。 你需不需要这份同意、它必须怎么写, 取决于你和你的买家各自在哪里。
5. 设置速查
| 分块 | 设置 | 默认 | 什么时候生效 |
|---|---|---|---|
| Checkout | Skip the address | 开 | 购物车全是虚拟商品 |
| Orders | Complete paid virtual orders | 开 | 订单全虚拟且已付款 |
| EU right of withdrawal | Ask for consent | 关 | 购物车全是数字商品 |
| EU right of withdrawal | Consent wording | 内置文案 | — |
6. 遇到问题
地址字段还在。 购物车里有东西没被标成虚拟。打开那个商品,在「商品数据」面板上勾 Virtual —— 必须每一件都是,不是大部分是就行。
订单还是停在 Processing。 要么 Complete paid virtual orders 没开, 要么订单里有一件不是虚拟的。一件实物就会把整张订单打回 WooCommerce 自己的规则。
税不算了。 检查国家字段是不是还在收集。AumDigital 是故意保留它的 —— 如果它没了,那是别的东西拿掉的。
支付网关拒单。 好几家网关要求有国家。和上一条同一个答案:国家必须留着。
同意勾选框不出现。 它只在购物车全是数字商品时显示,而且要 Ask for consent 是开着的。
找不到设置。 在 WooCommerce → 设置 → Digital goods —— 这个标签页是按它做的事 命名的,不是按插件名,而且它没有自己的顶级菜单。
完全没反应。 AumDigital 依赖 WooCommerce。WooCommerce 没启用时,这个插件会 完全不插手。