/** * TransOpenApiAct::act_batchOrderFeeTracknumQuery() * 批量订单固定运输方式运费计算及跟踪号申请接口 * @param array $orders 订单信息 * @return array; */ public function act_batchOrderFeeTracknumQuery() { $trackNumArr = C('TRACK_NUMBER_CARRIER'); $orderMax = C('ORDER_SHIPFEE_TRACKNUM_MAX'); $resMore = 1; $orders = array(); $res = array(); $orders = isset($_POST['orders']) ? $_POST['orders'] : $orders; $orders = json_decode($orders, true); if (!is_array($orders)) { self::$errCode = 10000; self::$errMsg = '订单信息参数格式有误!'; return false; } if (empty($orders)) { self::$errCode = 10001; self::$errMsg = '订单信息内容有误!'; return false; } if (count($orders) > $orderMax) { self::$errCode = 10002; self::$errMsg = "一次批处理订单数据不能呢个超过 {$orderMax}单,请返回修改下!"; return false; } //循环获取最优运费及跟踪号 foreach ($orders as $key => $v) { $channelId = 0; $carrierId = 0; $country = ""; $shipFee = array(); $trackNums = array(); $shipFee = self::act_batchFixCarrierQuery($v['carrierId'], rawurldecode($v['country']), $v['weight'], $v['postCode'], $v['transitId'], $resMore); if (empty($shipFee)) { continue; } $carrierId = $shipFee['carrierId']; $channelId = $v['channelId']; $country = $shipFee['country']; //如果运输方式是瑞士小包挂号 if ($carrierId == 88 && $country == "Switzerland") { $country = "Switzerland"; } else { $country = ""; } $trackNums = TransOpenApiModel::assignTrackNumbers($carrierId, $key, $country, $channelId); if (empty($trackNums)) { $trackNums = array("trackNumber" => ""); } $res[$key] = array("shipFee" => $shipFee, "trackNums" => $trackNums); //增加接口调用日志 $logFile = WEB_PATH . "log/batchShipFeeTrackNum/" . date('Y') . "/" . date('m') . "/" . date('Y-m-d') . ".log"; $log = date('Y-m-d H:i:s') . "==={$key}==={$v['carrierId']}==={$v['country']}==={$v['weight']}==={$v['postCode']}==={$v['transitId']}==={$resMore}===" . json_encode($res[$key]) . "\n"; if (function_exists('write_a_file')) { @write_a_file($logFile, $log); } } return $res; }