# 订单流程说明

# 业务流程概览

┌────────────────────────────────────────────────────────────────────┐
│                                                                    │
│   ① 选择行程信息          ② 询价                ③ 创建订单         │
│  (地址/时间/类型)  ───►  (车型+价格)  ───►   (确认下单)           │
│                                                       │            │
│                                                       ▼            │
│   ⑥ 嘟嘟分配车辆/司机    ⑤ 嘟嘟接单            ④ 用户支付         │
│  (待完成)        ◄───   (待排车)      ◄───   (合作平台代收)       │
│           │                                                        │
│           ▼                                                        │
│   ⑦ 行程完成              ⑧ 车队上报额外费用     ⑨ 用户支付额外费 │
│  (司机操作)        ───►   (如食宿/超时)   ───►  (合作平台代收)    │
│                                                       │            │
│                                                       ▼            │
│   ⑪ 用户评价              ⑩ 订单完结                              │
│  (待评价 → 已评价)  ◄───  (待评价)                                │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘

# 详细流程

# ① 选择行程信息

用户在合作方应用内选择:

  • 出发地点(起点)
  • 目的地点(终点)
  • 出发时间
  • 包车类型:单程 / 往返 / 包天
  • 途经点(可选)

# ② 询价

合作方调用嘟嘟巴士的询价接口,获取:

  • 该城市可用车型列表
  • 各车型的报价

用户从车型列表中选择一种车型。

接口 说明
POST /api/charter/partner_car_type_list 获取车型列表及报价

# ③ 创建订单

用户确认行程信息和车型后,合作方调用创建订单接口

接口 说明
POST /api/charter/partner_create_order 创建包车订单

接口返回:

  • order_id:订单ID
  • order_num:订单号
  • price:应付金额

订单创建成功后,状态为 待支付(10)

# ④ 用户支付

用户在合作方应用内完成支付(合作平台代收款)。支付完成后,合作方调用嘟嘟巴士的订单支付回调接口通知支付结果:

接口 说明
POST /index.php/charter/order/partner_pay_notify 支付成功通知

支付成功后,订单状态变为 待排车(4)

# ⑤ 嘟嘟接单

嘟嘟巴士平台收到订单后开始处理:

  • 确认订单信息
  • 进入排车流程

订单状态:待排车(4)

# ⑥ 嘟嘟分配车辆和司机

嘟嘟巴士车务人员为订单分配具体的车辆和司机:

  • 派车后订单状态变为 待完成(5)
  • 司机和车辆信息可通过订单详情接口查询

合作方可通过订单详情接口主动查询:

接口 说明
POST /api/charter/partner_order_detail 查询订单详情(含司机/车辆信息)

# ⑦ 行程完成

司机执行用车任务,完成行程:

  • 司机在车队端操作"行程结束"
  • 订单状态变为 待评价(7)

# ⑧ 车队上报额外费用(如有)

如果行程中产生了额外费用(住宿、超时、超里程等),车队会在系统中上报:

  • 系统更新订单的 extra_fee_amount 字段
  • extra_fee_status 标记为 0(待支付)
  • 此时订单状态显示为 待结算

合作方可通过订单详情接口看到额外费用:

{
  "extra_fee_amount": 50,
  "extra_fee_status": 0,
  "is_pending_settlement": 1,
  "status_name": "待结算"
}

# ⑨ 用户支付额外费用

用户在合作方应用内支付额外费用(合作平台代收款)。支付完成后,合作方调用额外费用支付回调接口

接口 说明
POST /index.php/charter/order/partner_extra_fee_pay_notify 额外费用支付通知

支付成功后,extra_fee_status 变为 1(已支付)。

# ⑩ 订单完结

所有费用结清后,订单进入待评价状态:

  • 订单状态:待评价(7)
  • 此时订单已完成,等待用户评价

# ⑪ 用户评价

用户对本次服务进行评价。合作方调用提交评价接口

接口 说明
POST /api/charter/partner_submit_evaluate 提交订单评价

评价提交后,订单状态变为 已评价(8),订单流程结束。

