---
title: "Buy It Now 和 Apple Pay 会跳过配送日期选择器：结账仍会检查什么"
description: "Buy It Now 和快捷支付按钮会跳过购物车，所以在商品页选的配送日期到不了结账。本文讲清原因、每个套餐上 Shopify 仍会检查什么，以及拦住无日期订单的三项设置。"
contentType: "blog"
locale: "zh"
localized: true
source: "https://orderrules.com/zh/blog/shopify-buy-it-now-skips-delivery-date"
slug: "shopify-buy-it-now-skips-delivery-date"
date: "2026-10-28"
tags:
  - "shopify"
  - "delivery dates"
  - "delivery date picker"
  - "express checkout"
  - "buy it now"
  - "apple pay"
  - "shop pay"
  - "checkout validation"
  - "shopify functions"
---
你设置了配送日期选择器，也测试过，一切正常。然后周六来了一张没有配送日期的订单。顾客点了 **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 指南](/docs/delivery/delivery-date-at-checkout)） |
| 结账规则拦截缺失或已满的日期 | 是 | 是 |
| 规则覆盖 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.`

相关阅读：[英国烘焙店在选配送日期应用前问的 10 个问题](/blog/shopify-delivery-date-app-bakery-questions) · [配送日期选择器该放在哪里](/blog/where-to-put-delivery-date-picker-shopify) · [最佳配送日期选择器应用对比](/blog/best-shopify-delivery-date-picker-apps)
