SuperAPI AI 工具集

spree-checkout

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:面向在 Spree 6 上开发结账流程的场景,说明 Cart 到 Order 的拆分、结账需求(requirements)与建议性步骤,以及 Spree::Checkout::Registry 的定制方式。

主要能力:Spree::Cart 负责购物与结账阶段,可任意顺序收集商品、地址、配送和支付;每次读取购物车都会计算 Spree::Checkout::Requirements,返回 { step, field, code, message } 数组,内置需求包括 line_items_required、email_required、ship_address_required、delivery_method_required、payment_required、po_number_required、order_minimum_not_met,完成时还会检查 out_of_stock、discontinued、quantity_rule_violated、guest_checkout_not_allowed。结账步骤为建议性(address、delivery、payment、confirm、complete),服务端不因步骤拒绝写入。

使用方式:在 server/config/initializers/spree.rb 中通过 Spree::Checkout::Registry.add_requirement、register_step、remove_requirement、remove_step 定制;避免使用 config.to_prepare,以免重复注册。完成调用 Spree.carts_complete_workflow.call(cart: cart),支持 expected_total、payment_pending 参数,返回成功或错误。Store API 通过 PATCH /api/v3/store/carts/:id 写入购物车 metadata,完成时深拷贝到订单。

适用场景:Spree 6 结账定制、需求校验、步骤调整、完成流程与钩子(carts.complete.validate 等)集成。

限制:空需求数组不保证完成成功;移除步骤仅移除标签,其下需求仍会拦截完成;不要在 before_finalize 或 after_finalize 中拒绝,因支付已完成;购物车 metadata 属客户输入,不可存放可信数据。5.x 的 order.next!、checkout_flow、state 等 API 已移除。