开放接口 · 跑腿

跑腿发单接口说明

外部系统把订单发进本店抢单中心。订单出现在配送看板的待指派里,骑手可以抢单并配送。签名方式见 开放接口设计说明 · 签名算法。

发到哪里

成功后订单写入跑腿抢单池:已支付、已发单、尚未指定骑手。平台在配送看板查看,骑手在抢单列表接单。看板路径:mch/errands/delivery/dashboard。

先在店铺的跑腿场景里建好服务类型,并把该类型配给骑手。发单时传对应的 purchasing_type_id。同一 out_order_no 重复提交不会生成第二张单(幂等返回原单)。

接口地址

基础地址:/web/index.php?r=api/open/errand/{动作}。系统级请求头与 签名与密钥 完全相同。

动作方法作用
typesGET本店已启用的场景
orderPOST发单进抢单中心
queryGET按 out_order_no 或 order_no 查状态
cancelPOST骑手未接单时取消

1. 场景列表 types

GETapi/open/errand/types

应用级参数

名称必须说明
biz_scene否业务场景,默认 1(跑腿);传 0 不过滤
mch_id否商家范围,默认 0

返回 data 元素

字段说明
id场景 ID,发单时作 purchasing_type_id
name场景名称
biz_scene / biz_scene_label场景类型与文案

2. 发单 order

POSTapi/open/errand/orderJSON Body

应用级输入参数

名称类型必须说明
out_order_nostring是外部单号,4~40 位字母数字下划线横线;幂等键
purchasing_type_idint是场景 ID,来自 types
feenumber是订单金额,>0 且 ≤100000
rider_feenumber否骑手结算金额;不传则等于 fee
expect_minutesint否期望送达分钟数,默认 120,范围 10~1440
contentstring是配送内容说明
remarkstring否卖家备注
distance_kmnumber否距离公里;不传则按经纬度估算
pickupobject是取件点:name、mobile、address、lng、lat 均必填
dropoffobject是送达点:同上
mch_idint否商家 ID

请求体示例

{
  "out_order_no": "WB20261026001",
  "purchasing_type_id": 3,
  "fee": 12.5,
  "rider_fee": 8,
  "expect_minutes": 90,
  "content": "文件一份,请当面签收",
  "remark": "门禁密码 1208",
  "pickup": {
    "name": "张三",
    "mobile": "13800000000",
    "address": "深圳市南山区某某路 1 号",
    "lng": "113.93",
    "lat": "22.54"
  },
  "dropoff": {
    "name": "李四",
    "mobile": "13900000000",
    "address": "深圳市南山区某某大厦",
    "lng": "113.95",
    "lat": "22.53"
  }
}

返回 data

字段说明
order_no本系统订单号
out_order_no外部单号
delivery_status配送状态码
delivery_status_label状态文案;已取消时为「已取消」
in_grab_pool是否仍在抢单池(未指定骑手)
fee / rider_fee订单金额 / 骑手费
addtime创建时间 Unix 秒

3. 查询 query

GETapi/open/errand/query
名称必须说明
out_order_no二选一外部单号(优先)
order_no二选一本系统订单号

返回结构同发单 data。非本开放接口写入的订单会提示「订单不存在」。

4. 取消 cancel

POSTapi/open/errand/cancel
{
  "out_order_no": "WB20261026001"
}

也可传 order_no。骑手已接单或配送已推进时返回失败:「骑手已接单,不能取消」。

← 返回开放接口设计说明 · 技师发单 →