系统物流-配送方案-创建

物流 - 创建配送区域

物流 - 创建配送区域

接口信息

  • 接口地址: {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
    }
}'

返回结果

code200 表示调用成功;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 创建的配送区域信息

注意事项

  1. shipping_idnametypecountries 为必填
  2. "country": "*" 兜底规则country"*" 表示"其他国家",用于配置一个兜底配送区域。匹配优先级:系统先按具体国家简码(如 CNUS)匹配,匹配到则使用该 zone;若所有具体国家都不匹配,最终匹配 country: "*" 的配送区域。使用 "*"province 传空数组 []。一个国家能被遍历全世界所有国家都配置一遍过于繁琐,用 * 作为兜底省时省力。
  3. 一个国家和省份只能出现在一个配送区域中。创建前需调用 系统物流-配送方案-已配置的国家列表 获取已被占用的国家列表,已占用的国家和省份不可再勾选。如果创建新的 zone 时填写的国家/省份已被其他 zone 占用,将返回 code: 100501006message: "shipping ZONE 创建失败 | country [XX] 已经被其他的shipping zone占用"
  4. 计费类型与字段对应关系
    • type=1:使用 weight_based_shipping_ratesprice_based_shipping_rates 传空数组 []
    • type=2:使用 price_based_shipping_ratesweight_based_shipping_rates 传空数组 []
    • type=3:使用 qty_based_shipping_ratesweight_based_shipping_ratesprice_based_shipping_rates 均传空数组 []
  5. type=3 免运费时:is_free_shipping=1fist_itemeach_additional_item0
  6. type=3 不免运费时:is_free_shipping=2fist_item 为首件运费,each_additional_item 为第 2 件起每件增加的费用
  7. 国家简码和省份代码从 得到国家和省列表 获取
  8. 重量区间和价格区间匹配规则均为 左闭右开start <= 值 < end(即 >= start< end
  9. type=3 满件免运费规则:当 is_over_qty_free_shipping=1 且商品总数量 >= over_qty 时免运费
Copyright © fecify.com 2025 all right reserved,powered by Gitbook该文件修订时间: 2026-06-13 18:07:39

results matching ""

    No results matching ""