public function view_fetchAliOrderDetailByOrderId() { $orderid = isset($_GET['orid']) ? trim($_GET['orid']) : FALSE; $account = isset($_GET['account']) ? trim($_GET['account']) : FALSE; $receiverid = $account; if (empty($receiverid)) { $returndata['errCode'] = 3; $returndata['errMsg'] = '缺少卖家账号!'; echo json_encode($returndata); exit; } if (empty($orderid)) { //订单号不存在 $returndata['errCode'] = 3; $returndata['errMsg'] = '缺少订单号!'; echo json_encode($returndata); exit; } $tokenfilepath = WEB_PATH . "lib/ali_keys/config_{$receiverid}.php"; if (!file_exists($tokenfilepath)) { $returndata['errCode'] = 2; $returndata['errMsg'] = '没找到messsage信息!'; echo json_encode($returndata); exit; } include_once '' . $tokenfilepath; include_once WEB_PATH . 'lib/AliMessage.class.php'; $ali_obj = new AliMessage(); $ali_obj->setConfig($appKey, $appSecret, $refresh_token); $ali_obj->doInit(); //$orderid = '60637623549259'; $detail = $ali_obj->fetchOrderdetail($orderid); if ($detail == FALSE) { //获取消息失败 $returndata['errCode'] = 4; $returndata['errMsg'] = '获取订单详情失败!'; echo json_encode($returndata); exit; } //print_r($detail);exit; $alimsg_obj = new AliOderMessageModel(); $time = $detail['gmtCreate']; $year = substr($time, 0, 4); //年 $month = substr($time, 4, 2); //月 $day = substr($time, 6, 2); //日 $time = $month . '/' . $day . '/' . $year; $timeend = $month . '/' . (intval($day) + 1) . '/' . $year; $skustr = ''; foreach ($detail['childOrderList'] as $sku) { $skucode = substr($sku['skuCode'], 0, strlen($sku['skuCode']) - 1); $tmpstr = $skucode; $hstr = strrchr($tmpstr, '*'); //处理组合料号 $tmpstr = $hstr === FALSE ? $tmpstr : ltrim($hstr, '*'); $spu = explode('_', $tmpstr); $spu = $spu[0]; $attr = json_decode($sku[productAttributes], TRUE); $skuimgurl = getSkuImg($spu, $tmpstr, 'G'); $attrinfo = json_decode($sku['productAttributes'], TRUE); $attrstr = array(); if (isset($sku['productAttributes']) && !empty($attrinfo['sku'])) { foreach ($attrinfo['sku'] as $attrval) { $attrstr[] = $attrval['pName'] . ':' . $attrval['pValue']; } } $attrstr = implode('<br>', $attrstr); $skustr .= <<<EOF \t\t\t\t<tr> \t\t\t\t\t\t<td> \t\t\t\t\t\t\t<img src="{$skuimgurl}" width="50" height="50"> \t\t\t\t\t\t</td> \t\t\t\t\t\t<td align="left"> \t\t\t\t\t\t<a href="http://www.aliexpress.com/item/something/{$sku['productId']}.html" target="_blank">{$sku['productName']}</a> \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t {$attrstr} \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t {$skucode} \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t {$sku['productCount']} \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t {$sku[productPrice][currency][symbol]}{$sku[productPrice][amount]} \t\t\t\t\t\t</td> \t\t\t\t\t</tr> EOF; } $skulist = <<<EOF \t\t\t\t\t<tr class="title"> \t\t\t\t\t\t<td> \t\t\t\t\t\t\t图片 \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t\t标题 \t\t\t\t\t\t</td> \t\t\t\t\t\t<td style="width:60px;"> \t\t\t\t\t\t\t属性 \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t\tSKU \t\t\t\t\t\t</td> \t\t\t\t\t\t<td style="width:60px;"> \t\t\t\t\t\t\t数量 \t\t\t\t\t\t</td> \t\t\t\t\t\t<td> \t\t\t\t\t\t\t单价 \t\t\t\t\t\t</td> \t\t\t\t\t</tr> {$skustr} EOF; //计算倒计时 $timeStr = ''; if ($detail['orderStatus'] == 'RISK_CONTROL') { //计算风控倒计时 $paytimestamp = aliTranslateTime($detail['gmtPaySuccess']); //付款时间戳 $riskendtime = $paytimestamp + 86400; $timeStr = date('m/d/Y H:i:s', $riskendtime); //风控结束时间字符串表示 $timeStr = $riskendtime; } elseif ($detail['logisticsStatus'] == 'SELLER_SEND_GOODS' && $detail['orderStatus'] != 'FINISH') { $sendTimeStamp = aliTranslateTime($detail['logisticInfoList'][0]['gmtSend']); //发货时间戳 $days = $alimsg_obj->culculateCountdown($receiverid, $detail['logisticInfoList'][0]['logisticsTypeCode'], $detail['receiptAddress']['country']); if ($days === FALSE) { $timeStr = AliOderMessageModel::$errMsg; } else { $endtime = $sendTimeStamp + $days * 86400; $timeStr = $endtime; } } //物流信息 $shipstr = ''; if (isset($detail['logisticInfoList'][0])) { $shipstr .= '运输方式:' . $detail['logisticInfoList'][0]['logisticsTypeCode'] . '<br>'; $carrier = $detail['logisticInfoList'][0]['logisticsTypeCode']; $tracksn = $detail['logisticInfoList'][0]['logisticsNo']; $trackstr = <<<EOF <a href="javascript:queryExpressInfo('aliexpress', '{$carrier}', '{$tracksn}', 'zh')">{$tracksn}</a> EOF; $shipstr .= '跟踪号:' . $trackstr . '<br>'; } $returndata['errCode'] = 5; $returndata['errMsg'] = '成功!'; $returndata['data'] = array('buyer' => $detail['buyerInfo']['firstName'] . $detail['buyerInfo']['lastName'], 'seller' => $detail['sellerOperatorLoginId'], 'orderId' => $orderid, 'createtime' => formateAliTime($detail['gmtCreate']), 'paytime' => !empty($detail['gmtPaySuccess']) ? formateAliTime($detail['gmtPaySuccess']) : '未付款', 'initOderAmount' => $detail['initOderAmount']['currency']['symbol'] . $detail['initOderAmount']['amount'], 'OderAmount' => $detail['orderAmount']['currency']['symbol'] . $detail['orderAmount']['amount'], 'paytype' => '-----', 'fundStatus' => $this->status2str($detail['fundStatus']), 'loanStatus' => $this->status2str($detail['loanStatus']), 'issueStatus' => $this->status2str($detail['issueStatus']), 'issuscolor' => $detail['issueStatus'] == 'NO_ISSUE' ? 'green' : 'red', 'orderstatus' => $this->status2str($detail['orderStatus']), 'logisticsStatus' => $this->status2str($detail['logisticsStatus']), 'logisticsMoney' => $detail['logisticsAmount']['amount'], 'mobileNo' => $detail['receiptAddress']['mobileNo'], 'phoneNumber' => $detail['receiptAddress']['phoneArea'] . '-' . $detail['receiptAddress']['phoneNumber'], 'address' => $detail['receiptAddress']['detailAddress'] . ' ' . $detail['receiptAddress']['city'] . ' ' . $detail['receiptAddress']['province'] . ' ' . $detail['receiptAddress']['country'], 'skulist' => $skulist, 'refund' => isset($detail['refundInfo']) ? '退款状态' . $detail['refundInfo']['refundStatus'] . '<br>' . '退款类型' . $detail['refundInfo']['refundType'] : '', 'logisticInfo' => $shipstr, 'buyerSignerFullname' => isset($detail['buyerSignerFullname']) ? $detail['buyerSignerFullname'] : '', 'zip' => isset($detail['receiptAddress']['zip']) ? $detail['receiptAddress']['zip'] : '', 'email' => isset($detail['buyerInfo']['email']) ? $detail['buyerInfo']['email'] : '', 'timestr' => $timeStr, 'commission' => '$' . round($detail['orderAmount']['amount'] * 0.05, 2), 'profit' => '$' . round($detail['orderAmount']['amount'] * 0.95, 2)); if (isset($detail['logisticInfoList'][0]['gmtSend'])) { $timeinfo = extractAliTimeInfo($detail['logisticInfoList'][0]['gmtSend']); $returndata['data']['shippedtime'] = $timeinfo['year'] . '-' . $timeinfo['month'] . '-' . $timeinfo['day'] . ' ' . $timeinfo['hour'] . ':' . $timeinfo['minit'] . ':' . $timeinfo['second']; } else { $returndata['data']['shippedtime'] = ''; } $accountname = aliAccountf2Name($detail['sellerOperatorLoginId']); if ($accountname == FALSE) { //没找到对应关系 $accountname == ''; } $accountname = aliAccountf2Name($account); if ($accountname == FALSE) { //没找到对应关系 $accountname == ''; } $result_sys = getOpenSysApi('aliExpressOrderInfo', array('type' => 'orderinfo', 'recordnumber' => $orderid, 'selleraccount' => $accountname)); if (!empty($result_sys['data'])) { $returndata['data']['systemnum'] = $result_sys['data'][0]['ebay_id']; //系统编号 $returndata['data']['syscarrer'] = $result_sys['data'][0]['ebay_carrier']; //运输方式 $returndata['data']['systracknumber'] = $result_sys['data'][0]['ebay_tracknumber']; //跟踪号 // $returndata['data']['shippedtime'] = empty($result_sys['data'][0]['ShippedTime']) ? '' : date('Y-m-d H:i:s', $result_sys['data'][0]['ShippedTime']); //发货时间 $returndata['data']['status'] = $result_sys['data'][0]['catename']; //发货状态 $returndata['data']['ebay_note'] = $result_sys['data'][0]['note']; //订单留言 } else { $returndata['data']['systemnum'] = ''; //系统编号 $returndata['data']['syscarrer'] = ''; //运输方式 $returndata['data']['systracknumber'] = ''; //跟踪号 // $returndata['data']['shippedtime'] = ''; //发货时间 $returndata['data']['status'] = ''; //发货状态 $returndata['data']['ebay_note'] = ''; } // print_r($returndata);exit; echo json_encode($returndata); }
function aliTranslateTime($timeStr) { $timinfo = extractAliTimeInfo($timeStr); if ($timinfo['timezone'] == -7) { //丹佛时间 date_default_timezone_set('America/Denver'); } elseif ($timinfo['timezone'] == -8) { //洛杉矶时间 date_default_timezone_set('America/Los_Angeles'); } else { //默认洛杉矶时间处理 date_default_timezone_set('America/Los_Angeles'); } $timestamp = strtotime("{$timinfo['year']}-{$timinfo['month']}-{$timinfo['day']} {$timinfo['hour']}:{$timinfo['minit']}:{$timinfo['second']}"); date_default_timezone_set('Asia/Shanghai'); //处理完成 改回时区设置 return $timestamp; }