Beispiel #1
0
    public function aplyUSPSLabel($data, $typeInfo)
    {
        $recipients = isset($data['recipients']) ? $this->strreplace($data['recipients']) : '';
        //收货人
        $re_phone = isset($data['re_phone']) ? $this->strreplace($data['re_phone']) : '';
        //收货人电话
        $re_address1 = isset($data['re_address1']) ? $this->strreplace($data['re_address1']) : '';
        //收件人地址1
        $re_address2 = isset($data['re_address2']) ? $this->strreplace($data['re_address2']) : '';
        //收件人地址2
        $re_city = isset($data['re_city']) ? $this->strreplace($data['re_city']) : '';
        //收件人城市
        $re_state_code = isset($data['re_state_code']) ? $data['re_state_code'] : '';
        //收件人所在州简码
        $re_post_code = isset($data['re_post_code']) ? $data['re_post_code'] : '';
        //收件人邮编
        $weight = isset($data['weight']) ? $data['weight'] : '';
        //重量 KG
        $weight_oz = ceil($this->kg2ounce($weight));
        //kg转盎司
        if (strpos($re_post_code, "-") === false) {
        } else {
            $postcode_arr = explode("-", $re_post_code);
            $re_post_code = $postcode_arr[0];
        }
        //其他信息
        $orderId = isset($data['orderId']) ? $data['orderId'] : '';
        //订单号
        $sku_position = isset($data['sku_position']) ? $data['sku_position'] : '';
        //位置
        $show_detail = isset($data['show_detail']) ? $data['show_detail'] : '';
        //详细
        $requestId = $this->requestId;
        $passPhrase = $this->passPhrase;
        $accoutId = $this->accoutId;
        $mailClass = $typeInfo['mailClass'];
        //运输类型
        $packageType = $typeInfo['packageType'];
        //包裹类型
        $MailpieceShape = empty($packageType) ? '' : "<MailpieceShape>{$packageType}</MailpieceShape>";
        $LabelType = '';
        if ($packageType == 'Letter') {
            $LabelType = 'LabelType="DestinationConfirm"';
        }
        $requestXML = <<<EOF
     <LabelRequest ImageFormat="GIF" Test="NO" {$LabelType} >
        <RequesterID>{$requestId}</RequesterID>
        <AccountID>{$accoutId}</AccountID>
        <PassPhrase>{$passPhrase}</PassPhrase>{$MailpieceShape}<MailClass>{$mailClass}</MailClass>
        <DateAdvance>0</DateAdvance>
         <WeightOz>{$weight_oz}</WeightOz>
         <Stealth>TRUE</Stealth>
    \t <ValidateAddress>FALSE</ValidateAddress>
         <Services InsuredMail="OFF" SignatureConfirmation="OFF" />
         <Value>0</Value>
         <Description>Sample Label</Description>
         <PartnerCustomerID>12345ABCD</PartnerCustomerID>
         <PartnerTransactionID>6789EFGH</PartnerTransactionID>
         <ToName>{$recipients}</ToName>
         <ToCompany>United States Postal Service</ToCompany>
         <ToAddress1>{$re_address1}</ToAddress1>
         <ToAddress2>{$re_address2}</ToAddress2>
         <ToCity>{$re_city}</ToCity>
         <ToState>{$re_state_code}</ToState>
         <ToPostalCode>{$re_post_code}</ToPostalCode>
         <ToPhone>{$re_phone}</ToPhone>
         <FromName>LINEMART INC</FromName>
         <FromCompany>LINEMART INC</FromCompany>
         <ReturnAddress1>16518 E. Gale Ave</ReturnAddress1>
         <FromCity>City of Industry</FromCity>
         <FromState>CA</FromState>
         <FromPostalCode>91745</FromPostalCode>
         <FromZIP4>1864</FromZIP4>
         <FromPhone></FromPhone>
    \t <RubberStamp1>SN:{$orderId}</RubberStamp1>
    \t <RubberStamp2>{$show_detail}</RubberStamp2>
    \t <RubberStamp3>{$sku_position}</RubberStamp3>
    </LabelRequest>
EOF;
        //     echo $requestXML;exit;
        $postData = array('labelRequestXML' => $requestXML);
        $strGetLabelURL = "https://LabelServer.Endicia.com/LabelService/EwsLabelService.asmx/GetPostageLabelXML";
        //生产线
        //         $strGetLabelURL = "https://www.envmgr.com/LabelService/EwsLabelService.asmx/GetPostageLabelXML";                    //测试
        $params = array('http' => array('method' => 'POST', 'content' => 'labelRequestXML=' . $requestXML, 'header' => 'Content-Type: application/x-www-form-urlencoded'));
        $ctx = stream_context_create($params);
        $fp = fopen($strGetLabelURL, 'rb', false, $ctx);
        if (!$fp) {
            self::$errMsg = "发送申请失败!!!";
            return FALSE;
        }
        $response = stream_get_contents($fp);
        if (FALSE == $response) {
            self::$errMsg = "发送申请失败!!!";
            return FALSE;
        }
        $parseResult = $this->parseXMLResult($response);
        //解析结果
        if (FALSE === $parseResult) {
            return FALSE;
        }
        //         var_dump($parseResult);
        $status = intval($parseResult->Status);
        //         echo $status, 'xx';
        if ($status != 0) {
            //结果部位0 则表示有错
            self::$errMsg = strval($parseResult->ErrorMessage);
            return FALSE;
        }
        //         var_dump(strval($parseResult->Base64LabelImage));
        $Base64LabelImage = base64_decode(strval($parseResult->Base64LabelImage));
        //获得标签图片
        $trackNumber = strval($parseResult->TrackingNumber);
        //跟踪号
        $totalMoney = strval($parseResult->FinalPostage);
        //运费
        $labelSavePath = $this->generatePathStr($orderId, 'usps/');
        $labelSavePath = $labelSavePath . "{$orderId}.gif";
        $saveResult = $this->saveLabelPic($labelSavePath, $Base64LabelImage);
        if (FALSE === $saveResult) {
            $this->errCode = 8002;
            $this->errMsg = 'label文件存储出错 --trackNumber -- ' . $trackNumber;
            return FALSE;
        }
        $returnData = array('trackNumber' => $trackNumber, 'shippFee' => $totalMoney, 'imagePath' => $labelSavePath);
        return $returnData;
    }
