# 电驴送-开放平台接口文档
# 1、文档说明
本文档旨在说明商户平台与电驴送平台的整合流程及接口参数概述。
# 2、对接流程
# 3、通讯方式
双方通讯使用https方式作为技术通讯协议
# 4、数据安全
为保证网络传输过程中数据的安全性,电驴送服务器端向商户服务端提供商户编号、签名密钥(paySecret)。用于接口通讯过程中的数据签名使用。通讯数据MD5算法进行签名,保证数据的安全与完整。
# 5、签名方式
# 5.1、报文拼接
将参与签名的字段参数按照ASCIII的方式进行排序后,按照"字段名=字段值"的方式通过"&"进行拼接。注:值为空不参与签名。例如:
param_a=value_a¶m_b=value_b¶m_c=value_c
# 5.2、数据签名
获取到签名原文后,将签名密钥拼接在最后,进行MD5签名,签名结果需转大写。例如:
param_a=value_a¶m_b=value_b¶m_c=value_c&paySecret=123456
# 6、接口说明
# 6.1、商户注册激活
商户在电驴送APP注册账号,电驴送服务端发送商户编号和签名密钥给商户,商户通过商户编号和签名密钥调用电驴送平台服务端接口,电驴送平台服务端在接收到请求后,对请求参数进行校验,并返回调用结果。
# 6.2、创建门店
接口地址:/openapi/merchant/shop/add
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
shopName | 门店名称 | true | string |
shopShortName | 门店简称 | true | string |
shopContactPhone | 门店联系人手机号 | true | string |
shopContactName | 门店联系人姓名 | true | string |
shopProvinceCode | 门店所在省份编码 | true | string |
shopCityCode | 门店所在城市编码 | true | string |
shopAreaCode | 门店所在区县编码 | true | string |
shopAddress | 门店详细地址 | true | string |
houseNum | 门店门牌号 | true | string |
longitude | 门店地理位置经度(高德坐标系) | true | string |
latitude | 门店地理位置纬度(高德坐标系) | true | string |
shopDoorPhoto | 门店门头照,Base64 格式 参考格式 "data:image/jpg;base64,YYU...." | true | string |
businessCategory | 门店经营类目:食品小吃(1)、饮料(2)、蛋糕(3)、鲜花(4)、生鲜果蔬(5)、电子数码(6)、百货(7)、文印票务(8)、医药(9)、同城电商(10)、小商品市场(11)、烧烤小龙虾(12) | true | string |
请求示例:
{
"shopContactPhone": "18988969776",
"latitude": "23.126977",
"sign": "11111111111111",
"shopName": "88奶茶",
"shopAddress": "广州市富力盈力大厦北塔",
"shopAreaCode": "440106",
"shopShortName": "88奶茶",
"businessCategory": "1",
"shopCityCode": "440100",
"shopDoorPhoto": "data:image/png;base64,iVB….",
"shopContactName": "jack",
"houseNum": "101",
"shopProvinceCode": "440000",
"merchantNo": "1537321229932040193",
"longitude": "113.317098"
}
响应示例:
{
"code": 0,
"data": {
"shopNo": "门店编号"
},
"msg": "操作成功",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
shopNo | 门店编号 | string |
# 6.3、更新门店
接口地址: /openapi/merchant/shop/edit
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
shopNo | 门店编码 | true | string |
shopName | 门店名称 | true | string |
shopShortName | 门店简称 | true | string |
shopContactPhone | 门店联系人手机号 | true | string |
shopContactName | 门店联系人姓名 | true | string |
shopProvinceCode | 门店所在省份编码 | true | string |
shopCityCode | 门店所在城市编码 | true | string |
shopAreaCode | 门店所在区县编码 | true | string |
shopAddress | 门店详细地址 | true | string |
houseNum | 门店门牌号 | true | string |
shopDoorPhoto | 门店门头照,Base64 格式 参考格式: "data:image/jpg;base64,/YYB...." | true | string |
longitude | 门店地理位置经度(高德坐标系) | true | string |
latitude | 门店地理位置纬度(高德坐标系) | true | string |
businessCategory | 门店经营类目:食品小吃(1)、饮料(2)、蛋糕(3)、鲜花(4)、生鲜果蔬(5)、电子数码(6)、百货(7)、文印票务(8)、医药(9)、同城电商(10)、小商品市场(11)、烧烤小龙虾(12) | true | string |
请求示例:
{
"shopContactPhone": "18988969773",
"latitude": "23.126977",
"sign": "123456",
"shopName": "77奶茶",
"shopAddress": "广州市富力盈力大厦北塔",
"shopAreaCode": "440106",
"shopShortName": "77奶茶",
"businessCategory": "1",
"shopCityCode": "440100",
"shopDoorPhoto": "data:image/png;base64,iVBO..",
"shopContactName": "jack",
"shopNo": "1537332156148727809",
"houseNum": "101",
"shopProvinceCode": "440000",
"merchantNo": "1537321229932040193",
"longitude": "113.317098"
}
响应示例:
{
"code": 0,
"data": null,
"msg": "操作成功",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
# 6.4、查询门店运力
接口地址: /openapi/merchant/shop/delivery
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
shopNo | 门店编码 | true | string |
请求示例:
{
"sign": "95343AE562D2FF0AB0B42A9968AD8CAB",
"shopNo": "1537332156148727809",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"code": 0,
"data": {
"deliveryList": [
{
"deliveryId": "1",
"deliveryName": "美团配送",
"icoUrl": "…",
"deliveryStatus": "2",
"desc": ""
}
]
},
"msg": "",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data - deliveryList参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
deliveryId | 运力id | string |
deliveryName | 运力名称 | string |
icoUrl | 运力图标,base64返回 | string |
deliveryStatus | 运力状态: 1:审核中 2:审核失败 3:审核通过 4:已开通 5:暂不可用 | string |
desc | 状态描述 | string |
# 6.5、预下单
商户可通过该接口查询到该时刻订单在各支持的运力公司所需的运费
接口地址: /openapi/merchant/order/queryDeliveryFee
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
shopNo | 门店编码 | true | string |
remark | 备注 | true | string |
otherOrderNo | 外部订单号 | true | string |
orderType | 订单类型 1:即时单 2:预约单 | true | string |
appointType | 预约单类型 订单类型为"2"时必传 1:预约送达单 2:预约取件单 | false | string |
expectedPickupTime | 期望取货时间 预约单类型为"2"时必传 13位的时间戳 | false | string |
expectedDeliverTime | 期望送达时间 预约单类型为"1"时必传 13位的时间戳 | false | string |
receiverName | 收货人姓名 | true | string |
receiverAddress | 收货人地址 | true | string |
receiverLat | 收货人地址纬度(高德坐标系) | true | string |
receiverLng | 收货人地址经度(高德坐标系) | true | string |
receiverPhone | 收货人联系方式 | true | string |
cargoWight | 订单重量 单位:KG | true | string |
cargoPrice | 订单价格 单位:元 | true | string |
productList | 订单明细,参数详见下表 | true | object |
businessCategory | 物品类目:食品小吃(1)、饮料(2)、蛋糕(3)、鲜花(4)、生鲜果蔬(5)、电子数码(6)、百货(7)、文印票务(8)、医药(9)、同城电商(10)、小商品市场(11)、烧烤小龙虾(12) | true | string |
订单明细productList详细参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
goods | 商品明细,参数详见下表 | List |
description | 订单备注 | string |
deliverFee | 顾客实际支付的运费 | double |
invoice | 发票抬头 | string |
originalPrice | 订单原价 | double |
total | 顾客实际支付金额 | double |
daySn | 门店当日流水号(取餐号) | string |
商品明细goods详细参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
goodCount | 货物数量 | int |
goodName | 货品名称 | string |
goodPrice | 货品单价 | double |
goodProperty | 货品属性 | string |
请求示例:
{
"orderType": "1",
"cargoWight": "1",
"receiverName": "小朋友",
"sign": "EB5A6B53955E7D55263E71D0F2B36EEB",
"remark": "请尽快送达",
"cargoPrice": "10",
"receiverAddress": "富力盈丰A座",
"receiverPhone": "18988969775",
"otherOrderNo": "1001",
"businessCategory": "1",
"receiverLng": "113.317098",
"shopNo": "1537332156148727809",
"receiverLat": "23.126977",
"productList": "{\"daySn\":\"T03\",\"deliverFee\":0.0,\"goods\":[{\"goodName\":\"瑰手工冰粉\",\"goodPrice\":32.0,\"goodProperty\":\"\"}],\"originalPrice\":32.0,\"shopName\":\"逸泉牛肉粉\",\"total\":0.0}",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"code": 0,
"data": {
"otherOrderNo": "12346",
//外部订单号
"preOrderInfoList": [
{
"pushOrderNo": "pu1474269882257387520",
"distance": 10,
"price": 8.3,
"deliveryId": "1",
"deliveryName": "美团配送",
"icoUrl": "…"
}
]
},
"msg": "",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data - preOrderInfoList参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
pushOrderNo | 推送单号 | string |
distance | 距离,单位:米 | double |
price | 运力价格,单位:元 | double |
deliveryId | 运力id | string |
deliveryName | 运力名称 | string |
icoUrl | 运力图标,base64返回 参考格式:"data:image/jpg;base64,YYU...." | string |
# 6.6、正式下单
商户可通过该接口正式下单
如果传多个推送单号,则按价格由低到高,2分钟轮询一次,直到接单为止
如需测试骑手接单,请提供配送单号并联系技术人员
接口地址: /openapi/merchant/order/add
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
pushOrderNoList | 推送单号,预下单返回的单号 | true | List |
paymentType | 支付类型,5:余额支付 | true | string |
notify_url | 异步通知地址 完成订单、取消订单、骑手接单等通知 | true | string |
请求示例:
{
"sign": "1C650BB7C06CDCE1D28F9ADB2C7B0556",
"pushOrderNoList": "[\"pu1537341137872891904\"]",
"paymentType": "5",
"notifyUrl": "123",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"code": 0,
"data": {
"orderNo": "12346"//配送订单号
},
"msg": "",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data 参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
orderNo | 配送订单号 | string |
# 6.7、取消下单
接口地址: /openapi/merchant/order/cancel
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
otherOrderNo | 外部单号 | true | string |
请求示例:
{
"sign": "DB6274516FB3D72FB97E26854660C3FE",
"otherOrderNo": "1001",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"code": 0,
"data": {
"deductAmount": 2 //违约金,code为0时返回
},
"msg": "",
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data 参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
deductAmount | 违约金 code为0时返回 | double |
# 6.8、获取订单信息和骑手位置
接口地址: /openapi/merchant/order/info
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
otherOrderNo | 外部单号 | true | string |
请求示例:
{
"sign": "DB6274516FB3D72FB97E26854660C3FE",
"otherOrderNo": "1001",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"msg": "",
"code": 0,
"data": {
"riderPhone": "158xxxxx",
"orderStatus": "3",
"icoUrl": "…",
"riderName": "张三",
"deliveryId": "1",
"price": 8.8,
"riderLng": "128.555",
"riderLat": "66.2222",
"deliveryName": "美团配送"
},
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data 参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
orderStatus | 订单状态 2、已接单;3、骑手到店 ;4、配送中 ; 5、已送达; 6、已取消 | string |
price | 运力价格,单位:元 | double |
deliveryId | 运力id | string |
deliveryName | 运力名称 | string |
icoUrl | 运力图标,base64返回 参考格式:"data:image/jpg;base64,YYU...." | string |
riderName | 骑手姓名 | string |
riderPhone | 骑手电话 | string |
riderLng | 骑手经度(高德坐标系) | string |
riderLat | 骑手纬度(高德坐标系) | string |
# 6.9、订单状态变更通知
客户接收通知后返回'SUCCESS'字符串则不再通知
如通知请求异常或返回非'SUCCESS'字符串,会重试一次通知
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
通知参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
orderStatus | 订单状态 2、已接单;3、骑手到店 ;4、配送中 ; 5、已送达; 6、已取消 | true | string |
deliveryId | 运力id | true | string |
deliveryName | 运力名称 | true | string |
icoUrl | 运力图标,base64返回 参考格式:"data:image/jpg;base64,YYU...." | true | string |
price | 运力价格 | true | double |
orderNo | 配送单号 | true | string |
otherOrderNo | 外部单号 | true | string |
# 6.10、查询账户余额
接口地址: /openapi/merchant/balance/query
请求方式:POST
consumes:["application/json"]
produces:["*/*"]
请求参数:
参数名称 | 参数说明 | 是否必须 | 数据类型 |
---|---|---|---|
merchantNo | 商户编号 | true | string |
sign | 签名 | true | string |
请求示例:
{
"sign": "35DCD4C5E67EF201AE2384527B487654",
"merchantNo": "1537321229932040193"
}
响应示例:
{
"msg": "",
"code": 0,
"data": {
"balance": 234.23
},
"ok": true
}
响应参数:
参数名称 | 参数说明 | 类型 |
---|---|---|
code | 返回标记:成功=0,失败=1 | integer(int32) |
data | 数据 | Json String |
msg | 返回信息 | string |
ok | boolean |
data 参数说明
参数名称 | 参数说明 | 类型 |
---|---|---|
balance | 余额,单位元 | double |