|
|
@@ -61,44 +61,49 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
*/
|
|
|
public function formatOrderData($order, $orderType, $shop, $params)
|
|
|
{
|
|
|
- //用车时间 -- 用车时间(unix时间戳:秒)。 取值范围:(当前时间+10分钟)<=用车时间<=(当前时间+5天)
|
|
|
- $orderTime = strtotime($params['pickupTime']);
|
|
|
- if($orderTime < (time()+600) ) {
|
|
|
- $orderTime = time() + 600;
|
|
|
+ // 下单时必须优先使用估价时透传的时间,避免货拉拉核价失败。
|
|
|
+ $orderTime = $params['order_time'] ?? null;
|
|
|
+ if (empty($orderTime)) {
|
|
|
+ $orderTime = strtotime($params['pickupTime']);
|
|
|
+ if($orderTime < (time()+600) ) {
|
|
|
+ $orderTime = time() + 600;
|
|
|
+ }
|
|
|
}
|
|
|
$cityId = $params['city_id'];
|
|
|
+ // 下单时必须优先使用估价时透传的地址
|
|
|
+ $addrInfo = $params['addr_info'] ?? [
|
|
|
+ [
|
|
|
+ 'name' => $shop['merchantName'], //地址名称
|
|
|
+ 'addr' => $shop['fullAddress'],
|
|
|
+ 'lat_lon' => ['lat' => (float)$shop['lat'], 'lon' => (float)$shop['long']],
|
|
|
+ 'city_id' => $cityId,
|
|
|
+ 'city_name' => $shop['city'],
|
|
|
+ 'district_name' => $shop['dist'],
|
|
|
+ 'house_number' => $shop['floor'],
|
|
|
+ 'contacts_name' => $shop['mobile'],
|
|
|
+ 'contacts_phone_no' => $shop['mobile'],
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name' => empty($order['showAddress']) ? $order['customName'] : $order['showAddress'],
|
|
|
+ 'addr' => $order['fullAddress'],
|
|
|
+ 'lat_lon' => ['lat' => (float)$order['lat'], 'lon' => (float)$order['long']],
|
|
|
+ 'city_id' => $cityId,
|
|
|
+ 'city_name' => $order['city'],
|
|
|
+ 'district_name' => $order['dist'],
|
|
|
+ 'house_number' => $order['floor'],
|
|
|
+ 'contacts_name' => $order['customName'],
|
|
|
+ 'contacts_phone_no' => Functions::getMobile($order),
|
|
|
+ ]
|
|
|
+ ];
|
|
|
|
|
|
$apiData = [
|
|
|
'city_id' => $cityId,
|
|
|
'city_info_revision' => $params['city_info_revision'],
|
|
|
'order_vehicle_id' => $params['order_vehicle_id'],
|
|
|
- 'addr_info' => [
|
|
|
- [
|
|
|
- 'name' => $shop['merchantName'], //地址名称
|
|
|
- 'addr' => $shop['fullAddress'],
|
|
|
- 'lat_lon' => ['lat' => (float)$shop['lat'], 'lon' => (float)$shop['long']],
|
|
|
- 'city_id' => $cityId,
|
|
|
- 'city_name' => $shop['city'],
|
|
|
- 'district_name' => $shop['dist'],
|
|
|
- 'house_number' => $shop['floor'],
|
|
|
- 'contacts_name' => $shop['mobile'],
|
|
|
- 'contacts_phone_no' => $shop['mobile'],
|
|
|
- ],
|
|
|
- [
|
|
|
- 'name' => empty($order['showAddress']) ? $order['customName'] : $order['showAddress'],
|
|
|
- 'addr' => $order['fullAddress'],
|
|
|
- 'lat_lon' => ['lat' => (float)$order['lat'], 'lon' => (float)$order['long']],
|
|
|
- 'city_id' => $cityId,
|
|
|
- 'city_name' => $order['city'],
|
|
|
- 'district_name' => $order['dist'],
|
|
|
- 'house_number' => $order['floor'],
|
|
|
- 'contacts_name' => $order['customName'],
|
|
|
- 'contacts_phone_no' => Functions::getMobile($order),
|
|
|
- ]
|
|
|
- ],
|
|
|
- 'vehicle_std' => $params['vehicle_std'],
|
|
|
+ 'addr_info' => $addrInfo,
|
|
|
+ 'vehicle_std' => $params['vehicle_std'] ?? [],
|
|
|
'spec_req' => $params['spec_req'],
|
|
|
- 'order_time' => $orderTime,
|
|
|
+ 'order_time' => (int)$orderTime,
|
|
|
'contact_name' => $shop['merchantName'],
|
|
|
'contact_phone_no' => $shop['mobile'],
|
|
|
'out_user_id' => $params['mainId'], //下单人在服务商平台侧的唯一ID,如果没有,可以传0
|
|
|
@@ -109,12 +114,21 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
'price_calculate_id' => $params['price_calculate_id'], //计价id,从计价接口返回中取值
|
|
|
'price_item_encryption' => $params['price_item_encryption'], //估价返回的费用项,从计价接口返回中取值
|
|
|
'vehicle_attr' => $params['vehicle_attr'], //大小车属性,从计价接口返回中取值
|
|
|
- 'commodity_info' => $params['commodity_info'] //商品信息(直接透传u-price-multiCalculate返回的commodity_item字段)
|
|
|
+ 'commodity_info' => $params['commodity_info'], //商品信息(直接透传u-price-multiCalculate返回的commodity_item字段)
|
|
|
+ 'invoice_type' => $params['invoice_type']
|
|
|
];
|
|
|
+ if (isset($params['coupon_id'])) {
|
|
|
+ $apiData['coupon_id'] = $params['coupon_id'];
|
|
|
+ }
|
|
|
|
|
|
// 添加订单消息回调地址
|
|
|
$apiData['notify_url'] = $this->notifyUrl;
|
|
|
|
|
|
+ // 跑腿车型,传这个值会出现"核价失败",所以要去除
|
|
|
+ if ($params['type'] == '跑腿') {
|
|
|
+ unset($apiData['spec_req']);
|
|
|
+ }
|
|
|
+
|
|
|
return $apiData;
|
|
|
}
|
|
|
|
|
|
@@ -153,24 +167,24 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
$apiData = [
|
|
|
'city_id' => (int)($order['city_id'] ?? 0),
|
|
|
'city_info_revision' => (int)($order['city_info_revision'] ?? 0),
|
|
|
- 'order_vehicle_id' => (int)($order['order_vehicle_id'] ?? 0),
|
|
|
+ 'order_vehicle_id' => (int)$order['order_vehicle_id'],
|
|
|
'addr_info' => $addrInfo,
|
|
|
'contact_name' => $order['contact_name'] ?? '',
|
|
|
'contact_phone_no' => $order['contact_phone_no'] ?? '',
|
|
|
- 'total_price_fen' => (int)($order['total_price_fen'] ?? 0),
|
|
|
- 'pay_type' => (int)($order['pay_type'] ?? 0),
|
|
|
+ 'total_price_fen' => (int)$order['total_price_fen'],
|
|
|
+ 'pay_type' => $order['pay_type'],
|
|
|
'price_calculate_id' => $order['price_calculate_id'] ?? '',
|
|
|
'price_item_encryption' => $order['price_item_encryption'] ?? '',
|
|
|
'vehicle_attr' => (int)($order['vehicle_attr'] ?? 0),
|
|
|
- 'order_time' => (int)($order['order_time'] ?? time()),
|
|
|
+ 'order_time' => (int)$order['order_time'],
|
|
|
];
|
|
|
|
|
|
// 可选参数
|
|
|
if (!empty($order['vehicle_std'])) {
|
|
|
$apiData['vehicle_std'] = is_array($order['vehicle_std']) ? $order['vehicle_std'] : [$order['vehicle_std']];
|
|
|
}
|
|
|
- if (!empty($order['spec_req'])) {
|
|
|
- $apiData['spec_req'] = is_array($order['spec_req']) ? $order['spec_req'] : [$order['spec_req']];
|
|
|
+ if (!empty($order['spec_req']) && is_array($order['spec_req'])) {
|
|
|
+ $apiData['spec_req'] = array_map('intval', $order['spec_req']);
|
|
|
}
|
|
|
if (!empty($order['remark'])) {
|
|
|
$apiData['remark'] = $order['remark'];
|
|
|
@@ -185,7 +199,7 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
$apiData['notify_url'] = $order['notify_url'];
|
|
|
}
|
|
|
if (isset($order['coupon_id'])) {
|
|
|
- $apiData['coupon_id'] = $order['coupon_id'];
|
|
|
+ $apiData['coupon_id'] = intval($order['coupon_id']);
|
|
|
}
|
|
|
if (isset($order['invoice_type'])) {
|
|
|
$apiData['invoice_type'] = (int)$order['invoice_type'];
|
|
|
@@ -388,7 +402,7 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
);
|
|
|
|
|
|
// 使用车型ID作为请求的唯一标识
|
|
|
- $vehicleId = (int)($vehicle['order_vehicle_id'] ?? 0);
|
|
|
+ $vehicleId = $vehicle['order_vehicle_id'];
|
|
|
$requests["huolala_vehicle_{$vehicleId}"] = [
|
|
|
'url' => $this->baseUrl,
|
|
|
'data' => $payload,
|
|
|
@@ -495,4 +509,4 @@ class HuolalaAdapter extends Huolala implements Adapter
|
|
|
'data' => null,
|
|
|
];
|
|
|
}
|
|
|
-}
|
|
|
+}
|