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
}
错误码说明
| 错误码 | 说明 |
|---|---|
| 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 | 否 | 支付通知转发地址 |
| DEBUG | 否 | 调试模式,设为 true 显示详细日志 |
| ENABLE_TEST_PAGES | 否 | 启用测试页面 UI |
附录
订单状态说明
| 状态值 | 说明 |
|---|---|
| 0 | 待支付 |
| 1 | 派单中 |
| 2 | 已派单(等待司机) |
| 3 | 司机已到达 |
| 4 | 行程中 |
| 5 | 已完成 |
| 6 | 已取消 |
预订类型说明
| 类型值 | 说明 |
|---|---|
| 1 | 实时叫车 |
| 2 | 预约叫车 |
常用地区 ID
| 地区 | ID |
|---|---|
| 香港 | 279 |
| 中国大陆 | 1 |
更新日志
- v1.0.0 - 初始版本,支持完整的打车 API 功能