# 跑腿下游服务商接入文档
# 接入须知
# 1.1 约定
| 类别 | 描述 |
|---|---|
| 坐标系 | 腾讯侧使用的经纬度坐标一律为国标(腾讯地图默认坐标) |
| 城市编码 | GB/T 2260 WebService API | 腾讯位置服务 |
| 距离 | 使用米作为统一单位 |
| 费用 | 使用分作为单位 |
# 1.2 ChangeLog
| 日期 | 变更说明 |
|---|---|
| 2025.07.07 | 接口请求参数区分B端和C端是否必须 回调接口B端和C端为同一个值2.2.2 请求Body通用字段sp_user_id在B端为固定值,需要对接时和腾讯出行研发确认 |
| 2025.11.04 | 新增帮买类别(更新颜色) 蓝色为帮买业务字段 询价接口新增 order_type 详情可见附录服务运力类型 下单接口响应新增 order_type 详情可见附录服务运力类型 |
| 2025.11.11 | 2.2被调完单后通知、2.2.5查询详情 新增补充信息(更新颜色) 补充取收件图片信息 补充骑手信息和骑手位置信息 |
| 2025.11.25 | 新增服务商账户余额不足错误码 |
| 2025.12.24 | 骑手位置新增距离字段 |
| 2026.01.06 | 新增需充值运力查询账户余额接口 |
| 2026.04.29 | 加小费接口新增本次加小费金额和对应的微信支付流水号 |
| 2026.05.12 | 订单详情新增等候费和等候费规则字段 |
| 2026.05.14 | 增加骑手轨迹查询接口 |
| 2026.05.27 | 增加送件中取消售中逆向相关字段 |
# 接口
# 2.1 通用约定
url_prefix:(B端和C端均用同一个回调请求地址)
测试:https://test.tai.qq.com/intracity/express
正式:https://sp.wecar.map.qq.com/intracity/express
如非特殊约定,统一使用如下规范
| 类型 | 描述 |
|---|---|
| 协议 | HTTPS |
| 请求方式 | Post |
| 数据格式 | JSON,请设置Header的Content-Type为application/json |
| 编码 | UTF-8 |
| 时间戳 | 毫秒 |
| 日期格式 | 日期格式采用 GB/T 7408—2005 标准中"YYYY-MM-DD"格式(示例:2022-08-01),时区统一采用东八区(即北京时间)。 日期时间格式采用 GB/T 7408—2005 标准中的 "YYYY-MM-DD hh:mm:ss" 格式(示例: 2022-08-01 19:00:00),时区统一采用东八区(即北京时间)。 Java中时间格式应为: "yyyy-MM-dd HH:mm:ss" PHP中时间格式应为: "Y-m-d H:i:s" Go中时间格式应为:"2006-01-02 15:04:05" Python中时间格式应为:"%Y-%m-%d %H:%M:%S" |
# 请求Body通用字段
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| seq_id | string(36) | 请求流水号,调用方自动生成一个随机ID,建议使用uuid | Yes | Yes |
| timestamp | long(13) | 请求时间,Unix Timestamp单位 秒 | Yes | Yes |
| nonce | string(32) | 随机字符串,数字与字母组合,区分大小写 | Yes | Yes |
| api_key | string(32) | 腾讯出行服务分配给服务商的应用标识 | Yes | Yes |
| sign | string(32) | 签名验证参数 | Yes | Yes |
| sp_user_id | string(32) | 用户id 主动调用可能会添加 | Yes (固定值,需要和腾讯出行侧确认,B端不接注册的话可以为空串) | 询价:No 其他:Yes |
| user_code | string | 腾讯用户唯一标识 | 帮买必填 | |
| buss_code | int | 腾讯侧业务标识 | 帮买必填 被调跑腿固定69 被调帮买固定84 |
# 请求响应统一数据结构
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| code | int(11) | 响应码 默认0为成功 其他为错误 | Yes |
| message | string(64) | 错误消息 code为0时返回空字符串 code为非0是返回具体原因 | No |
| data | object | 业务响应主题 code为0时返回,具体返回对象结构见下文具体API code为非0时不返回 | No |
# 2.2 主调(腾讯调用服务商)
# 2.2.1 注册用户(B端无用户概念,可不接)
注册用户,如需要区分用户调用该接口,生成访问凭证,可选实现
Route: /register
请求Body:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string(64) | 姓名/昵称 | No |
| phone | string(64) | 手机 | Yes |
| address | string(512) | 地址 | No |
| lng | double | 经度 | No |
| lat | double | 纬度 | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| sp_user_id | string(64) | 用户id | Yes |
# 2.2.2 询价
Route: /estimatePrice
请求Body:
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| list | List | 询价结果列表 对象详细结构见附录 EstimateInfo | Yes |
# 2.2.3 创建订单
Route: /createOrder
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 | Yes | Yes |
| estimate_id | string(64) | 询价id、预下单id 可以通过该id进行下单 | Yes | Yes |
| payment_order_id | string(64) | 支付流水单号 对应微信付款的支付流水号 以字母T开头 | No | Yes |
| remark | string (帮买备注长度200) | 备注(以下单为准) | No | No |
| coupon_info_list | List | 优惠券信息(商家券信息,接入商家券需要) | No | No |
| pay_total_fee | int(11) | 支付金额(券后用户实付金额,接入商家券需要) | No | No |
| order_scene | int(11) | 订单场景 不传默认为c端 1: c端 2:b端 21:b端渠道商 (历史字段废弃,不再使用) | Yes | No |
| order_phone | string(64) | 下单人手机号 | No | Yes |
| phone_type | int(11) | 1-AXN 2-AXB | Yes | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| sp_order_id | string(50) | 服务商业务订单号 | Yes |
| service_type | int(4) | 服务类型 详细见:附录服务运力类型 | Yes |
| rider_type | int(4) | 运送类型 详细见:附录服务运力类型 | Yes |
| order_type | int(11) | 订单类型 详细见:附录服务运力类型 | Yes(取送非必需) |
| buy_type | int(11) | 帮买模式 详细见:附录服务运力类型 仅order_type | Yes(取送非必需) |
| create_time | int(13) | 下单成功时间戳(毫秒) | Yes |
| fees | FeeInfo | 各项费用信息 | Yes |
| eta_info | EtaInfo | eta信息 | Yes |
| send_code | string | 发货码 | No |
| receive_code | string | 收货码 | No |
# 2.2.3 预取消订单
Route: /preCancelOrder
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
| cancel_info | CancelInfo | 取消信息 | No | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| can_cancel | bool | 是否能取消 | Yes |
| fee_info | FeeInfo | 各项费用信息 | Yes |
| cancel_rules | List | 取消规则 | No |
# 2.2.4 取消订单
Route: /cancelOrder
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
| cancel_info | CancelInfo | 取消信息 | Yes (可能是一个固定值) | Yes |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| fee_info | FeeInfo | 各项费用信息 | Yes |
# 2.2.5 查询订单详情
Route: /orderDetail
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 | Yes |
| sp_order_id | string(64) | 服务商业务订单号 | Yes |
| status | int(11) | 订单状态 | Yes |
| accepted_time | int(13) | 骑手接单时间毫秒时间戳 | 接单后:Yes,其他:No |
| create_time | int(13) | 创单时间(毫秒) | Yes |
| reserve_time | int(13) | 预约时间(毫秒) | 实时单: No 预约单: Yes |
| estimate_time_info | EstimateTimeInfo | 预估行程时间信息 | Yes |
| actual_time_info | ActualTimeInfo | 实际行程时间信息 | Yes |
| rider_info | RiderInfo | 骑手信息 | Yes |
| fee_info | FeeInfo | 各项费用信息 | Yes |
| eta_info | EtaInfo | eta信息 | Yes |
| send_code | string(32) | 发货码 | No |
| receive_code | string(32) | 收货码 | Yes |
| cancel_info | CancelInfo | 取消信息 | No Yes: 当订单为已取消 |
| reassign_info_history | List | 改派历史信息 | No: Yes:改派历史信息 |
| exception_info_history | List | 异常信息历史 | No Yes: 订单回调通知异常后 |
| refund_info_history | List | 退款信息历史 | No Yes: 订单回调退款后 |
| remark | string | 备注 | Yes |
| pickup_pic | List | 取货照片url | No |
| complete_pic | List | 送达照片url | No |
| wait_fee | int(11) | 等候费 | No |
| wait_rules | List | 等候费规则 | No |
# 2.2.6 查询骑手信息(位置)
Route: /riderLocation
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| rider_info | RiderInfo | 骑手信息 | Yes |
| lng | double | 经度 | Yes |
| lat | double | 纬度 | Yes |
| distance | int | 距离(米) 取货前为骑手到起点的规划路线距离,取件后为骑手到终点的规划路线距离 | No |
| timestamp | long | 点位更新时间,Unix Timestamp单位 毫秒 | Yes |
# 2.2.7 加小费
传递总计小费金额
Route: /addTip
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
| tips_fee | int(11) | 总计小费金额,单位分,如果多次添加,取最后一次的小费金额 | No | No |
| add_tip_fee | int(11) | 本次新增小费金额 | No | No |
| payment_order_id | string | 加小费对应的支付流水号 | No | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 | |
|---|---|---|---|---|
| tips_fee | int(11) | 总计小费金额,单位分,如果多次添加,取最后一次的小费金额 | Yes | No |
| timestamp | long | 更新时间,Unix Timestamp单位 毫秒 | Yes |
# 2.2.8 账户余额查询
对于需要腾讯侧在运力充值/授信才能下单的运力,需要提供账户余额查询的能力,腾讯侧定时查询,避免因账户余额不足导致下单失败
Route: /balanceQuery
请求Body:
| 名称 | 类型 | 描述 | B端(必须) | C端(必须) |
|---|---|---|---|---|
| account_id | string(64) | 大客户id/腾讯在运力侧的账号标识 | No(有余额概念必接) | No(有余额概念必接) |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 | |
|---|---|---|---|---|
| balance | int(11) | 当前余额,单位:分 | Yes | No |
| timestamp | long | 当前余额时间,Unix Timestamp单位 毫秒 | Yes |
# 2.2.9 骑手轨迹查询(开发中)
Route: /driverTrajectory
请求Body:
| 名称 | 类型 | 描述 | 必须 | |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No | No |
| start_time | long | 查询起始时间,不传或传入时间早于司机接单时间,按照司机接单时间查询 Unix Timestamp单位 毫秒 | No | |
| end_time | long | 不传且订单未到达终态,按照当前时间查询 不传或传入时间晚于订单终态时间,按照订单到达终态时间查询 Unix Timestamp单位 毫秒 | No |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| data | List | 司机轨迹点信息 详细信息见下方对象实体表 | Yes |
# 2.3 被调(服务商回调腾讯)
Route: /callback/common/v1/order/status
请求Body:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 与sp_order_id订单号存在其中一个 | No |
| sp_order_id | string(64) | 服务商业务订单号 与biz_order_code订单号存在其中一个 | No |
| event | int(11) | 事件类型 见下文事件类型 | Yes |
| status | int(11) | 订单状态 | Yes |
| accepted_info | AcceptedInfo | 已接单事件相关信息 (不管是第一次接单还是改派后接单都需要) | 根据具体状态填充 |
| picking_info | PickingInfo | 骑士出发开始取件事件相关信息 | 根据具体状态填充 |
| reassign_info | ReassignInfo | 骑手转单事件相关信息(event 250) | 根据具体状态填充 |
| arrived_info | ArrivedInfo | 已到达取件点事件相关信息 | 根据具体状态填充 |
| picked_info | PickedInfo | 已取件事件相关信息 | 根据具体状态填充 |
| delivering_info | DeliveringInfo | 骑士出发开启送货事件相关信息 | 根据具体状态填充 |
| completed_info | CompletedInfo | 完成事件相关 | 根据具体状态填充 |
| send_back_info | SendBackInfo | 送回物品事件相关信息 | 根据具体状态填充 |
| exception_info | ExceptionInfo | 异常事件相关信息 | 根据具体状态填充 |
| refund_info | RefundInfo | 退款通知事件信息 | 根据具体状态填充 |
| cancel_info | CancelInfo | 取消事件相关 | 根据具体状态填充 |
| event_version | long(13) | 订单事件发生版本号 ,需一个订单维度单调递增 注: 该值需保证同一事件触发重试逻辑时值保持不变 | Yes |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| accept_time | int(13) | 通知接收处理时间(毫秒) | Yes |
# 2.4 查询订单状态(服务商调用腾讯)
需要单独开通,需要联系研发开通!
Route: /openapi/v1/order/status
请求Body:
| 名称 | 类型 | 描述 | 必须 | 附加信息 |
|---|---|---|---|---|
| biz_order_code | string(64) | 腾讯业务订单号 | Yes | |
| sp_order_id | string(64) | 服务商业务订单号 | No | |
| sp_id | string(64) | 服务商唯一id | Yes | 腾讯出行侧对接给出 |
响应Body业务字段:
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| status | int(11) | 订单状态 具体状态值见下文附录 | Yes |
| status_desc | string | 订单状态描述 | Yes |
| total_fee | int(11) | 支付金额 | Yes |
| refund_fee | int(11) | 退款金额(取消中、已取消状态有) | No |
| create_time | int(13) | 创单时间(毫秒) | Yes |
| sp_refund_no | string | 退款流水号(服务商侧)【有退款时存在】 | No |
| biz_refund_no | string | 腾讯侧退款流水号【有退款时存在】 | No |
| refund_notify_time | long | 退款结果通知时间【有退款时存在】 | No |
| pay_refund_time | long | 退款受理时间,第一次收到退款通知的时间【有退款时存在】 | No |
| refund_success_time | long | 退款成功时间【有退款时存在】 | No |
# 附录
# 3.1 对象实体表
CouponInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| stock_id | string(64) | 批次id | Yes |
| coupon_id | string(64) | 优惠券id | Yes |
| coupon_fee | int(11) | 优惠金额(分) | Yes |
| coupon_type | int(11) | 优惠券类型(1-满减券,3-折扣券) | Yes |
AddressInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string | 姓名/昵称 | Yes (帮买寄件人为No) |
| phone | string(32) | 手机,传入真实手机号 | Yes (帮买寄件人为No) |
| detail_address | string | 详细地址 | Yes |
| poi_address | string | poi地址信息 | No |
| lng | double | 经度 | Yes |
| lat | double | 纬度 | Yes |
EstimateInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| estimate_id | string(64) | 询价id、预下单id 可以通过该id进行下单 | Yes |
| service_type | int(4) | 服务类型 详细见:附录服务运力类型 | No |
| fee_info | FeeInfo | 费用相关 见下文 | Yes |
| eta_info | EtaInfo | eta信息 见下文 | Yes |
FeeInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| total_fee | int(11) | 总费用(折后价) = 各项收费 - 优惠折扣费用 用户实付 | Yes |
| deliver_fee | int(11) | 运费(原价) | Yes |
| coupon_fee | int(11) | 优惠费用,正值 | No |
| insurance_fee | int(11) | 保价费 | No |
| append_fee | int(11) | 附加费 | No |
| tips_fee | int(11) | 小费金额 | No |
| fee_details | list | 运费明细 包含上面全部的费用 | Yes |
| deduction_fee | int(11) | 取消费 | No |
| deduction_fee_details | list | 取消费用明细 包含上面全部的费用 | No |
| merchant_coupon_infos | list | 腾讯商家券明细信息 | No 接入了腾讯出行商家券使用券的订单才会有 |
| send_back_fee | int(11) | 送回费,送件中取消才需要回传,不参与totalFee以及deliveryFee的计算 | No |
注意:
1.deliveryFee-couponFee=totalFee;
2.deliveryFee = fee_detail 总和
3.couponFee在外层
FeeDetailInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string(64) | 费用名称 | Yes |
| fee | int(11) | 计费金额,单位分 | Yes |
EtaInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| distance | int(11) | 距离 | Yes |
| arrive_time | int(13) | 预计到达时间(毫秒) | Yes |
RiderInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string(32) | 名称 | Yes |
| phone_type | int(11) | (虚拟隐私号类型) 1-AXN 2-AXB | Yes |
| virtual_phones | List | 虚拟号,下单人,发货人,收货人对应关系 | Yes |
| real_phone | string(32) | 真实手机号 和 phone_type 、virtual_phones 互斥 | No |
VirtualPhoneInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| role_type | int(11) | 角色(1-下单人,2-收货人,3-发货人) 下单人手机号,以注册手机号为准 | Yes |
| virtual_phone | string(32) | 虚拟手机号 | Yes |
EstimateTimeInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| accept_time | int(13) | 预计骑手接单时间(毫秒) | 根据订单状态决定(30050) |
| depart_pick_time | int(13) | 预计出发时间(毫秒) | 根据订单状态决定 (30100) |
| arrive_pickup_point_time | int(13) | 预计取件时间(毫秒) | 根据订单状态决定 (30200) |
| finish_time | int(13) | 预计送达时间(毫秒) | 根据订单状态决定 (30300) |
| send_back_finish_time | int(13) | 送回预计送达时间(毫秒) | 根据订单状态决定 (30405,腾讯暂无送回) |
EstimateTimelnfo :预估时间信息:根据当时订单状态决定:
如30050派单就填预计接单的时间
ActualTimeInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| accept_time | int | 骑手接单时间 | 根据订单状态决定 |
| depart_pick_time | int(13) | 骑手出发时间 | 根据订单状态决定 |
| arrive_pickup_point_time | int(13) | 到达取件点时间 | 根据订单状态决定 |
| pickup_time | int(13) | 已取件时间 | 根据订单状态决定 |
| depart_send_time | int(13) | 出发送件时间 | 根据订单状态决定 |
| finish_time | int(13) | 完单时间 | 根据订单状态决定 |
| depart_sendback_time | int(13) | 出发开始送回时间 | 根据订单状态决定 |
| sendback_finish_time | int(13) | 送回完单时间 | 根据订单状态决定 |
根据订单状态,如已接单需要有接单时间;完成则需要有接单、到达、取件、完单时间;具体根据对的状态填入即可
CancelInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 取消时间,Unix Timestamp单位 毫秒 | Yes |
| reason_id | int(11) | 取消原因Id | Yes |
| reason_desc | string(64) | 取消原因 | No |
| cancel_from | int(11) | 取消来源 | Yes 1:用户 2:腾讯客服取消 3:服务商 |
| cancel_fee | int(11) | 取消费 | No |
| need_in_sale_reverse | boolean | 该次取消是否发起售中逆向,若需要发起售中逆向,则服务商应该回调30400送回中状态,禁止回调已取消(终态)状态,且应在送回中回调信息中增加送回费字段 | No |
ExceptionInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 异常产生时间,Unix Timestamp单位 毫秒 | Yes |
| exception_id | int(11) | 取消编码 | es |
| exception_desc | string(64) | 取消原因 | No |
CancelRule
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string(64) | 规则名称 | Yes |
| start | int(11) | 开始时间 | Yes |
| end | int(11) | 截止时间 | Yes |
| fee | int(11) | 费用 | Yes |
GoodsDetail(跑腿有)
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string | 货品名称 | 是 |
| count | int | 货品数量 | 是 |
| price | int | 货品价值,选填,数值不小于0,单位分(如果有厘则四舍五入保留两位小数) | 否 |
| unit | string | 货品单位 | 否 |
| photos | List | 货品图片 | 否 |
WaitRuleInfo(帮买新增)
| 名称 | 类型 | 必须 | 描述 |
|---|---|---|---|
| start_ms | long | Yes | 区间开始等待时长,单位毫秒,包含 |
| end_ms | long | No | 区间结束等待时长,单位毫秒,不包含;null 表示无上限 |
| charge_type | string | Yes | 计费类型:FIXED 固定收费,PER_UNIT 按单位收费 |
| fee | int | No | 固定费用,单位分;FIXED 时必填 |
| unit_price | int | No | 单位价格,单位分;PER_UNIT 时必填 |
| billing_unit_ms | long | No | 当前分段计费单位时长,单位毫秒 |
| desc | string | No | 展示文案 |
TrajectoryInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| name | string(32) | 名称 | Yes |
| phone | string(32) | 手机号(真实号或AXN的虚拟号) | No |
| lng | double | 经度 | Yes |
| lat | double | 纬度 | Yes |
| timestamp | long | 轨迹点采集时间,Unix Timestamp单位 毫秒 | Yes |
回调相关数据结构
AcceptedInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 预估时间信息 | Yes |
| rider_info | RiderInfo | 骑手信息 | Yes |
| send_code | string(32) | 发货码 | No |
| receive_code | string(32) | 收货码 | No |
PickingInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes |
ReassignInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| reason_id | int(11) | 改派原因Id | Yes 1-骑手改派 2-服务商改派 |
| reason_desc | string(64) | 改派原因描述 | No |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes: 回调接口 No: 订单详情接口 |
| rider_info | RiderInfo | 新骑手信息 | Yes |
ArrivedInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes |
PickedInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes |
DeliveringInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes |
| pickup_pic | List | 取货照片url | No |
RefundInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 退款通知时间,Unix Timestamp单位 毫秒 | Yes |
| refund_no | string | 退款流水号(服务商侧) | Yes |
| refund_fee | long | 退款金额(单位分) | Yes |
CompletedInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| complete_pic | List | 送达照片url | No |
| rider_info | RiderInfo | 骑手信息 | Yes |
| rider_location_info | RiderLocationInfo | 骑手位置信息 | Yes |
SendBackInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| timestamp | long | 事件发生事件点,Unix Timestamp单位 毫秒 | Yes |
| estimate_time_info | EstimateTimeInfo | 新预估时间信息 | Yes |
| send_back_fee | int(11) | 送回费 | No |
RiderLocationInfo
| 名称 | 类型 | 描述 | 必须 |
|---|---|---|---|
| rider_lng | double | 骑手经度 | Yes |
| rider_lat | double | 骑手纬度 | Yes |
# 3.2 订单状态表:供参考
| 状态编码 | 名称 | 描述 | 必须 | 支付/退款状态说明 |
|---|---|---|---|---|
| 10000 | INIT | 初始化(订单创建)(废弃) | No | 未支付 |
| 10200 | DISPATCHING | 派单中(废弃) | No | 已支付 |
| 10300 | WAIT_PICK | 待取件(废弃) | No预约单可能需要 | 已支付 |
| 30010 | INIT | 服务商初始化 | No | |
| 30050 | SP_DISPATCHING | 服务商派单中 | Yes | 已支付 |
| 30100 | PICKING | 取件中 | Yes | 已支付 |
| 30200 | ARRIVED_PICK_POINT | 到达取件点 | Yes | 已支付 |
| 30250 | PICKED | 已取件 | No | 已支付 |
| 30300 | DELIVERING | 送件中 | Yes | 已支付 |
| 30400 | SENDING_BACK | 完成送回中 送件中,用户拒收和联系不上收件人的时候 | No(需要看对接方式 ,有送回中才需要) | 已支付 |
| 30405 | CANCEL_SENDING_BACK | 取消送回中 | No 需要看对接方式 | 已支付 |
| 30500 | ARRIVED | 已送达 | Yes | 已支付 |
| 30700 | CANCELING | 取消中 | No | 已支付未退款 |
| 30710 | CANCELED | 已取消 | Yes | 已退款 |
| 10500 | CANCELING | 取消中(废弃) | No | 已支付未退款 |
| 90500 | CANCELED | 已取消(废弃) | Yes 用90500 | 已退款 |
| 90900 | FINISHED | 已完成(废弃) | No,送达30500即可 | 已支付 |
| 事件编码 | 名称 | 描述 | 必须 |
|---|---|---|---|
| 100 | INIT | 初始化(订单创建) | Yes |
| 150 | DISPATCH | 派单 | Yes |
| 200 | RIDER_ACCEPT | 骑手接单 | Yes |
| 250 | RIDER_REASSIGN | 转单 | Yes:有转单 No:无转单 |
| 260 | DEPART_PICK | 开始取件 | No 暂时不使用 |
| 300 | ARRIVE_PICK_POINT | 到达取件点 | Yes |
| 350 | PICKED | 已取件 | Yes |
| 400 | DEPART_SEND | 开始送件 | Yes |
| 450 | ARRIVED | 已送达 | Yes |
| 500 | RIDER_SEND_BACK_FINISH | 骑手送回->完成态(服务商侧) | Yes:有送回 No:无送回 |
| 510 | RIDER_SEND_BACK_CANCEL | 骑手送回->取消态(服务商侧) | Yes:有送回 No:无送回 |
| 550 | WAIT_SUPPEMENT | 待补款 | Yes: 预付款逻辑,且二期支持 No: 完单补款逻辑 |
| 650 | ORDER_INFO_UPDATE | 订单信息变更 | Yes:有变更 No:无变更 |
| 670 | SP_REASSIGN | 服务商改派骑手 | Yes:有改派 No:无改派 |
| 850 | EXCEPTION | 订单异常 最好将该事件收敛到取消事件 | Yes:有异常 No:无异常 |
| 950 | CANCEL | 取消 内部可能需要区分具体取消原因 | Yes:有取消 No:无取消 |
| 960 | REFUND | 退款通知 | Yes:有退款 No:无退款 (如不需要退款通知可不接) |
| 990 | FINISH | 完成 | Yes |
# 3.3 物品类型表
| id | 类型 |
|---|---|
| 1 | 文件证照 |
| 2 | 服饰 |
| 3 | 食品饮料 |
| 4 | 蛋糕 |
| 5 | 鲜花 |
| 6 | 数码 |
| 7 | 水果生鲜 |
| 8 | 药品 |
| 9 | 汽配 |
| 10 | 个护美妆 |
| 11 | 家居家纺 |
| 12 | 其他 |
# 3.4 取消原因表--用户
| id | 父类别 | 子类别 | 类型 |
|---|---|---|---|
| 1 | 和自己有关 | 填写的取件/收件信息有误 | 单选 |
| 2 | 计划有变,暂时不需要寄件 | 单选 | |
| 3 | 和平台有关 | 没有骑手接单 | 单选 |
| 4 | 派的骑手距离太远 | 单选 | |
| 5 | 和骑手有关 | 联系不上骑手 | 单选 |
| 6 | 骑手要求我取消订单 | 单选 | |
| 7 | 骑手行驶过于缓慢或长时间不移动 | 单选 | |
| 20 | 其他 | 其他 | 输入框 |
# 3.5 取消原因表-服务商
| id | 父类别 | 子类别 | 类型 |
|---|---|---|---|
| 100 | 骑手有关 | 本人原因,无法配送 | |
| 101 | 服务商有关 | 物品异常,无法配送 | |
| 102 | 定位不准 | ||
| 103 | 无骑手接单 | ||
| 104 | 用户有关 | 联系不到下单人或收取件人 | |
| 105 | 物品超重,拒绝支付超重费用 | ||
| 106 | 取件异常 | ||
| 107 | 送件异常 | ||
| 150 | 其他 | 其他 |
# 3.5 异常原因表(还未完成)
| id | 类别 | 类型 | 腾讯行为 | 服务商行为 | 退款方式 |
|---|---|---|---|---|---|
| 用户侧 | 用户拒收 | ||||
| 用户实名失败 | |||||
| 服务商侧 | |||||
# 3.7 服务运力类型
| 类别 | 取值说明 |
|---|---|
| 运力类型(service_type) | 1: 特惠(非专人直送) 2: 特快(专人直送) |
| 服务分类 (rider_type) | 1: 实时单 2: 预约单 |
| 订单类型 (order_type) | 1:跑腿 2:帮我买 |
| 帮买模式 (buy_type) | 1: 指定地点帮买 2: 骑手就近帮买 |
# 3.8 订单来源
| id | 类型 |
|---|---|
| 10 | 美团 |
| 20 | 饿了么 |
| 30 | 抖音 |
| 40 | 京东外卖 |
| 50 | 淘宝闪购 |
| 60 | 歪马微商城 |
| 70 | 有赞云 |
| 1100 | 小象超市 |
# 3.9 腾讯错误码
| code | message | 说明 |
|---|---|---|
| 0 | success | |
| 400000 | ||
| 400001 | 请求URL错误 | |
| 400002 | 请求方法错误 | |
| 400003 | appId错误 | |
| 400004 | 时间戳过期或者nonce重复 | |
| 400005 | 签名验证失败 | |
| 400101 | 请求频繁,请稍后重试 | |
| 400102 | 询价价格已失效,请重新询价 | |
| 400103 | 询价地址不支持 | |
| 400104 | 超出计费里程上限 | |
| 400105 | 获取预计取件时间失败 | |
| 400106 | 可用运力不足 | |
| 400110 | 运力账户余额不足 | |
| 400100 | 通用非影响主流程错误码,无需关注的业务错误码 | |
| 400201 | 存在敏感词信息 | |
| 500000 | 其他业务错误 | |
| 500100 | 阻塞主流程错误如下单失败,取消失败,需要腾讯侧关注错误码 |
# 3.9 签名算法
# 3.9.1 描述
- 从请求串中获得 api_key、seq_id、timestamp, nonce 通用字段以及其他的业务段和鉴权结果字段 sign。
- 根据签名算法,对参与签名的内容进行签名; 按照除 sign 外参数名称排序(字典升序排列)成”key1=value1&key2=value2&....”的原始字符串 src1;请求报文中不存在的参数不参与签名。 将原始字符串+分配给调用方的 api_sercret 形成字符串 src2; 将 src2 进行 md5 后转成大写形成签名内容 dest
- 将步骤 2 中得到的签名内容 dest 与请求中的 sign 字段内容做比较,如果相同则验证成功,否 则判定请求非法。举例: 假设注册接口文档中业务字段为[name, phone,address],分配的 api_sercret= DZaslH9B9ycqRrE77laCPB2Om, 请求参数如下: api_key=PSUBZLHOKUO6HV52A5CAUSSE5KSB6Y, seq_id=b8b4f0b8-01fb-4c06-80b9-3ab895a8c616, timestamp=1726214265, nonce=123456,name=test, phone=11111111111,address=北京市朝阳区亚洲金融大厦 则需要签名的内容:
address=北京市朝阳区亚洲金融大厦&api_key=PSUBZLHOKUO6HV52A5CAUSSE5KSB6Y&name=test&nonce=e2fa80izRF&phone=11111111111&seq_id=b8b4f0b8-01fb-4c06-80b9-3ab895a8c616×tamp=1726214265DZaslH9B9ycqRrE77laCPB2Om
- 计算的 MD5 值为 afc4a5b550c1f5c92bca917aba66faf5,大写值为
AFC4A5B550C1F5C92BCA917ABA66FAF5
- 将步骤 4 中得到的 MD5 值,与请求中 sign 字段的值比较。两者相同请求合法
注意:签名时对对象类型的value需进行json序列化后的字符串拼接,这里的json需与主调HTTP客户端传输的json保持key顺序一致,验签时会原样提取json中的value
# 3.9.2 示例
# Java
算法工具类
用例
# Golang
# 3.10 状态机
← 跑腿上游渠道接入文档(2B) 车辆信息 →