# 订单状态流转图

                ┌─────────┐
                │ 待支付  │ status=10
                │  (10)   │
                └────┬────┘
                     │ 用户支付
                     ▼
                ┌─────────┐
                │ 待排车  │ status=4
                │   (4)   │
                └────┬────┘
                     │ 嘟嘟派车
                     ▼
                ┌─────────┐
                │ 待完成  │ status=5
                │   (5)   │
                └────┬────┘
                     │ 司机完成行程
                     ▼
        ┌────────────┴────────────┐
        │                         │
        ▼                         ▼
   有额外费用                  无额外费用
        │                         │
        ▼                         │
  ┌─────────┐                    │
  │ 待结算  │                    │
  │ (5+待付) │                   │
  └────┬────┘                    │
       │ 用户支付额外费用        │
       └─────────┬───────────────┘
                 ▼
            ┌─────────┐
            │ 待评价  │ status=7
            │   (7)   │
            └────┬────┘
                 │ 用户评价
                 ▼
            ┌─────────┐
            │ 已评价  │ status=8
            │   (8)   │
            └─────────┘

  任何阶段(行程开始前)都可以走取消流程:
  
  ┌─────────┐
  │ 已取消  │ status=6
  │   (6)   │
  └─────────┘

# 取消流程

订单在 行程开始前 可以取消,取消规则:

条件 扣费比例
未派车(status ≤ 4) 0%(全额退款)
距发车 ≥ 48小时 10%
24小时 ≤ 距发车 < 48小时 20%
12小时 ≤ 距发车 < 24小时 30%
4小时 ≤ 距发车 < 12小时 60%
距发车 < 4小时 100%
行程开始后 不允许取消
接口 说明
POST /api/charter/partner_refund_info 查询当前可退款金额
POST /api/charter/partner_cancel_order 取消订单

建议在用户操作取消前,先调用 partner_refund_info 接口展示退款信息让用户确认。

# 发票流程(可选)

订单完成后,用户可以申请开具发票。

接口 说明
POST /api/charter/partner_apply_charter_invoice 申请开票
POST /api/charter/partner_get_charter_invoice_list 发票列表
POST /api/charter/partner_invoice_detail 发票详情
POST /api/charter/partner_send_email 发送发票邮件

发票申请条件:

  1. 订单已完成(含所有费用结算)
  2. 订单未开过票
  3. 一次申请可合并多个订单

发票状态:

  • 0 待开票
  • 1 开票中
  • 2 开票失败
  • 3 已开票(可下载 PDF)

# 状态查询建议

由于订单状态会在嘟嘟巴士侧变更(派车、行程完成、额外费用上报等),建议合作方采取以下方式获取最新状态:

  1. 关键节点同步:用户进入订单详情页时调用订单详情接口获取最新状态
  2. 列表轮询:在订单列表页可定期调用订单列表接口刷新

# 完整时序图

合作方App   合作方后端    嘟嘟巴士API    嘟嘟车队
   │            │              │              │
   │ 选择行程   │              │              │
   ├───────────►│              │              │
   │            │  询价         │              │
   │            ├─────────────►│              │
   │            │  车型+价格    │              │
   │            │◄─────────────┤              │
   │ 展示车型   │              │              │
   │◄───────────┤              │              │
   │ 选车下单   │              │              │
   ├───────────►│              │              │
   │            │  创建订单     │              │
   │            ├─────────────►│              │
   │            │  order_num    │              │
   │            │◄─────────────┤              │
   │ 唤起支付   │              │              │
   │◄───────────┤              │              │
   │ 支付成功   │              │              │
   ├───────────►│              │              │
   │            │ 支付回调      │              │
   │            ├─────────────►│              │
   │            │              │  分派订单     │
   │            │              ├─────────────►│
   │            │              │  派车信息     │
   │            │              │◄─────────────┤
   │ 查看详情   │              │              │
   ├───────────►│              │              │
   │            │ 查询详情      │              │
   │            ├─────────────►│              │
   │            │ 司机/车辆     │              │
   │            │◄─────────────┤              │
   │            │              │  行程结束     │
   │            │              │◄─────────────┤
   │            │              │ 上报额外费用  │
   │            │              │◄─────────────┤
   │ 支付额外费 │              │              │
   ├───────────►│              │              │
   │            │ 额外费支付回调│              │
   │            ├─────────────►│              │
   │ 用户评价   │              │              │
   ├───────────►│              │              │
   │            │ 提交评价      │              │
   │            ├─────────────►│              │
   │            │              │              │

# 常见问题

Q: 用户支付完成后多久可以派车? A: 通常 5-15 分钟内派车,复杂订单可能需要更长时间。建议引导用户耐心等待,或在订单详情页查看派车进度。

Q: 如何获取司机和车辆信息? A: 调用订单详情接口,订单状态变为 5(待完成)后,返回的 driver_listvehicle_list 字段中会包含司机和车辆信息。

Q: 额外费用是否一定会产生? A: 不一定。绝大多数订单不会产生额外费用。仅在特殊情况下(如客户要求等待、改变行程、跨日住宿等)才会产生。