Shopify 结账体验

结账页的服务条款勾选框怎么做才拦得住

现象#

加了一个「我已阅读并同意条款」的复选框,顾客不勾也能点「付款」,订单里也查不到任何勾选记录。

原因#

  • 复选框只是 UI,没有拦截逻辑就不会阻止买家继续付款
  • block_progress 未声明时平台忽略扩展返回的拦截结果
  • 勾选状态放在组件 state 里,切换步骤重新挂载就丢
  • 2026-07 起 useBuyerJourneyIntercept 弃用,长期要迁到校验 Function

处理步骤#

  1. 勾选后立刻 applyAttributeChange 写 terms_accepted,别只存 state
  2. 在 toml 的 [extensions.capabilities] 里开启 block_progress = true
  3. 在 purchase.checkout.actions.render-before 读属性判断是否勾选
  4. 未勾选时返回 behavior:'block',错误用 target 指到复选框本身
  5. 单页与三页结账各下一笔不勾选的测试单,确认都能停住

验收标准#

不勾选时点「付款」停在原步骤且复选框标红;勾选后能付款,订单附加信息里出现 terms_accepted=yes。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。