1. 接口说明
开放 API 供商户系统对接,实现在线下单、查询运单、取消运单、查看资金等能力。接口调用需先在用户中心「API 接口管理」页面创建令牌。
BASE
接口基础地址请在用户中心查看
登录用户中心「API 接口管理」页面可见
AUTH
Authorization: Bearer 您的令牌
请求头携带,或使用参数 token=ak_xxx
请求格式POST 接口使用
application/x-www-form-urlencoded 或 application/json;GET 接口使用 URL 参数。统一响应所有接口返回 JSON:
{"code":0,"msg":"ok","data":{...}},code 为 0 表示成功。令牌管理在用户中心「API 接口管理」创建 / 停用 / 删除令牌,可同时配置推送回调地址。
数据安全令牌相当于您的账户凭证,请妥善保管,不要明文写入前端页面或公开代码库。
本文档示例中的请求地址省略了接口域名,实际调用时请在用户中心「API 接口管理」页面查看基础地址并拼接。
2. 通用说明
2.1 统一响应结构
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码:0 成功;1 业务失败(以 msg 为准);401 鉴权失败;404 资源不存在 |
msg | string | 状态说明:成功时为 ok 或业务提示;失败时为具体错误原因 |
data | object/array | 响应数据:成功时为数据对象或数组;失败时为 null |
2.2 枚举值
| 枚举 | 取值 | 说明 |
|---|---|---|
biz_type | 1 / 2 | 业务类型:1 快递;2 快运 |
status | 0-7 | 订单状态:0 待支付;1 待接单;2 已接单;3 运输中;4 已签收;5 已取消;6 异常;7 待补差 |
pay_status | 0-3 | 支付状态:0 未支付;1 已支付;2 已退款;3 部分退款 |
调用示例:创建订单后,用返回的
order_no 查询详情与轨迹;状态变化会通过「推送回调」主动通知(见第 10 节)。3. 渠道报价(下单前比价)
允许商户通过此接口获取运费报价。返回多个快递渠道的到手价,下单时选择其一即可。
POST/api/order/quote需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
biz_type | 否 | int | 业务类型:1 快递(默认)/ 2 快运 |
sender_name | 是 | string | 寄件人姓名 |
sender_mobile | 是 | string | 寄件人手机号(11 位) |
sender_province | 是 | string | 寄件省 |
sender_city | 是 | string | 寄件市 |
sender_district | 否 | string | 寄件区 / 县 |
sender_address | 是 | string | 寄件详细地址 |
receiver_name | 是 | string | 收件人姓名 |
receiver_mobile | 是 | string | 收件人手机号(11 位) |
receiver_province | 是 | string | 收件省 |
receiver_city | 是 | string | 收件市 |
receiver_district | 否 | string | 收件区 / 县 |
receiver_address | 是 | string | 收件详细地址 |
goods_name | 是 | string | 物品名称 |
weight | 是 | number | 重量(kg),必须大于 0 |
length / width / height | 否 | number | 长 / 宽 / 高(厘米) |
remark | 否 | string | 备注 |
appoint_time | 否 | string | 预约上门时间,格式 YYYY-MM-DD HH:mm |
请求示例
cURLcurl -X POST "/api/order/quote" \ -H "Authorization: Bearer ak_xxxx" \ -d "biz_type=1&sender_name=张三&sender_mobile=13800138000&sender_province=广东省&sender_city=深圳市&sender_district=南山区&sender_address=高新南一道9号&receiver_name=李四&receiver_mobile=13912345678&receiver_province=浙江省&receiver_city=杭州市&receiver_district=西湖区&receiver_address=文三路478号&goods_name=服装&weight=2.5&length=30&width=20&height=15"
返回示例
response{ "code": 0, "msg": "ok", "data": { "qtoken": "1a2b3c4d5e6f", "debug": false, "offers": [ { "oid": "yida|1|SF-1", "company_code": "SF", "company_name": "顺丰速运", "logo": "/static/logo/sf.png", "intro": "时效快,服务好", "eta": "次日达", "total_price": 12.5 } ] } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
qtoken | string | 本次询价令牌(会话标识) |
offers | array | 渠道报价列表,按总价从低到高 |
offers.oid | string | 报价唯一标识:下单时传此值即可精确指定渠道 |
offers.company_code | string | 快递公司编码(SF 顺丰 / ZTO 中通 / JD 京东 / YTO 圆通等) |
offers.company_name | string | 快递公司名称 |
offers.logo | string | 快递公司图标地址 |
offers.intro | string | 渠道简介 |
offers.eta | string | 时效说明 |
offers.total_price | number | 到手总价(元)= 渠道价 + 平台加价 |
说明:下单时传
oid 可精确定位渠道,不传则自动取最低价渠道。4. 创建订单
允许商户通过此接口下单。下单即从会员余额扣款,扣款成功后向快递公司推送,余额不足会返回失败。
POST/api/order/create需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| 与「渠道报价」相同的基础参数:寄收件信息、物品、重量、尺寸(见第 3 节参数表) | |||
oid | 否 | string | 报价返回的报价标识(推荐);不传则自动取最低价渠道 |
source | 否 | string | 来源标识:web / api / miniapp,不传默认按 api |
supplier_id | 否 | int | 供应商 ID(旧参数,与 oid 二选一) |
company_code | 否 | string | 快递公司编码(旧参数,需配合 supplier_id / channel_id) |
channel_id | 否 | string | 渠道 ID(旧参数) |
请求示例
cURLcurl -X POST "/api/order/create" \ -H "Authorization: Bearer ak_xxxx" \ -d "biz_type=1&oid=yida|1|SF-1&sender_name=张三&sender_mobile=13800138000&sender_province=广东省&sender_city=深圳市&sender_district=南山区&sender_address=高新南一道9号&receiver_name=李四&receiver_mobile=13912345678&receiver_province=浙江省&receiver_city=杭州市&receiver_district=西湖区&receiver_address=文三路478号&goods_name=服装&weight=2.5&length=30&width=20&height=15&remark=轻放&appoint_time=2026-11-02 14:00"
返回示例
response{ "code": 0, "msg": "下单成功", "data": { "id": 10086, "order_no": "KD20261102000123", "waybill_no": "", "company_name": "顺丰速运", "total_price": 12.5, "status": 0 } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id | int | 订单 ID(详情 / 轨迹 / 取消接口可传此值) |
order_no | string | 平台订单号(对外查询唯一标识) |
waybill_no | string | 快递运单号:下单成功时可能为空,快递公司接单后通过推送或轨迹接口回传 |
company_name | string | 快递公司名称 |
total_price | number | 应付金额(元):已从会员余额扣款 |
status | int | 订单状态:0 待支付 / 1 待接单 / …(见通用说明) |
5. 订单列表
分页查询当前令牌所属会员的订单列表,支持按业务类型、状态、关键词过滤。
GET/api/order/list需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
page | 否 | int | 页码,默认 1 |
page_size | 否 | int | 每页条数,默认 15,最大 100 |
biz_type | 否 | int | 业务类型:1 快递 / 2 快运 |
status | 否 | int | 按订单状态过滤(见通用说明) |
keyword | 否 | string | 关键词:按订单号 / 运单号模糊搜索 |
请求示例
cURLcurl "/api/order/list?page=1&page_size=15&biz_type=1&status=4&keyword=KD" \ -H "Authorization: Bearer ak_xxxx"
返回示例
response{ "code": 0, "msg": "ok", "data": { "total": 23, "page": 1, "pageSize": 15, "list": [ { "id": 10086, "order_no": "KD20261102000123", "waybill_no": "SF1234567890123", "biz_type": 1, "company_code": "SF", "company_name": "顺丰速运", "total_price": 12.5, "pay_status": 1, "status": 3, "status_text": "运输中", "sender_city": "深圳市", "receiver_city": "杭州市", "create_time": "2026-11-02 09:30:00" } ] } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
total | int | 符合条件的订单总数 |
page / pageSize | int | 当前页码 / 每页条数 |
list | array | 当前页订单列表,字段如下 |
list.id / order_no / waybill_no | - | 订单 ID / 平台订单号 / 快递运单号 |
list.biz_type | int | 1 快递 / 2 快运 |
list.company_code / company_name | - | 快递公司编码 / 名称 |
list.total_price | number | 订单金额(元) |
list.pay_status | int | 支付状态:0 未支付 / 1 已支付 / 2 已退款 |
list.status | int | 订单状态(见通用说明) |
list.status_text | string | 订单状态文字(如「运输中」) |
list.sender_city / receiver_city | string | 寄 / 收件城市(省 + 市) |
list.create_time | string | 下单时间 YYYY-MM-DD HH:mm:ss |
6. 订单详情
获取单个订单的完整信息,包含寄收件人、物品、费用、状态及时间线。
GET/api/order/detail?id=10086需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
id | 是 | int | 订单 ID(创建订单接口返回) |
请求示例
cURLcurl "/api/order/detail?id=10086" \ -H "Authorization: Bearer ak_xxxx"
主要返回字段
| 字段 | 类型 | 说明 |
|---|---|---|
id / order_no / waybill_no | - | 订单 ID / 平台订单号 / 快递运单号 |
biz_type / source | int | 业务类型(1 快递 / 2 快运)/ 来源(web / api / miniapp) |
supplier_code / supplier_order_no | - | 渠道供应商编码 / 供应商侧订单号 |
company_code / company_name | - | 快递公司编码 / 名称 |
total_price / paid_amount | number | 订单金额 / 实付金额(元) |
channel_price / markup | number | 渠道价 / 平台加价(元) |
pay_status / pay_type / pay_time | - | 支付状态 / 支付方式 / 支付时间 |
sender_name / sender_mobile / sender_province / sender_city / sender_district / sender_address | - | 寄件人信息 |
receiver_name / receiver_mobile / receiver_province / receiver_city / receiver_district / receiver_address | - | 收件人信息 |
goods_name / weight / length / width / height | - | 物品名称 / 重量(kg)/ 尺寸(厘米) |
remark / appoint_time | - | 备注 / 预约上门时间 |
status / supplier_status | - | 订单状态 / 供应商侧状态描述 |
create_time / accept_time / finish_time / cancel_time | string | 下单 / 接单 / 完成 / 取消时间 |
cancel_reason | string | 取消原因 |
返回数据为订单全部字段(JSON 对象),实际字段以接口返回为准。
7. 物流轨迹
按订单 ID 或运单号查询物流轨迹,返回最新状态与轨迹列表。
GET/api/order/track需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
id | 否 | int | 订单 ID(与 waybill_no 二选一) |
waybill_no | 否 | string | 快递运单号(与 id 二选一) |
请求示例
cURLcurl "/api/order/track?waybill_no=SF1234567890123" \ -H "Authorization: Bearer ak_xxxx"
返回示例
response{ "code": 0, "msg": "ok", "data": { "status": "运输中", "traces": [ { "time": "2026-11-02 10:12:00", "desc": "快件已到达【杭州转运中心】" }, { "time": "2026-11-02 08:30:00", "desc": "快件已从【深圳集散中心】发出" } ] } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
status | string | 最新轨迹推断的状态文字(如:待取件 / 运输中 / 已签收) |
traces | array | 轨迹列表,按时间倒序 |
traces.time | string | 轨迹时间 |
traces.desc | string | 轨迹内容 |
运单号尚未生成时返回
{"status":"","traces":[]},msg 为「运单尚未生成」。8. 取消运单
允许商户取消已下单的运单;已支付订单取消成功后自动退款到会员余额。
POST/api/order/cancel需令牌鉴权
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
id | 否 | int | 订单 ID(与下方二者三选一) |
order_no | 否 | string | 平台订单号 |
waybill_no | 否 | string | 快递运单号 |
reason | 否 | string | 取消原因,默认「用户取消」 |
取消规则
| 情形 | 处理 |
|---|---|
| 已签收订单 | 不可取消 |
| 重货(快运)订单创建后 1 小时内 | 禁止取消,需联系客服 |
| 未回传运单号的订单 | 禁止取消,需联系客服 |
| 已支付订单取消成功 | 自动退款到会员余额 |
请求示例
cURLcurl -X POST "/api/order/cancel" \ -H "Authorization: Bearer ak_xxxx" \ -d "order_no=KD20261102000123&reason=买家改地址"
返回示例
response{ "code": 0, "msg": "取消成功", "data": { "id": 10086, "order_no": "KD20261102000123", "waybill_no": "SF1234567890123", "status": 5, "status_text": "已取消", "refund": true } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id / order_no / waybill_no | - | 订单 ID / 平台订单号 / 运单号 |
status | int | 取消后状态:5 已取消 |
status_text | string | 状态文字 |
refund | bool | 是否已退款(已支付订单取消后为 true) |
9. 资金信息
查询会员账户的钱包余额、推广费与积分,无需请求参数。
POST/api/member/fund需令牌鉴权
请求示例
cURLcurl -X POST "/api/member/fund" \ -H "Authorization: Bearer ak_xxxx"
返回示例
response{ "code": 0, "msg": "ok", "data": { "balance": 100.00, "commission": 12.21, "integral": 36 } }
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
balance | number | 会员钱包余额(元):下单扣款、退款到账均作用于该余额 |
commission | number | 推广费(元):推广佣金收益 |
integral | int | 积分 |
10. 推送回调(平台 → 您的服务器)
在令牌「推送回调地址」填写您的接口地址后,订单状态或运单号发生变更时,平台会主动 POST JSON 到该地址。留空则不推送。
同一会员有多个令牌时,取「启用中」且最早配置回调地址的令牌。回调地址需为 http(s) 开头的可访问链接。
POST您的回调地址Content-Type: application/json
通用推送参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
thirdOrderNo | 是 | string | 平台订单号(对应下单返回的 order_no) |
waybillNo | 是 | string | 快递运单号(未生成时为空字符串) |
orderNo | 是 | string | 平台订单 ID(对应下单返回的 id) |
type | 是 | string | 快递公司编码(如 SF / ZTO / JD / YTO) |
pushType | 是 | int | 推送类型:1 状态变更;4 订单变更(运单号生成或更换) |
data | 是 | object | 推送数据对象,结构由 pushType 决定(见下) |
pushType=1 状态变更 · data 对象
| 字段 | 类型 | 说明 |
|---|---|---|
status | int | 订单状态:0 待支付;1 待接单;2 已接单;3 运输中;4 已签收;5 已取消;6 异常 |
desc | string | 状态描述(如「运输中」「已取消」) |
pushType=4 订单变更 · data 对象
| 字段 | 类型 | 说明 |
|---|---|---|
changeType | int | 1 新运单号,原运单号仍可查询;2 新运单号,原运单号被覆盖 |
newWaybillNo | string | 新运单号 |
应答要求
返回格式请在 2 秒内返回字符串
SUCCESS(大写)。未返回视为本次推送失败。重推机制推送失败不阻塞业务;后续状态再次变更时会携带最新状态自动重推,全部记录可在平台后台「推送日志」查询(接口标识 customer)。
推送示例
状态变更{ "thirdOrderNo": "KD20261102000123", "waybillNo": "SF1234567890123", "orderNo": "10086", "type": "SF", "pushType": 1, "data": { "status": 3, "desc": "运输中" } }
运单号生成{ "thirdOrderNo": "KD20261102000123", "waybillNo": "SF1234567890123", "orderNo": "10086", "type": "SF", "pushType": 4, "data": { "changeType": 1, "newWaybillNo": "SF1234567890123" } }
接收端示例(PHP)
callback.php<?php // 读取并记录推送内容 $body = file_get_contents('php://input'); file_put_contents('/var/log/callback.log', $body, FILE_APPEND); // 必须在 2 秒内输出 SUCCESS echo 'SUCCESS';