配送开放平台接口文档

Delivery Open Platform API Documentation · 版本 v1.0

1. 请求协议说明

合作方调用配送开放平台 API,需按照以下步骤:

组装参数 → 生成签名 → 拼装 HTTP 请求 → 发起 HTTP 请求 → 得到 HTTP 响应 → 解析 JSON
规则 说明
传输协议 HTTPS(生产环境)/ HTTP(测试环境)
参数格式 application/json
字符编码 UTF-8
请求方式 POST
💡 单位约定:金额单位为,距离单位为,重量单位为

2. 公共入参与签名算法

公共入参

参数名称 类型 必传 描述
appId String YES 开发者 appId
sourceId String YES 商户ID
sign String YES 签名(MD5 32位大写)
timestamp Long YES 时间戳(毫秒级)
data String 视接口而定 业务入参(必须是 JSON 字符串)

签名生成步骤

  1. 将所有公共参数按字典序排序,排除空值和 sign 字段
  2. 拼接为 参数1值1参数2值2... 格式(UTF-8 编码)
  3. 在拼接串前加上 AppSecret,得到待加密字符串
  4. 对待加密字符串进行 MD5 散列(32位大写),赋值给 sign
  5. 若存在 data 参数且不为空,其值以 JSON 字符串格式参与拼接(内部无需排序)

签名示例

// 原始参数(按字典序排列后拼接)
appId = xyh3fesgxb45hn
data = {"orderNo":"XY05612026858924221"}
sourceId = S5251541532
timestamp = 1685952266956

示例1:data 不为空
// 拼接串(AppSecret + 参数键值对)
String raw = "dfwsx8wf46wjym"      // AppSecret
           + "appIdxyh3fesgxb45hn"     // appId
           + "data{\"orderNo\":\"XY05612026858924221\"}" // data
           + "sourceIdS5251541532"     // sourceId
           + "timestamp1685952266956"; // timestamp
		   
示例2:data 为空
// 拼接串(AppSecret + 参数键值对)
String raw = "dfwsx8wf46wjym"      // AppSecret
           + "appIdxyh3fesgxb45hn"     // appId
           + "sourceIdS5251541532"     // sourceId
           + "timestamp1685952266956"; // timestamp
// 生成签名
String sign = MD5(raw).toUpperCase();
// 结果示例1: "ACD2BAB4E2E7BF49118922B0E853ED74" (32位大写)
// 结果示例2: "02840D6E2DF711A4D752D90DED074C64" (32位大写)

3. 返回值规则

规则 说明
数据格式 application/json
字符编码 UTF-8
数据结构 {"code": 状态码, "msg": 信息, "data": 数据}

4. 询价接口

POST /openapi/v1/delivery/preCallOrder

用于获取各配送商的预估配送费和距离信息,配合「下单」接口使用。

data 业务参数

参数 类型 必传 说明
outOrderNo String YES 接入方平台订单号(唯一标识,每次需更换)
cityName String YES 城市名称(例:成都市),暂不支持区级
toReceiverName String YES 收件人姓名
toMobile String YES 收件人电话
toAddress String YES 收件人地址(市区街道)
toAddressDetail String NO 收件人详细地址(楼栋门牌)
toLat Double YES 收件人纬度(高德坐标)
toLng Double YES 收件人经度(高德坐标)
fromSenderName String YES 发件人名称
fromMobile String YES 发件人电话
fromAddress String YES 发件人地址
fromLat Double YES 发件人纬度(高德坐标)
fromLng Double YES 发件人经度(高德坐标)
orderType Integer YES 1:普通订单,2:预订单
productType Integer YES 物品类型:1餐饮 2鲜花 3蛋糕 4商超 5医药 6母婴 7服饰 8数码 9其他
totalAmount Integer YES 货品总金额(分)
productCount Integer YES 货品件数
weight Integer YES 重量(克),必须大于 0
productList Array YES 商品列表,含 {"name":"麻辣香锅","count":"1","price":"1000"}
source String YES 来源平台编码(见渠道枚举)
callbackUrl String NO 回调地址
subscribeTime Long NO 预约送达时间戳
sourceOrderNo String NO 来源订单号
orderNumber String NO 取货号
orderTime String NO 订单时间(如:2025-03-18 15:21:00)
orderRemark String NO 订单备注
fiveRate Integer NO 天气等级:0正常 1轻微恶劣 2恶劣 3极恶劣 4罕见恶劣
orderDistance Integer NO 订单距离(米)

返回字段说明

返回字段 类型 说明
orderNo String 平台配送订单号
deliveryCode Integer 配送商编号
deliveryName Integer 配送商
price Integer 实际配送费(分)= 配送费+保价+小费+其他-优惠
distance Integer 配送距离(米)

成功响应

