BBT打车 API 文档
简介
BBT打车API提供完整的打车服务接口,包括价格预估、订单管理、司机位置查询、司乘沟通等功能。
主要特点
- 简单认证:使用
X-API-KeyHeader 认证 - 统一接口:所有API采用统一的请求/响应格式
- 完整功能:覆盖从价格预估到订单完成的全流程
认证方式
API Key 认证
所有API请求需要在HTTP Header中携带 X-API-Key:
X-API-Key: your_api_key
请求格式
- 请求方法:POST
- Content-Type:application/json
- 字符编码:UTF-8
示例请求
curl -X POST \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{"bookingType": "1", "countryName": "香港", ...}' \
https://your-api-host/api/estimatePrice
注意:如果服务端未配置
MIDDLEWARE_API_KEY环境变量,则API Key认证将被跳过(适用于开发环境)。
响应格式
成功响应
{
"success": true,
"response": {
"code": 200,
"msg": "成功",
"data": { ... }
}
}
错误响应
{
"error": "错误描述",
"type": "ErrorType"
}
API 接口列表
一、商品类接口
1.1 价格预估 - estimatePrice
叫车预估费用,预估价格仅供参考,最终支付费用以实际产生费用为准。
请求路径:POST /api/estimatePrice
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| bookingType | String | 是 | 预订类型:"1"=实时叫车,"2"=预约叫车 |
| countryName | String | 是 | 国家/地区名称,如:"中国"、"香港" |
| countryId | String | 否 | 国家/地区ID,如:"279"(香港) |
| departAddress | Object | 是 | 出发地址信息 |
| arriveAddress | Object | 是 | 目的地址信息 |
| useTime | String | 否 | 预约用车时间,13位毫秒时间戳(预约叫车时必填) |
地址对象(departAddress/arriveAddress)结构:
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | String | 是 | 地址标题 |
| addressDetail | String | 否 | 地址详情 |
| cityName | String | 是 | 城市名称 |
| cityId | String | 否 | 城市ID |
| latitude | String | 是 | 纬度 |
| longitude | String | 是 | 经度 |
请求示例:
{
"bookingType": "1",
"countryName": "香港",
"countryId": "279",
"departAddress": {
"address": "香港-雅高工業大樓",
"addressDetail": "香港-雅高工業大樓",
"cityName": "香港",
"latitude": "22.313832",
"longitude": "114.196877",
"cityId": "279"
},
"arriveAddress": {
"address": "香港-天天洗衣",
"addressDetail": "香港-天天洗衣",
"cityName": "香港",
"latitude": "22.318384",
"longitude": "114.198753",
"cityId": "279"
}
}
响应示例:
{
"success": true,
"response": {
"code": 200,
"msg": "成功",
"data": {
"estimateId": "xxx",
"priceList": [
{
"priceMark": "646b4a1857a3a349a3636a81",
"carTypeName": "经济型",
"estimatePrice": "50.00",
"currency": "HKD"
}
]
}
}
}
二、订单类接口
2.1 创建订单 - createOrder
用户根据需要发起叫车请求。
请求路径:POST /api/createOrder
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| priceMarks | Array[String] | 是 | 价格标识数组,来自estimatePrice返回的priceMark |
| passengerName | String | 是 | 乘客姓名 |
| passengerPhone | String | 是 | 乘客电话 |
| passengerPhoneAreaCode | String | 否 | 乘客电话区号,如:"+86" |
| estimateId | String | 否 | 预估ID,来自estimatePrice返回 |
| userId | String | 否 | 用户ID |
| customOrderId | String | 否 | 自定义订单ID(用于对接方系统) |
| contactName | String | 否 | 联系人姓名 |
| contactPhone | String | 否 | 联系人电话 |
| contactPhoneAreaCode | String | 否 | 联系人电话区号 |
请求示例:
{
"priceMarks": ["646b4a1857a3a349a3636a81"],
"passengerName": "张三",
"passengerPhone": "13800138000",
"passengerPhoneAreaCode": "+86",
"contactName": "张三",
"contactPhone": "13800138000"
}
响应示例:
{
"success": true,
"response": {
"code": 200,
"msg": "成功",
"data": {
"orderId": 100000030
}
}
}
2.2 订单详情 - queryOrderDetail
查询订单详细信息。
请求路径:POST /api/queryOrderDetail
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
请求示例:
{
"orderId": 100000030
}
响应示例:
{
"success": true,
"response": {
"code": 200,
"msg": "成功",
"data": {
"orderId": 100000030,
"orderStatus": 1,
"passengerName": "张三",
"passengerPhone": "13800138000",
"departAddress": { ... },
"arriveAddress": { ... },
"driverInfo": { ... }
}
}
}
2.3 取消订单 - cancelOrder
取消订单。派单中可无偿取消,已派单可能收取取消费。
请求路径:POST /api/cancelOrder
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| force | Boolean | 否 | 是否强制取消,默认为true |
| customerOrderId | String | 否 | 自定义订单ID |
请求示例:
{
"orderId": 100000030,
"force": true
}
2.4 订单取消原因 - cancelReason
提交订单取消原因。
请求路径:POST /api/cancelReason
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| reason | String | 是 | 取消原因 |
请求示例:
{
"orderId": 100000030,
"reason": "不需要用车了"
}
三、司机类接口
3.1 司机实时位置 - queryDriverLocation
查询司机实时位置,适用于已派单和行进中状态定时查询。
请求路径:POST /api/queryDriverLocation
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
请求示例:
{
"orderId": 100000030
}
响应示例:
{
"success": true,
"response": {
"code": 200,
"msg": "成功",
"data": {
"latitude": "22.313832",
"longitude": "114.196877",
"heading": 90,
"speed": 30
}
}
}
3.2 司机评分 - orderScore
对司机服务进行评分,仅在订单结束后可进行评价。
请求路径:POST /api/orderScore
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| level | Float | 是 | 评分等级(1-5) |
| comment | String | 是 | 评价内容 |
请求示例:
{
"orderId": 100000030,
"level": 5,
"comment": "服务很好"
}
四、司乘沟通类接口
4.1 获取司乘沟通记录 - listMessages
获取订单的沟通消息记录。
请求路径:POST /api/listMessages
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| language | String | 是 | 语言代码,如:"zh"、"en" |
请求示例:
{
"orderId": 100000030,
"language": "zh"
}
4.2 发送消息 - postMessagest
发送消息给司机。
请求路径:POST /api/postMessagest
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| language | String | 是 | 语言代码 |
| text | String | 是 | 消息内容 |
| templateId | Integer | 否 | 消息模板ID |
请求示例:
{
"orderId": 100000030,
"language": "zh",
"text": "你好,请在大门口等我"
}
4.3 获取消息模板 - getTemplateChat
获取消息类型和模板列表。
请求路径:POST /api/getTemplateChat
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| language | String | 是 | 语言代码 |
| type | Integer | 否 | 模板类型 |
请求示例:
{
"orderId": 100000030,
"language": "zh"
}
五、投诉类接口
5.1 投诉原因 - reason
查询投诉原因列表,会根据指定订单的不同场景返回不同的投诉选项。
请求路径:POST /api/reason
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
请求示例:
{
"orderId": 100000030
}
5.2 乘客投诉 - complain
乘客发起投诉,一个订单只能投诉一次,不可重复投诉。
请求路径:POST /api/complain
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Integer | 是 | 订单ID |
| type | Integer | 是 | 投诉类型(从reason接口获取) |
| mobileAreaCode | String | 是 | 手机区号,如:"+86" |
| mobile | String | 是 | 手机号码 |
| content | String | 否 | 投诉内容详情 |
请求示例:
{
"orderId": 100000030,
"type": 1,
"mobileAreaCode": "+86",
"mobile": "13800138000",
"content": "司机态度不好"
}
六、Webhook 回调
6.1 支付通知回调 - paymentNotify
接收支付完成通知的Webhook端点。当订单支付状态发生变化时,系统会主动调用此接口。
请求路径:POST /api/webhook/paymentNotify
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sign | String | 是 | 请求签名 |
| reqSid | String | 是 | 请求会话ID |
| reqFrom | String | 是 | 请求来源 |
| channelKey | String | 是 | 渠道Key |
| orderId | Integer | 是 | 订单ID |
处理流程:
- 验证请求有效性
- 验证channelKey匹配
- 如配置了
PAYMENT_NOTIFY_WEBHOOK_URL,将通知转发到该地址 - 返回处理结果
响应格式:
成功:
{
"code": 200,
"msg": "成功",
"data": null
}
验证失败:
{
"code": 600,
"msg": "验证失败",
"data": null
}
6.2 订单状态变更推送 - UpdateOrderStatus
当订单状态发生变化时,平台会向您配置的回调地址发送请求。推送仅包含状态信息,完整订单信息请通过「订单详情」接口查询;新建订单首次回调状态为派单中(dispatching)。中间件支持 GET、POST、PUT、DELETE 方法接收并转发。
请求路径:POST /api/callback/UpdateOrderStatus
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sign | String | 是 | 请求签名 |
| orderId | String | 是 | 订单ID |
| orderStatus | String | 是 | 回调状态,取值见下方「orderStatus 取值说明(附录B)」 |
| timestamp | Long | 是 | 时间戳 |
| channelKey | String | 否 | 部分渠道需要在回调时提供渠道 Key |
| event | String | 否 | 事件名称,见下方事件说明 |
| extend | Object | 否 | 扩展字段(部分渠道支持) |
| extend.userType | String | 否 | 用户类型 |
| extend.userAreaCode | String | 否 | 区号(如 +86) |
| extend.userPhone | String | 否 | 手机号 |
| extend.exChannelId | String | 否 | 外部渠道ID |
请求示例:
{
"sign": "test",
"orderId": "10000068",
"orderStatus": "dispatched",
"timestamp": "1000023586423",
"channelKey": "123456789",
"event": "booking.status.updated"
}
orderStatus 取值说明(附录B 状态定义)
回调中的 orderStatus 为字符串,可能取值如下(马上叫车状态):
| orderStatus | 说明 |
|---|---|
| inavlid | 无效订单(注:接口文档原文拼写为 inavlid) |
| dispatching | 派单中(新建订单首次回调状态) |
| dispatched | 司机已接单 |
| confirmed | 订单已确认(仅预约单,不会返回司机位置) |
| assign | 分配司机(仅预约单,不会返回司机位置) |
| driverStartService | 司机出发(部分运力支持) |
| driverArrived | 司机到达 |
| orderReassigned | 订单改派中 |
| inService | 行进中 |
| endService | 行程结束(部分运力支持) |
| completed | 已完成 |
| waitpay | 待支付 |
| payed | 已支付 |
| canceling | 取消中(部分运力支持) |
| canceled | 已取消 |
处理流程:
- 接收平台回调请求
- 若配置了
ORDER_STATUS_WEBHOOK_URL,则按相同 method 与 body 转发到该地址 - 返回处理结果
响应格式:
成功:
{
"code": 200,
"msg": "成功",
"data": null
}
事件说明(event):
| 事件 | 说明 |
|---|---|
| booking.status.updated | 订单状态更新 |
| booking.receipt.created | 金额已创建 |
| booking.vehicle.reassigned | 分配司机 |
| booking.chat.message.created | 聊天记录创建 |
| booking.status.complaintRefund | 客诉退款 |
| booking.status.changePrice | 改价 |
错误码说明
| 错误码 | 说明 |
|---|---|
| 200 | 成功 |
| 401 | 无效调用凭证(API Key错误或channelKey不匹配) |
| 402 | 参数不正确 |
| 500 | 系统内部错误 |
| 600 | 验证失败 |
环境配置
服务通过环境变量进行配置:
| 变量名 | 必填 | 说明 |
|---|---|---|
| CHANNEL_KEY | 是 | 渠道Key |
| CHANNEL_SECRET | 是 | 渠道Secret |
| BASE_URL | 否 | API服务地址,默认:http://fat-open-overseas.heycars.cn |
| MIDDLEWARE_API_KEY | 否 | API Key,设置后启用认证 |
| PAYMENT_NOTIFY_WEBHOOK_URL | 否 | 支付通知转发地址 |
| ORDER_STATUS_WEBHOOK_URL | 否 | 订单状态变更推送转发地址 |
| DEBUG | 否 | 调试模式,设为true显示详细日志 |
| ENABLE_TEST_PAGES | 否 | 启用测试页面UI |
附录
订单状态说明
| 状态值 | 说明 |
|---|---|
| 0 | 待支付 |
| 1 | 派单中 |
| 2 | 已派单(等待司机) |
| 3 | 司机已到达 |
| 4 | 行程中 |
| 5 | 已完成 |
| 6 | 已取消 |
预订类型说明
| 类型值 | 说明 |
|---|---|
| 1 | 实时叫车 |
| 2 | 预约叫车 |
常用地区ID
| 地区 | ID |
|---|---|
| 香港 | 279 |
| 中国大陆 | 1 |
更新日志
- v1.0.1 - 新增 6.2 订单状态变更推送(UpdateOrderStatus)Webhook 文档及 Postman 示例
- v1.0.0 - 初始版本,支持完整的打车API功能