系统物流-配送方案-创建
物流 - 创建配送区域
物流 - 创建配送区域
接口信息
- 接口地址:
{your-site-url}/api/skill/shipping/shipping-create-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)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
shipping_id |
int | ✅ 必填 | 物流方案 ID。一个物流方案可创建多个配送区域 |
name |
string | ✅ 必填 | 配送区域名称 |
type |
int | ✅ 必填 | 运费计算类型。1 = 按商品重量计费,2 = 按商品价格区间计费,3 = 按商品购买数量计费 |
countries |
Array[Object] | ✅ 必填 | 该区域覆盖的国家/省份列表。数据从 得到国家和省列表 获取。⚠️ 已被当前物流方案其他配送区域占用的国家和省份不可再勾选,创建前需先调用 系统物流-配送方案-已配置的国家列表 获取已占用列表 |
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-create-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"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-create-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"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-create-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"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-create-zone' \
--header 'skill-access-token: {your-skill-access-token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"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": 102,
"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:38:00",
"updated_at": "2026-06-01 09:38:00"
},
"message": "success"
}
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
code |
Number | 状态码,200 表示成功 |
message |
String | 执行结果的文字描述 |
data |
Object | 创建的配送区域信息 |
注意事项
shipping_id、name、type、countries为必填"country": "*"兜底规则:country填"*"表示"其他国家",用于配置一个兜底配送区域。匹配优先级:系统先按具体国家简码(如CN、US)匹配,匹配到则使用该 zone;若所有具体国家都不匹配,最终匹配country: "*"的配送区域。使用"*"时province传空数组[]。一个国家能被遍历全世界所有国家都配置一遍过于繁琐,用*作为兜底省时省力。- 一个国家和省份只能出现在一个配送区域中。创建前需调用 系统物流-配送方案-已配置的国家列表 获取已被占用的国家列表,已占用的国家和省份不可再勾选。如果创建新的 zone 时填写的国家/省份已被其他 zone 占用,将返回
code: 100501006,message: "shipping ZONE 创建失败 | country [XX] 已经被其他的shipping zone占用" - 计费类型与字段对应关系:
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传0type=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时免运费