# 4.2 预估运费接口

## 4.2.1 功能说明

1. 根据客户填写的收寄地址、预估重量、声明价值计算返回预估运费，仅做参考，不作为最终结算运费，最终结算以揽件实际重量为准。当前端需要展示快递公司的预估运费时使用此接口。

2. 续重分段计费规则返回仅支持顺丰快递。

## 4.2.2 基本信息

| 项目 | 内容 |
|------|------|
| 接口指令 | 1815 |
| 请求方式 | POST请求 |
| 支持格式 | 只支持Json格式、UTF-8编码 |
| 批量请求 | 不支持 |
| 接口地址 | 测试地址：http://183.62.170.46:8081/api/dist<br>正式地址：https://api.kdniao.com/api/OOrderService |
| 平均响应时长 | 300ms |
| 请求超时时间 | 5000ms |

## 4.2.3 接口调用规则

按照文档规则进行传参，请求报文中不允许出现以下特殊字符：`'` `"` `#` `&` `+` `<` `>` `%` `\` 以及表情包、生僻字等这类信息传参接口会报错，请注意传参时过滤掉这些信息。

## 4.2.4 应用场景

寄件人老七，选择客户的手机端进行寄快递，在填写完寄收信息和预估重量后，看到手机端展示的每家快递公司的快递费是不同的，于是选择申通快递进行下单。

## 4.2.5 应用级参数

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| TransportType | Int(2) | 是 | 运力类型<br>1=快递类 |
| ShipperType | Int(2) | 是 | 产品类型<br>具体以商务层面合同沟通为准<br>3=2小时收<br>4=半日收<br>5=当日收 |
| Weight | Double(10,3) | 是 | 包裹总重量(KG) |
| InsureAmount | Double(10,2) | 否 | 声明价值(正整数)，大于3000不支持保价<br>根据传入的声明价值计算保费 |

### Receiver（收件人信息）

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| ProvinceName | String(20) | 是 | 收件省<br>(如广东省，不要缺少"省"；<br>如是直辖市，请直接传北京、上海等；<br>如是自治区，请直接传广西壮族自治区等)<br>支持字符长度为20个以内，不支持数字与字母 |
| CityName | String(20) | 是 | 收件市<br>(如深圳市，不要缺少"市"；<br>如是市辖区，请直接传北京市、上海市等")<br>支持字符长度为20个以内，不支持数字与字母 |
| ExpAreaName | String(20) | 否 | 收件区/县<br>(如福田区，不要缺少"区"或"县") |

### Sender（发件人信息）

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| ProvinceName | String(20) | 是 | 发件省<br>(如广东省，不要缺少"省"；<br>如是直辖市，请直接传北京、上海等；<br>如是自治区，请直接传广西壮族自治区等)<br>支持字符长度为20个以内，不支持数字与字母 |
| CityName | String(20) | 是 | 发件市<br>(如深圳市，不要缺少"市"；<br>如是市辖区，请直接传北京市、上海市等")<br>支持字符长度为20个以内，不支持数字与字母 |
| ExpAreaName | String(20) | 否 | 发件区/县<br>(如福田区，不要缺少"区"或"县") |

## 4.2.6 返回参数

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| EBusinessID | String(10) | 是 | 用户ID |
| Success | Boolean | 是 | 成功与否(true/false) |
| ResultCode | String(5) | 是 | 返回编号 |
| Reason | String(50) | 是 | 描述 |
| UniquerRequestNumber | String(50) | 是 | 唯一标识，快递鸟内部使用 |

### Data（数据对象）

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| shipperCode | String(20) | 是 | 快递公司编码 |
| weight | Double(10,2) | 是 | 总重量(KG) |
| cost | Double(10,2) | 是 | 基础运费=首重金额+续重总金额 |
| firstWeight | Double(10,2) | 是 | 首重重量(KG) 如：1.00kg |
| firstWeightAmount | Double(10,2) | 是 | 首重金额 |
| continuousWeight | Double(10,2) | 是 | 续重重量(KG) 如：1.00kg |
| continuousWeightPrice | Double(10,2) | 否 | 续重单价(元/KG) 如:1.23元/KG |
| isSubsectionContinuousWeightPrice | Int | 否 | 续重单价是否分段计费：<br>0-否，1-是，默认0 |
| continuousWeightAmount | Double(10,2) | 是 | 续重总金额 |
| insureAmount | Double(10,2) | 否 | 声明价值 |
| premiumFee | Double(10,2) | 否 | 保费 |
| totalFee | Double(10,2) | 是 | 总费用=基础运费+保费 |

### subsectionContinuousWeightPrices（分段续重单价数组）

| 名称 | 类型(字符长度) | 是否必须 | 描述 |
|------|----------------|----------|------|
| continuousWeightPrice | Double(10,2) | 否 | 续重单价(元/KG) 如:1.23元/KG |
| continuousWeight | Double(10,2) | 否 | 续重重量(KG) 如:1.00kg |

## 4.2.7 报文范例

### 请求示例

```json
{
  "TransportType": 1,
  "ShipperType": 3,
  "Weight": 2.5,
  "InsureAmount": 1000,
  "Receiver": {
    "ProvinceName": "广东省",
    "CityName": "深圳市",
    "ExpAreaName": "福田区"
  },
  "Sender": {
    "ProvinceName": "北京市",
    "CityName": "北京市",
    "ExpAreaName": "朝阳区"
  }
}
```

### 返回示例

```json
{
  "EBusinessID": "1234567890",
  "Success": true,
  "ResultCode": "100",
  "Data": {
    "shipperCode": "SF",
    "weight": 2.5,
    "cost": 25.50,
    "firstWeight": 1.0,
    "firstWeightAmount": 15.00,
    "continuousWeight": 1.5,
    "continuousWeightPrice": 7.00,
    "continuousWeightAmount": 10.50,
    "isSubsectionContinuousWeightPrice": 0,
    "insureAmount": 1000,
    "premiumFee": 5.00,
    "totalFee": 30.50
  },
  "Reason": "成功",
  "UniquerRequestNumber": "REQ123456789"
}
```

---

*文档生成时间：2024年*
*来源：语雀文档 - 4.2预估运费接口*