你设置了配送日期选择器,也测试过,一切正常。然后周六来了一张没有配送日期的订单。顾客点了 Buy it now,或者直接在商品页用 Apple Pay 付款,根本没见过你的日历。
这是 Shopify 配送日期应用最常见的抱怨,常见的建议是“把按钮隐藏起来”。这有帮助,但不是完整的解决办法。下面讲实际发生了什么、Shopify 仍会检查什么,以及在任何套餐上拦住无日期订单的设置。
简短回答
商品页上的 Buy It Now 和快捷支付按钮会跳过购物车,所以购物车上的配送日期选择器不会运行,在商品页选的日期也常常不会随之带过去。 Shopify 的结账校验仍会对每一次结账运行,快捷结账也不例外,所有套餐都一样。所以解决办法是:设一条要求有效日期的结账规则,再关掉会跳过你选择器的按钮。
日期为什么会丢
有三种不同的按钮,它们跳过的东西不同:
| 按钮 | 位置 | 跳过什么 |
|---|---|---|
| Buy it now(无品牌) | 商品页 | 购物车 |
| Shop Pay / Apple Pay / Google Pay | 商品页 | 购物车 |
| 快捷支付按钮 | 购物车页 | 它之前没有跳过任何东西,但见下文 |
Shopify 帮助中心说得很直白:顾客点击无品牌按钮时,“they skip the cart.”(他们会跳过购物车。)任何放在购物车页的日期选择器都不会运行。
商品页上的选择器则有另一个问题。包括 OrderRules 在内,很多日期应用是在顾客点击 Add to cart 时保存日期的。Buy It Now 不会点击 Add to cart,所以日期从未被保存。Shopify 还指出,加速结账按钮不支持购物车属性,而很多应用正是把日期存在那里。
在标准套餐上,没有办法在结账页内部显示日期选择器。那需要在信息、配送或付款步骤使用结账 UI 扩展,而这只有 Shopify Plus 才有。即使在 Plus 上,Shopify 员工也说过,Apple Pay 和 Google Pay 不支持由结账 UI 扩展写入属性。
所以在快捷支付这条路径上,日期是收集不到的。你能做的,是在顾客回去选好日期之前拒绝这张订单。
仍会检查什么:结账规则
Shopify 有一套独立的机制,不管按下的是哪个按钮:购物车与结账校验 Functions。应用会安装一条小规则,由 Shopify 在结账期间于服务器端运行。Shopify 的文档说,这“includes express checkouts, such as Shop Pay, PayPal, Google Pay, and Apple Pay.”(包括 Shop Pay、PayPal、Google Pay 和 Apple Pay 等快捷结账。)
对非 Plus 店铺,有两个细节很重要:
- 它在所有套餐上都能运行。 Shopify 允许任何店铺使用包含 Functions 的 App Store 公开应用。只有包含 Functions 的自定义应用才需要 Plus。
- 它在服务器端运行。 买家换个按钮也绕不过去,而且它会在付款时重新检查日期,而不是相信购物车页之前说过的话。
OrderRules 用一条校验 Function 在每次结账时检查配送日期。开启 结账时必须选择配送日期 后,它会拦下以下订单:
- 没有配送日期
- 日期已关闭,或是停送日期
- 日期早于最早允许的日期(备货时间和截单时间)
- 日期或时间段已满
我们测试时看到了什么
在装有 OrderRules 的开发店铺上,我们在一款蛋糕的商品页选了 10 月 30 日,选了时间段,然后点击 Buy it now。结账页打开时没有日期,并显示:
Please choose a delivery date before checking out.
顾客必须先回去,选好日期,再通过购物车结账,才能付款。这就是兜底在起作用。不过体验并不好,所以下一步是不让顾客走到这一步。
拦住无日期订单的三项设置
1. 结账时必须选择配送日期
在 OrderRules 中,打开 配送日期,在你给带日期商品设的规则上勾选 结账时必须选择配送日期。然后确认 Shopify 中的结账规则已开启:Settings → Checkout → Checkout rules。没有这条规则,结账时什么都不会检查。
正是这项设置让日期真正生效。其他设置都只是改善体验。
2. 在需要日期的商品上关闭动态结账按钮
在主题编辑器中,打开商品模板,找到购买按钮区块。大多数主题有一个 Show dynamic checkout buttons 复选框,取消勾选。这样顾客会通过 Add to cart 下单,在商品页选的日期会随商品一起带过去。
如果只有部分商品需要日期,就给它们单独用一个关闭按钮的商品模板,其他商品继续保留 Buy It Now。
3. 也要测试购物车页
快捷支付按钮也可能出现在购物车页和结账页顶部。如果你的日期放在购物车里(OrderRules 可以在那里为整张订单收集一个日期),请在真实设备上从购物车测试一次 Apple Pay 或 Shop Pay 结账。如果日期没有带过来,结账规则会用同样的提示拦下订单,这时你就知道也要把购物车里的这些按钮去掉。
Plus 与非 Plus:有什么不同
| 标准 Shopify 套餐 | Shopify Plus | |
|---|---|---|
| 商品页和购物车页上的日期选择器 | 有 | 有 |
| 结账页内的日期选择器 | 没有 | 有(OrderRules 指南) |
| 结账规则拦截缺失或已满的日期 | 是 | 是 |
| 规则覆盖 Shop Pay、Apple Pay、Google Pay | 是 | 是 |
| 顾客不离开结账页就能补上日期 | 不能,需要回到店铺 | 用结账页选择器可以,Apple Pay 和 Google Pay 除外 |
在 Plus 上,结账页选择器能让大多数顾客当场补上缺失的日期。在所有套餐上,真正拦下订单的都是这条规则。
OrderRules 做不到的
- 替你隐藏 Buy It Now。 这是主题设置,你需要在主题编辑器里关掉它。
- 在快捷支付路径上收集日期。 目前没有任何应用能写入 Apple Pay 或 Google Pay 的结账。规则只能拒绝这张订单。
- 预留最后一个名额。 容量是在每笔订单到达时才更新的,所以两位顾客在同一时刻为最后一个名额结账,两人都可能通过。
检查清单
- 带日期的商品已开启 结账时必须选择配送日期
- OrderRules 的规则已在 Settings → Checkout → Checkout rules 中开启
- 带日期的商品模板上已关闭 Show dynamic checkout buttons
- 已测试:商品页 → Buy It Now 被拦下,或没有这个按钮
- 已测试:购物车页 → Apple Pay 或 Shop Pay 保留日期,或被拦下
- 已测试:日期已满时显示
Delivery on {date} is fully booked. Please choose another date.