Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
 public function getSiteMessage($starttime, $endtime)
 {
     global $ali_user;
     $currentpage = 1;
     //当前页码 默认为一
     $aliorder_obj = new AliOderMessageModel();
     //message数据库处理类
     $roundtimes = 1;
     $pageindex = 1;
     while ($roundtimes++ <= 50) {
         //一次最多抓50次
         echo "\ncurrent page number : {$pageindex}\n";
         $data = array('access_token' => $this->access_token, 'currentPage' => $pageindex, 'pageSize' => ALI_PAGESIZE, 'startTime' => $starttime, 'endTime' => $endtime);
         $url = "{$this->server}/{$this->rootpath}/{$this->protocol}/{$this->version}/{$this->ns}/api.queryMessageList/{$this->appKey}";
         $result = $this->Curl($url, $data);
         $List = json_decode($result, true);
         if ($List === FALSE) {
             //返回数据个格式错误 则跳出重来 <防止网络故障>
             writeLog(ALI_LOGPATH, '返回数据格式错误 --- ' . $result . "\n" . var_export($data, TRUE));
             continue;
         }
         if (isset($List['error_code'])) {
             //返回报错信息
             writeLog(ALI_LOGPATH, '返回数据格式错误 --- ' . $result . "\n" . var_export($data, TRUE));
             continue;
         }
         // print_r($List); exit;
         $msg_list = $List['msgList'];
         if (empty($msg_list)) {
             //抓取的消息为空 则说明该时间段的数据已经抓取完成了 则跳出
             break;
         }
         foreach ($msg_list as $msgval) {
             $data = array();
             $data['message_id'] = $msgval['id'];
             $exists = $aliorder_obj->checkIfExistsBySiteMsgId($data['message_id']);
             if ($exists) {
                 // 改消息已经抓取过了 <防止重复抓取>
                 echo "message has exists! --- ID : {$data['message_id']}\n";
                 continue;
             }
             $data['relationId'] = $msgval['relationId'];
             // 关系id
             $data['senderid'] = $msgval['senderLoginId'];
             // 发送人登陆id
             //                 echo "sender => ", $data['senderid'],"\n";
             if ($this->isWorker($data['senderid'])) {
                 $data['role'] = 0;
                 //0表示工作人员回复的
             } else {
                 $data['role'] = 1;
                 //1表示客户回复的
             }
             //                 print_r($data);continue;
             $data['sendername'] = $msgval['senderName'];
             // 发送人名称
             $data['receiverid'] = $msgval['receiverLoginId'];
             // 接收人登陆id
             $data['receivername'] = $msgval['receiverName'];
             // 接收名称
             $data['productUrl'] = $msgval['productUrl'];
             // 产品url
             $data['productName'] = $msgval['productName'];
             // 产品名称
             $data['productId'] = $msgval['productId'];
             // 产品id
             $data['typeId'] = $msgval['typeId'];
             // 类型id
             $data['addtime'] = time();
             // 抓单时间
             $data['orderUrl'] = trim($msgval['orderUrl']);
             // 订单url
             $data['orderId'] = trim($msgval['orderId']);
             // 订单id
             $data['gmtCreate'] = $msgval['gmtCreate'];
             // message产生时间
             $data['createtimestamp'] = aliTranslateTime($msgval['gmtCreate']);
             //转换时间戳
             $data['content'] = $msgval['content'];
             // 消息内容
             $data['isRead'] = $msgval['isRead'];
             // 是否已读取
             $data['haveFile'] = $msgval['haveFile'];
             // 是否有附件
             $data['fileUrl'] = $msgval['fileUrl'];
             // 附件地址
             if ($data['role'] == 1) {
                 //客户留言则分配文件夹 工作人员回复不分配文件夹
                 $data['fieldid'] = $this->getFiledId($data['senderid'], $data['receiverid']);
                 //获得分类id信息
             } else {
                 $data['fieldid'] = 0;
             }
             //                 echo $data['fieldid'],"\n\n";continue;
             if (!empty($data['orderId']) && !empty($data['orderUrl'])) {
                 //该留言与订单绑定
                 $orderDetail = $this->fetchOrderdetail($data['orderId']);
                 //                 print_r($orderDetail);exit;
                 if (isset($orderDetail['frozenStatus']) && $orderDetail['frozenStatus'] == 'IN_FROZEN') {
                     //冻结中订单
                     $data['orderstatus'] = strtoupper($orderDetail['frozenStatus']);
                 } elseif (isset($orderDetail['issueStatus']) && $orderDetail['issueStatus'] == 'IN_ISSUE') {
                     $data['orderstatus'] = strtoupper($orderDetail['issueStatus']);
                 } elseif (isset($orderDetail['orderStatus'])) {
                     $data['orderstatus'] = strtoupper($orderDetail['orderStatus']);
                 } else {
                     $data['orderstatus'] = '';
                 }
             }
             $insert_result = $aliorder_obj->insertNewSiteMsgRecords($data);
             // 存入数据库
             if ($insert_result == FALSE) {
                 // 插入失败 写日志
                 writeLog(ALI_LOGPATH, AliOderMessageModel::$errMsg);
                 continue;
             } else {
                 echo 'add success !  ', $data['message_id'], "\n";
             }
         }
         $pageindex++;
         //$roundtimes++;
     }
     unset($List);
     return TRUE;
 }