Beispiel #2
0
 public function view_cancelShippingWay()
 {
     $returnData = array('code' => 0, 'msg' => '');
     $orderId = isset($_GET['orderId']) ? intval($_GET['orderId']) : FALSE;
     if (empty($orderId)) {
         $returnData['msg'] = '未指定订单号';
         echo json_encode($returnData);
         exit;
     }
     $owOrderMg = new OwOrderManageModel();
     $transInfo = $owOrderMg->getShippingInfo($orderId);
     if (FALSE == $transInfo) {
         $returnData['msg'] = '该订单不存未生产运输方式!';
         echo json_encode($returnData);
         exit;
     }
     if (1 == $transInfo['isCanceled']) {
         //已经取消过
         $returnData['code'] = 1;
         echo json_encode($returnData);
         exit;
     }
     $trackNumber = $transInfo['tracknumber'];
     if ('UPS Ground' == $transInfo['shippingWay'] || 0 == strlen($trackNumber)) {
         //若是UPS 或 跟踪号为空 则直接置为已取消
         $result = $owOrderMg->updateOwTransInfo(array('isCanceled' => 1), $orderId);
         if (TRUE == $result) {
             $returnData['code'] = 1;
             echo json_encode($returnData);
             exit;
         } else {
             $returnData['msg'] = '申请退款失败!';
             echo json_encode($returnData);
             exit;
         }
     }
     if ('USPS' == $transInfo['shippingWay']) {
         $uspsApp = new ApplyUSPSLabelModel();
         $result = $uspsApp->refoundUSPS($trackNumber);
         if ($result) {
             $Upresult = $owOrderMg->updateOwTransInfo(array('isCanceled' => 1), $orderId);
             $returnData['code'] = 1;
             echo json_encode($returnData);
             exit;
         } else {
             $returnData['msg'] = ApplyUSPSLabelModel::$errMsg;
             echo json_encode($returnData);
             exit;
         }
     }
 }