{
    "code": 200,
    "msg": "成功",
    "succeed": true,
    "data": { 
		"orderNo": "XY022705832278396038",
		"deliveryList": [
			{
				"deliveryCode": "1",
				"deliveryName": "顺丰同城",
				"price": 420,
				"distance": 1200
			},
			{
				"deliveryCode": "2",
				"deliveryName": "蜂鸟跑腿",
				"price": 610,
				"distance": 1200
			}
		]
	}
}

5. 下单接口

ℹ️ 异步下单接口,需先调用询价接口。下单失败会通过回调推送取消状态。
POST /openapi/v1/delivery/pushOrder

data 业务参数

参数 类型 必传 说明
orderNo String YES* 平台配送订单号(询价返回)
outOrderNo String YES* 接入方订单号
deliveryCodeList Array NO 呼叫配送商编码组,为空则呼叫询价接口所有配送商
orderNumber String NO 取货号
source String NO 来源平台编码(见渠道枚举)
toReceiverName String NO 收件人姓名
toMobile String NO 收件人电话
toAddress String NO 收件人地址
toAddressDetail String NO 收件人详细地址
orderRemark String NO 订单备注

6. 小费接口

POST /openapi/v1/delivery/additionFee
⚠️ 仅在下单成功后可调用,tipFee 单位为分,必须大于 0。

data 业务参数

参数 类型 必传 说明
orderNo String YES* 平台配送订单号
outOrderNo String YES* 接入方订单号
businessSn Long YES 业务流水号(幂等校验)
tipFee Integer YES 小费金额(分),大于 0

7. 取消接口

POST /openapi/v1/delivery/cancelOrder

data 业务参数

参数 类型 必传 说明
orderNo String YES* 平台配送订单号
outOrderNo String YES* 接入方订单号
cancelType String YES 1商家取消 2系统取消 4其他平台接单取消 20其他(自定义描述)
cancelMessage String NO 取消原因

返回字段说明

返回字段 类型 说明
punishAmount Integer 违约金(分)

8. 配送详情接口

POST /openapi/v1/delivery/info

查询订单完整配送状态信息,包括骑手信息、时间节点、费用明细等。

data 业务参数

参数 类型 必传 说明
orderNo String YES* 平台配送订单号
outOrderNo String YES* 接入方订单号

返回字段说明

返回字段 类型 说明
status Integer 状态:20支付成功 30骑手抢单 35骑手到店 40配送中 50已完成 60已取消 70配送失败
orderNo String 平台配送订单号
outOrderNo String 接入方订单号
deliveryCode Integer 配送商编号
deliveryName Integer 配送商
distance Integer 配送距离(米)
price Integer 实际配送费(分)= 配送费+保价+小费+其他-优惠
tip Integer 小费金额
pickUpPhotos Array 取件照片
finishPhotos Array 妥投照片
courierName String 骑手姓名
courierMobile String 骑手电话
cancelType String 取消原因码
cancelMessage String 取消原因
punishAmount Integer 违约金(分)
takeOrderTime String 骑手抢单时间
arriveTime String 骑手到店时间
pickUpTime String 骑手取货时间
finalTime String 结束时间

9. 骑士位置接口

POST /openapi/v1/delivery/rider

data 业务参数

参数 类型 必传 说明
orderNo String YES* 平台配送订单号
outOrderNo String YES* 接入方订单号

返回字段说明

返回字段 类型 说明
lat String 纬度
lng String 经度
name String 骑手姓名
mobile String 骑手电话
time Long 位置更新时间戳

10. 余额查询接口

POST /openapi/v1/wallet/getBalance

返回字段说明

返回字段 类型 说明
balance Integer 余额(分)

11. 回调通知接口

ℹ️ 当配送状态变化时,平台将向您的 callbackUrl 推送通知。 请返回 {"code":200,"msg":"ok"} 表示接收成功。 失败重试策略:10秒 → 30秒 → 1分钟(共3次)

回调 data 核心字段

参数 类型 说明
type Integer 1状态回调 2异常上报 3骑手变更回调
status Integer 状态:20支付成功 30骑手抢单 35骑手到店 40配送中 50已完成 60已取消 70配送失败
orderNo String 平台配送订单号
outOrderNo String 接入方订单号
deliveryCode Integer 配送商编号
deliveryName Integer 配送商
price Integer 实际配送费(分)= 配送费+保价+小费+其他-优惠
pickUpPhotos Array 取件照片
finishPhotos Array 妥投照片
courierName String 骑手姓名
courierMobile String 骑手电话
cancelType String 取消原因码
cancelMessage String 取消原因
punishAmount Integer 违约金(分)
msg String 异常上报信息
time String 事件时间

1. 状态码

代码 描述
200 ✅ 成功

2 渠道枚举

编码 渠道名称
1 抖音外卖
2 饿了么
3 美团闪购
4 美团外卖
5 饿了么零售
6 抖音小时达
7 京东到家
8 京东秒送
10 快手外卖
11 微信
12 淘宝闪购
20 私域订单
配送接口文档 · 仅供对接使用 · 请勿外传