系统物流-配送方案-更新
接口信息
- 接口地址:
{your-site-url}/api/skill/shipping/shipping-update-zone
- 基础 URL:
{your-site-url} 需替换为你自己的独立站 URL 地址,如 https://your-domain.com/apimanager666
- 请求方式:
POST
- Content-Type:
application/json
- 说明: 此接口用于更新指定物流方案下的配送区域(Zone),属于全量更新。建议先通过 系统物流-配送方案-详情 获取当前配送区域数据,修改后提交
认证
请求头中需要携带 skill-access-token:
| Header |
值 |
skill-access-token |
{your-skill-access-token} (请替换为你自己的 token) |
请求参数 (JSON Body)
| 字段 |
类型 |
必填 |
说明 |
id |
int |
✅ 必填 |
配送区域 ID |
shipping_id |
int |
✅ 必填 |
物流方案 ID |
name |
string |
✅ 必填 |
配送区域名称 |
type |
int |
✅ 必填 |
运费计算类型。1 = 按商品重量计费,2 = 按商品价格区间计费,3 = 按商品购买数量计费 |
countries |
Array[Object] |
✅ 必填 |
该区域覆盖的国家/省份列表。数据从 得到国家和省列表 获取。⚠️ 已被当前物流方案其他配送区域占用的国家和省份不可再勾选,更新前需先调用 系统物流-配送方案-已配置的国家列表 获取已占用列表(传入 shipping_zone_id 可排除自身) |
countries[].country |
string |
是 |
国家简码。特殊值 "*" 表示其他国家(兜底规则),见下方说明 |
countries[].province |
Array[string] |
否 |
省份代码数组。空数组 [] 表示该国家所有省份 |
weight_based_shipping_rates |
Array[Object] |
否 |
按重量计费规则,type=1 时使用;type≠1 时传空数组 [] |
weight_based_shipping_rates[].start |
float |
✅ |
重量区间起始值,单位克(g)。匹配规则:商品总重量 >= start |
weight_based_shipping_rates[].end |
float |
✅ |
重量区间结束值,单位克(g)。匹配规则:商品总重量 < end。最后一个区间值较大表示「以上」 |
weight_based_shipping_rates[].amount |
string |
✅ |
运费金额。可填固定数字(如 "3.96"),也可填公式(如 "{weight} * 455 / 1000 + 24"),{weight} 代表商品总重量 |
price_based_shipping_rates |
Array[Object] |
否 |
按价格计费规则,type=2 时使用;type≠2 时传空数组 [] |
price_based_shipping_rates[].start |
float |
✅ |
价格区间起始值。匹配规则:商品总价格 >= start |
price_based_shipping_rates[].end |
float |
✅ |
价格区间结束值。匹配规则:商品总价格 < end。最后一个区间值较大表示「以上」 |
price_based_shipping_rates[].amount |
string |
✅ |
运费金额。可填固定数字(如 "3.96"),也可填公式(如 "{price} * 455 / 100 + 14"),{price} 代表商品总价格 |
qty_based_shipping_rates |
Object |
否 |
按数量计费规则,type=3 时使用 |
qty_based_shipping_rates.is_free_shipping |
int |
否 |
是否免运费。1 = 免运费,2 = 不免运费 |
qty_based_shipping_rates.fist_item |
int |
否 |
首件运费金额。仅当 is_free_shipping=2(不免运费)时有效,免运费时传 0 |
qty_based_shipping_rates.each_additional_item |
int |
否 |
续件运费金额,从第 2 件起每件增加的费用。仅当 is_free_shipping=2 时有效,免运费时传 0 |
qty_based_shipping_rates.is_over_qty_free_shipping |
int |
否 |
满 X 件免运费开关。1 = 开启,2 = 关闭 |
qty_based_shipping_rates.over_qty |
int |
否 |
免运费的最低件数。当 is_over_qty_free_shipping=1 且商品总数量 >= over_qty 时免运费。关闭时传 0 |
请求示例
type=1 按重量计费
curl --location --request POST '{your-site-url}/api/skill/shipping/shipping-update-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 100,
"shipping_id": 51,
"name": "亚洲",
"type": 1,
"countries": [
{"country": "AU", "province": ["ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA"]}
],
"price_based_shipping_rates": [],
"weight_based_shipping_rates": [
{"start": 0, "end": 1000, "amount": "3.96"},
{"start": 1000, "end": 5000, "amount": "{weight} * 455 / 1000 + 24"}
],
"qty_based_shipping_rates": {
"is_free_shipping": 2,
"fist_item": 0,
"each_additional_item": 0,
"is_over_qty_free_shipping": 2,
"over_qty": 0
}
}'
type=2 按价格区间计费
curl --location --request POST '{your-site-url}/api/skill/shipping/shipping-update-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 100,
"shipping_id": 51,
"name": "亚洲",
"type": 2,
"countries": [
{"country": "AT", "province": []}
],
"price_based_shipping_rates": [
{"start": 0, "end": 100, "amount": "3.96"},
{"start": 100, "end": 300, "amount": "{price} * 455 / 100 + 14"}
],
"weight_based_shipping_rates": [],
"qty_based_shipping_rates": {
"is_free_shipping": 2,
"fist_item": 0,
"each_additional_item": 0,
"is_over_qty_free_shipping": 2,
"over_qty": 0
}
}'
type=3 按数量计费(免运费)
curl --location --request POST '{your-site-url}/api/skill/shipping/shipping-update-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 100,
"shipping_id": 51,
"name": "亚洲",
"type": 3,
"countries": [
{"country": "AT", "province": []}
],
"price_based_shipping_rates": [],
"weight_based_shipping_rates": [],
"qty_based_shipping_rates": {
"is_free_shipping": 1,
"fist_item": 0,
"each_additional_item": 0,
"is_over_qty_free_shipping": 2,
"over_qty": 0
}
}'
type=3 按数量计费(不免运费)
curl --location --request POST '{your-site-url}/api/skill/shipping/shipping-update-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": 100,
"shipping_id": 51,
"name": "亚洲",
"type": 3,
"countries": [
{"country": "AT", "province": []}
],
"price_based_shipping_rates": [],
"weight_based_shipping_rates": [],
"qty_based_shipping_rates": {
"is_free_shipping": 2,
"fist_item": 22,
"each_additional_item": 11,
"is_over_qty_free_shipping": 1,
"over_qty": 4
}
}'
返回结果
code 为 200 表示调用成功;code 不为 200 表示调用失败。
成功响应
{
"code": 200,
"data": {
"id": 100,
"shop_id": 15,
"shipping_id": 51,
"name": "亚洲",
"type": 1,
"countries": [ ... ],
"weight_based_shipping_rates": [ ... ],
"price_based_shipping_rates": [],
"qty_based_shipping_rates": { ... },
"created_at": "2026-06-01 09:12:38",
"updated_at": "2026-06-01 10:27:59"
},
"message": "success"
}
返回字段说明
| 字段 |
类型 |
说明 |
code |
Number |
状态码,200 表示成功 |
message |
String |
执行结果的文字描述 |
data |
Object |
更新后的配送区域信息 |
注意事项
id、shipping_id、name、type、countries 为必填
- 全量更新:所有字段会覆盖原有数据,建议先通过 系统物流-配送方案-详情 获取当前配送区域数据,修改后提交
"country": "*" 兜底规则:country 填 "*" 表示"其他国家",用于配置一个兜底配送区域。匹配优先级:系统先按具体国家简码(如 CN、US)匹配,匹配到则使用该 zone;若所有具体国家都不匹配,最终匹配 country: "*" 的配送区域。使用 "*" 时 province 传空数组 []。一个国家能被遍历全世界所有国家都配置一遍过于繁琐,用 * 作为兜底省时省力。
- 一个国家和省份只能出现在一个配送区域中。更新前需调用 系统物流-配送方案-已配置的国家列表 获取已被占用的国家列表(传入
shipping_zone_id 可排除自身),已占用的国家和省份不可勾选。如果更新的国家/省份已被其他 zone 占用,将返回 code: 100501006
- 计费类型与字段对应关系:
type=1:使用 weight_based_shipping_rates,price_based_shipping_rates 传空数组 []
type=2:使用 price_based_shipping_rates,weight_based_shipping_rates 传空数组 []
type=3:使用 qty_based_shipping_rates,weight_based_shipping_rates 和 price_based_shipping_rates 均传空数组 []
type=3 免运费时:is_free_shipping=1,fist_item 和 each_additional_item 传 0
type=3 不免运费时:is_free_shipping=2,fist_item 为首件运费,each_additional_item 为第 2 件起每件增加的费用
- 国家简码和省份代码从 得到国家和省列表 获取
- 重量区间和价格区间匹配规则均为 左闭右开:
start <= 值 < end(即 >= start 且 < end)
type=3 满件免运费规则:当 is_over_qty_free_shipping=1 且商品总数量 >= over_qty 时免运费