1. 先确定按订单收费,还是按件计算运费
Stripe Checkout 的运费费率是针对整笔订单的固定金额,不会按商品数量自动相乘。[3] 因此,在配置配送选项之前,先回答一个商业问题:你是按订单收取配送费,还是按件数、重量、目的地或承运商报价计算?
一则公开开发者提问展示了把运费除以商品数量、再加进商品单价的写法,同时询问如何使用运费费率。[9] 这说明确实存在计费建模困惑,但不能据此推断搜索规模,也不代表这种绕行方案合理。
以下仅为示例,不计税费和折扣:三件商品每件 20 美元,加上一笔 5 美元的订单运费,总额是 65 美元。运费部分是 5 美元,而非 15 美元。如果你的政策是每件收取 5 美元,就需要另外计算出这笔订单的 15 美元配送费;绑定一个 5 美元费率并不能表达按件收费的规则。[3] 我们建议把商品价格和配送政策分开管理,避免把运费隐藏在单价运算中。
2. 用固定备选方案表达配送服务,并明确默认项
对于支付模式的会话,可以通过 shipping_options 传入已保存的运费费率标识,也可以使用 shipping_rate_data 在创建会话时定义费率。[3] 官方示例提供免费配送和 15 美元的次日航空配送;数组的第一项会预先选中,但客户可以选择任意一项。[3]
示意配置片段为 shipping_options: [{shipping_rate: "shr_standard_v2"}];其中标识只是占位符,并非真实费率。可复用费率适合标准化的整单配送报价;内联费率适合由应用预先确定、供本次会话使用的金额。无论哪一种,都不会把固定费率变成自动按件计算的公式。[3]
展示配送选项前,先确定名称、金额、币种和预计送达时间。默认项也是商业决策:不要仅因应用对记录的排序方式,就意外把最贵的方案排在首位。这些是实施建议,并非 Stripe 额外规定。
3. 改金额要换费率,并归档被替代的费率
Stripe 说明,运费费率中某币种已设置的金额不能再修改,但可以新增币种。在管理后台调整收费时,需要归档原费率,再创建新费率。[3] 这里替换的是运费费率,不是要求修改商品的价格对象。
假设标准配送从 5 美元涨至 7 美元。建议的上线流程是:创建 7 美元的新费率,把创建后续会话所用配置切换到新标识,停用旧报价,并在运营记录中保留新旧标识。协调切换时间,避免旧配置继续发放已退役的报价。接口中的 active 参数表示该费率是否可用于新的购买。[7]
不要因为存在更新接口,就认为可以覆盖已有币种的金额。[3][7] 也不要假定归档会重新定价已付款订单,或自动修正已打开的会话:本文所用资料并未确立这些效果。变更前应盘点未结束会话,并明确处理政策。后台虽然提供取消归档操作,但应用仍需管理实际传入哪个费率标识。[3]
4. 区分一次性支付与订阅的边界
文档所述配送选项仅适用于 payment 模式的 Checkout 会话;订阅模式不支持运费费率。[3][8] 按月配送实物的业务,不能假定复制一次性支付的配送配置,就会形成每期自动收取的运费。
在选择订阅计费方案前,先写清运费究竟只收一次、每个账期收取,还是仅在实际发货时收取。本文并未确立一种受支持的周期性运费实现方式。应另行核对订阅与账单设计,而不是为了显示配送选择器,就把订阅购买改成支付模式。这里要判断的是此配送选项机制是否适合,而非推论 Stripe 能否支持所有实物订阅计费模式。
5. 动态运费属于另一项集成决策
通用运费指南把动态更新指向预览功能,但当前按界面类型划分的指南明确说明:完整托管页面和完整嵌入式页面不支持动态定制配送选项。[3][4][5] 因此,不能把通用页面的预览提示理解为所有 Checkout 界面都能随地址变化重新计算运费。
嵌入式表单的专门指南记录了另一套流程:由商户服务器计算配送选项并更新会话。该流程仅支持支付模式,不支持快捷结账组件,也不支持 permissions 参数;其客户端与服务器的更新流程还规定了 20 秒超时。[8] 这些限制说明嵌入式表单与完整嵌入式页面并非同一种集成。本文不是动态运费实现教程。
选择建议:已知且固定的整单运费,适合此费率模型。如果需要按地址实时获取报价,应先确认具体界面及限制,再承诺这类体验。如果运费随购物篮件数变化,应规定由应用在何时重算、由哪种受支持集成承载新报价;不要承诺运费费率对象本身会自动完成这些动作。[3][8]
6. 上线或调价前,复核运费成本模型
- 写清计费单位:按订单、按件、按包裹,或其他商户自定义规则。
- 依赖配送选项之前,核对会话模式。[3] 计划动态更新之前,确认具体界面类型。[4][5][8]
- 确认各方案的金额、币种、首项即默认项,以及配送服务描述。[3]
- 调价时记录新旧费率标识、应用配置切换点,以及未结束会话的处理政策。
- 建议的沙盒检查:比较一件与三件商品,逐一选择配送方案,在切换费率后创建新会话,并观察已打开会话的表现。本文并未执行这些检查。
付款成功后,Stripe 文档说明可通过 shipping_cost.amount_total 获取已收取的运费,通过 shipping_cost.shipping_rate 获取客户选择的费率。[3] 我们建议用这些字段对照购买时的配送政策,而不是用今天的费率目录重算历史订单。这属于运费核对,不能取代付款就绪判断或履约控制。
本文范围是运费价格结构与费率生命周期,不是账单地址收集、配送国家限制,也不是可调整数量后的最终商品履约。本文基于公开文档研究和编辑建议,不代表已执行 Stripe 集成测试,不构成 PayIn 功能承诺,也不是法律或税务意见。
来源与日期
核查日期为 2026-09-23。检索日期不等于发布日期。官方文档用于确立技术边界;社区提问仅用于说明定性需求。除下列注明外,来源发布和更新日期均未知。这些页面并未确立账户资格、承运商覆盖范围或全球可用性;美元示例及英文文档地区设置不构成地区准入规则。
- [3] 收取运费:完整托管页面 — 发布及更新日期未注明;核查于 2026-09-23。
- [4] 动态配送:完整托管页面 — 发布及更新日期未注明;核查于 2026-09-23。
- [5] 动态配送:完整嵌入式页面 — 发布及更新日期未注明;核查于 2026-09-23。
- [7] 更新运费费率 — 发布及更新日期未注明;核查于 2026-09-23。
- [8] 动态配送:嵌入式表单 — 发布及更新日期未注明;核查于 2026-09-23。
- [9] 如何在 Stripe Checkout 接口中使用运费费率 — 发布于 2024-10-10;更新日期未注明;核查于 2026-09-23。