在php项目中接入滴滴货运api,核心是通过开放平台的HTTP接口完成身份认证、签名生成、订单创建与调度查询。下面先了解基础接入方式,再给出可运行的代码示例。

一、接入前的准备工作
在编写代码前,需要到滴滴货运开放平台申请开发者资质,获取 app_key 与 app_secret。这两个参数用于接口签名,不可泄露。同时要在后台配置服务器出口IP白名单与回调地址。
1.1 主要接口能力
- 订单管理:创建货运订单、查询订单状态、取消订单
- 货车调度:根据起点终点获取可用运力、指定司机改派
- 回调通知:司机接单、到达、完结等事件推送到回调URL
二、php请求签名与调用逻辑
滴滴货运api要求每个请求都携带 timestamp、nonce 与 sign。签名一般是将业务参数与密钥按规则拼接后做md5。下面示例展示如何用php发起一个创建订单的请求。
2.1 签名函数与curl封装
<?php
// 配置项
$app_key = 'your_app_key';
$app_secret = 'your_app_secret';
$api_base = 'https://open.didiapi.com/freight';
// 生成签名
function make_sign($params, $secret) {
ksort($params);
$str = '';
foreach ($params as $k => $v) {
$str .= $k . '=' . $v . '&';
}
$str .= 'secret=' . $secret;
return md5($str);
}
// 发送post请求
function post_api($url, $body, $app_key, $app_secret) {
$params = [
'app_key' => $app_key,
'timestamp' => time(),
'nonce' => rand(100000, 999999)
];
$data = array_merge($params, $body);
$data['sign'] = make_sign($data, $app_secret);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
// 创建货运订单
$order_body = [
'start_addr' => '北京市朝阳区',
'end_addr' => '北京市海淀区',
'cargo_type' => '普通货物',
'weight' => 500
];
$resp = post_api($api_base . '/v1/order/create', $order_body, $app_key, $app_secret);
echo $resp;
?>
2.2 货车调度查询示例
下单后可通过调度接口获取附近车辆,下面代码演示查询可用运力。
<?php
$dispatch_body = [
'start_lng' => 116.48,
'start_lat' => 39.99,
'radius' => 3000
];
$resp = post_api($api_base . '/v1/dispatch/query', $dispatch_body, $app_key, $app_secret);
$list = json_decode($resp, true);
if ($list['code'] == 0) {
foreach ($list['data']['vehicles'] as $v) {
echo '车辆ID:' . $v['vehicle_id'] . ' 距离:' . $v['distance'] . '米' . PHP_EOL;
}
}
?>
三、订单状态管理与回调
滴滴货运会通过回调URL通知订单状态变化。php后端需要提供一个公开接口接收 POST 数据,并校验签名后更新本地数据库。
| 事件类型 | 说明 |
|---|---|
| order_accepted | 司机接单 |
| driver_arrived | 司机到达装货点 |
| order_finished | 订单完结 |
四、常见注意事项
- 所有时间字段使用秒级时间戳,时区统一为东八区
- 签名拼接时参数值为空也要参与排序,避免服务端校验失败
- 回调接口必须快速返回成功响应,复杂逻辑放入队列异步处理
接入货车调度与订单管理时,建议先在沙箱环境用测试账号跑通全流程,再切换到生产环境。
通过上述php代码与说明,你可以完成滴滴货运api的基础接入,实现货运订单创建与运力调度。后续可按业务需要扩展改派、费用对账等功能。