用途:面向在 Spree 电商系统中处理配送与履约的开发者,说明发货单(Shipment)、配送方式(ShippingMethod)、运费(ShippingRate)、库存地点(StockLocation)与发货状态机之间的关系。
主要能力:每个 Shipment 代表从某库存地点经某配送方式发出的包裹,包含库存单位与多个可选运费;配送方式通过 ShippingCategory 与 Zone 决定适用性,并由 Calculator 计算费用。内置计算器包括 FlatRate、FlatPercentItemTotal、PerItem、FlexiRate、PriceSack、DigitalDelivery。状态机为 pending、ready、shipped、canceled,转换有 ready、pend、ship、cancel、resume,并触发 shipment.shipped、shipment.canceled、shipment.resumed 事件。库存按 Variant 与 StockLocation 记录,变更应通过 StockMovement 而非直接改 count_on_hand。订单路由(默认 Spree::OrderRouting::Strategy::Rules)决定由哪些库存地点履约,拆分器再在单个地点内分包。
使用方式:自定义计算器需继承 Spree::ShippingCalculator 并实现 compute_package(package),再注册到 Spree.calculators.shipping_methods;可订阅 shipment.shipped 事件对接外部仓库;可装饰 Spree::Stock::Estimator 调整默认选中与排序。手动履约可用 Spree::Fulfillments::Create(5.5+)。退货流程为 ReturnAuthorization、CustomerReturn、Reimbursement、Refund 或 StoreCredit。
适用场景与限制:适用于多仓库、3PL、按重量或件数计费、数字商品等配送配置。资料未提供具体价格、平台支持范围或性能数据;部分 API 与路由策略随版本变化,Legacy 策略将在 6.0 移除。