load->_model("Model_logic_ding","logic_ding"); } //获取快递信息 public function get_data($data){ $cs = array('1'=>'2'.'nd','2'=>'3'.'rd','3'=>'4'.'th','4'=>'5'.'th','5'=>'6'.'th','6'=>'7'.'th','7'=>'8'.'th','8'=>'9'.'th','9'=>'10'.'th','10'=>'11'.'th','11'=>'12'.'th','12'=>'13'.'th',); $printnumber = ($data['printnumber']==0)?'':'-'.$cs[$data['printnumber']]; $Clientid = $this->clientid; $Token = $this->token; $code = array('USKD01'=>array('USKD01','USKD01','lable'),'ZXDPD_UK'=>array('DPD01','DPD01','label'),'ZXDPD_BTC'=>array('DPD02','DPD02','label')); $printcode = $code[$data['printcode']]; $ToState = array('alabama'=>'AL','alaska'=>'AK','arizona'=>'AZ','arkansas'=>'AR','california'=>'CA','colorado'=>'CO','connecticut'=>'CT','delaware'=>'DE','florida'=>'FL','georgia'=>'GA','hawaii'=>'HI','idaho'=>'ID','illinois'=>'IL','indiana'=>'IN','iowa'=>'IA','kansas'=>'KS','kentucky'=>'KY','louisiana'=>'LA','maine'=>'ME','maryland'=>'MD','massachusetts'=>'MA','michigan'=>'MI','minnesota'=>'MN','mississippi'=>'MS','missouri'=>'MO','montana'=>'MT','nebraska'=>'NE','nevada'=>'NV','new hampshire'=>'NH','new jersey'=>'NJ','new mexico'=>'NM','new york'=>'NY','north carolina'=>'NC','north dakota'=>'ND','ohio'=>'OH','oklahoma'=>'OK','oregon'=>'OR','pennsylvania'=>'PA','rhode island'=>'RI','south carolina'=>'SC','south dakota'=>'SD','tennessee'=>'TN','texas'=>'TX','utah'=>'UT','vermont'=>'VT','virginia'=>'VA','washington'=>'WA','west virginia'=>'WV','wisconsin'=>'WI','wyoming'=>'WY','district of columbia'=>'DC','virgin islands'=>'VI','guam'=>'GU','puerto rico'=>'PR'); $data['province'] = preg_replace('/( | | |\s)/',' ',$data['province']); $data['province'] = trim($data['province'],' '); //$dataprovince = strlen($data['province'])==2?$data['province']:$ToState[strtolower($data['province'])]; if(strlen($data['province'])==2){ $dataprovince = $data['province']; }else{ if(isset($ToState[strtolower($data['province'])])){ $dataprovince = empty($data['province'])?'':$ToState[strtolower($data['province'])]; }else{ $dataprovince = $data['province']; } } if($data['printcode'] == 'ZXDPD_UK'){ $orderType = 4; }elseif($data['printcode'] == 'ZXDPD_BTC'){ $orderType = 4; }else{ $orderType = 1; } //dpd不用中文 云途用 $ccname = ""; if(($data['printcode'] == 'ZXDPD_UK') || ($data['printcode'] == 'ZXDPD_BTC')){ $ccname = $data['sbpm'].'*'.$data['ts']; }else{ $ccname = $data['zwpm']; } $djzl = number_format($data['zzl'] / $data['zjs'], 2); $post = [ "authorization" => [ "code" => $Clientid, "token" => $Token, ], "datas" => [ [ "order"=>[ "channelid"=>($data['js'] == 1)?$printcode[1]:$printcode[0], "customernumber1"=>$data['number'].$printnumber, "number"=> $data['zjs'], "forecastweight"=>$data['zzl'], "isbattery"=>0,//是否带电(0:否,1:是) "ismagnet"=>0,//是否带磁(0:否,1:是) "isliquid"=>0,//是否液体(0:否,1:是) "ispowder"=>0,//是否粉末(0:否,1:是) "feepaytype"=>"pp",//运费支付方式 CC:到付,PP:预付,TP:第三方 "taxpaytype"=>"pp",//税金支付方式 "countrycode"=>$data['lb'], "consigneename"=>$data['name'],//收件人名称 "consigneecorpname"=>$data['client'], "consigneeaddress1"=>$data['address'],// 限制100 "consigneeaddress2"=>$data['address2'], "consigneecity"=>$data['city'],//收件人城市 "consigneezipcode"=>trim($data['zipcode'],' '),//收件人邮编 "consigneeemail"=>trim($data['email'],' '),//收件人邮箱 "consigneeprovince"=>$dataprovince,//收件人省州 "consigneetel"=>preg_replace('/\D/s','',$data['phone']), //"sendertype"=>'01',//寄件人类型(有效值为:01:企业(B2B) 或 02:个人(B2C)) "sendercountrycode"=>"CN", "sendername"=>"LongYing", "senderaddress1"=>"hangji Economic Development Zone", "senderaddress2"=>"LongYingShiYe, Yinghao Rd.", "sendertel"=>'15939964739', "sendercity"=>"Xuchang", "senderprovince"=>"HeNan", ], "volumes"=>[ [ "customerchildnumber"=>'',//客户子单号 "prenum"=>$data['zjs'],//件数 "prelength"=>'10',//长(CM) "prewidth"=>'10',//宽(CM) "preheight"=>'10',//高(CM) "prerweight"=>$djzl,//单件重量(KG) "palletnum"=>1,//托盘件数 ] ], "items"=>[ [ "cnname"=>$ccname, "enname"=>$data['sbpm'].'*'.$data['ts'], "declarecurrency"=> "USD", "price"=>$data['dtsbjz'], "isbatterys"=>0, "ismagnets"=>0, "isliquids"=>0, "ispowders"=>0, 'hscode'=>$data['sbbm'], ] ] ] ] ]; if($data['printcode'] == 'ZXDPD_UK'){ $post['datas'][0]["order"]['termsofsalecode']= "DDP"; //$post['datas'][0]["items"][0]['hscode'] = $data['sbbm']; } if($data['printcode'] == 'ZXDPD_BTC'){ $post['datas'][0]["order"]['declaretypepkid'] = '不需要报关'; $post['datas'][0]["order"]['sendetaxnumber'] = 'IM5280002556'; } $jsonBody = json_encode($post); //$start_time = time(); $url = $this->url."/order/createForecast"; $res = $this->reqPost($url,$jsonBody); $this->logic_ding->sendToDing("正鑫快递报文信息【".$jsonBody."】返回参数[".json_encode($res)."].||".$url); if($res['code'] != 1){ $g = array('x'=>'0','Description'=>json_encode($res,JSON_UNESCAPED_UNICODE),'cs'=>$jsonBody); return $g; } if($res['data']['code'] != 0){ $g = array('x'=>'0','Description'=>json_encode($res['data'],JSON_UNESCAPED_UNICODE),'cs'=>$jsonBody); return $g; } $waybillnumber = empty($res['data']['data'][0]['waybillnumber'])? (empty($res['data']['data'][0]['waybillnumber1']) ?"": $res['data']['data'][0]['waybillnumber1']) :$res['data']['data'][0]['waybillnumber']; if(empty($waybillnumber)){ $g = array('x'=>'0','Description'=>"获取运单为空,请联系技术检查",'cs'=>$jsonBody); return $g; } // var_dump($res['data']); $ys_res = $this->get_yd($waybillnumber); // var_dump($ys_res); $this->logic_ding->sendToDing("正鑫快递面单erp返回信息".$data['number']."【".json_encode($ys_res)."】"); if(empty($ys_res['data']['data'])){ $g = array('x'=>'0','Description'=>"换取运单失败,请重试-1。",'cs'=>$jsonBody); return $g; } if(empty($ys_res['data']['data']['url'])){ $g = array('x'=>'0','Description'=>"换取运单失败,请重试-3。",'cs'=>$jsonBody); return $g; } // var_dump($ys_res['data']['data']); $url = $ys_res['data']['data']['url']; $g = array('x'=>'1','waybillid'=>'','waybill'=>$waybillnumber,'yd'=>$url);//'fp'=>$fp //$end_time = time(); return $g; } public function get_yd($waybillnumber){ $params = [ "authorization" => [ "code" => $this->clientid, "token" => $this->token, ], "datas" => [ "printType"=> "Label", "printContent"=>1, "waybillnumber"=>[ $waybillnumber ] ] ]; $url = $this->url."/order/label"; $jsonBody = json_encode($params); $res = $this->reqPost($url,$jsonBody); return $res; } public function del($customernumber){ $params = [ "authorization" => [ "code" => $this->clientid, "token" => $this->token, ], "datas" => [ "customernumber"=> $customernumber, ] ]; $url = $this->url."/order/delete"; $jsonBody = json_encode($params); return $this->reqPost($url,$jsonBody); } private function reqPost($url,$jsonBody){ $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $jsonBody, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json;charset=utf-8', 'Content-Length: ' . strlen($jsonBody) ], CURLOPT_RETURNTRANSFER => true, // 返回响应而不是直接输出 CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 30, CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false ]); $response = curl_exec($ch); $curlErrno = curl_errno($ch); $curlError = curl_error($ch); curl_close($ch); // 处理返回 if ($curlErrno > 0) { return [ 'code'=>-1, 'msg'=>$curlError, 'data'=>[], ]; } else { $respArr = json_decode($response, true); return [ 'code'=>1, 'msg'=>'success', 'data'=>$respArr, ]; } } }