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','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']]; $url = $this->url."createOrder"; $Clientid = $this->clientid; $Token = $this->token; $code = array('USKD01'=>array('USKD01','USKD01','lable'),'ZXDPD_UK'=>array('ZXDPD001','ZXDPD001','label'),'ZXDPD_EU'=>array('ZXDPD002','ZXDPD002','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; }else{ $orderType = 1; } //创建并预报订单 $count = array( 'Verify' => array( 'Clientid'=>$Clientid, 'Token'=>$Token ), 'OrderType' => ''.$orderType,//1:快件订单 2:快递制单-非实时返回单号 3:仓储订单 4:快递制单-实时返回单号(等待时间较 长)。此方法选择 4,后续如需调用其他 方法,例如调用删除接口,其他方法 OrderType 请选择 2。 'OrderDatas' => array(0=>array( 'CustomerNumber' => $data['number'].$printnumber,//订单号 'ChannelCode' => ($data['js'] == 1)?$printcode[1]:$printcode[0],//渠道代码 'CountryCode' => $data['lb'],//国家二字码 'TotalWeight' => $data['zzl'],//订单重量 'TotalValue' => $data['zsbjz'],//申报价值 'Number' => $data['zjs'],//件数 'Note' => $data['number'],//备注 /** 'Insurance' => array(//是否购买保险 'Code' => '',//保险类型 'Value' => '',//保险金额 ), **/ 'FeePayData' => array(//运费支付信息 'FeePayType' => 'PP',//支付方式 [ PP:预付,CC:到付, TP:第三方] 'FeePayAccountNumber' => '',//支付账号 支付方式为 TP 时必传 支付方式为 PP 并且渠道 UPS 时必传 'FeePayCountryCode' => '',//支付账号对应国家 支付方式为 TP 时必传 'FeePayPostCode' => '',//支付账号对应邮编 支付方式为 TP 并且渠道 FEDEX 时必传 ), 'TaxPayData' => array(//税金/关税支付信息 OrderType 为 [快递制单] 时必传字段 'TaxPayType' => 'PP',//支付方式 [ PP:预付,CC:到付, TP:第三方] 'TaxPayAccountNumber' => '',//支付账号 支付方式为 TP 时必传 支付方式为 PP 并且渠道 UPS 时必传 'TaxPayCountryCode' => '',//支付账号对应国家 支付方式为 TP 时必传 'TaxPayPostCode' => '',//支付账号对应邮编 支付方式为 TP 并且渠道 FEDEX 时必传 ), 'Sender'=>[ 'Name'=>'Kenny Kwok', 'Company'=>'Long Human Hair Factory Inc- Kenny Kwok', 'Addres'=>'819 6th Avenue Store front', 'Tel'=>'929-389-8183', 'Post'=>10001, 'Province'=>'NY', 'City'=>'New York', ], 'Recipient' => array(//收件人信息 'Name' => $data['name'],//姓名 'Company' => $data['client'],//公司 'Addres1' => $data['address'],//地址1 'Addres2' => $data['address2'],//地址2 'Tel' => preg_replace('/\D/s','',$data['phone']),//手机 'Province' => $dataprovince,//省/州 'City' => $data['city'],//城市 'Post' => trim($data['zipcode'],' '), 'Email' => trim($data['email'],' ')//邮箱 ), 'OrderItems' => array(0=>array(//订单明细 'Money' => 'USD',//货币单位 //'Sku' => '123123',//产品 Sku (OrderType 为仓储订单必传) 'Cnname' => $data['zwpm'],//产品中文名 'Enname' => $data['sbpm'].'*'.$data['ts'],//产品英文名 'Price' => $data['dtsbjz'],//单价 'Weight' => $data['zzl'],//重量 'Num' => $data['ts'],//数量 )), 'Volumes' => array(//材积明细 (OrderType 为快递制单必传) 0=>array( 'Weight' => $data['zzl'],//实重 'Number' => '1',//件数 // 'Length' => '30',//长 // 'Width' => '30',//宽 // 'Height' => '4',//高 'Length' => '10',//长 'Width' => '10',//宽 'Height' => '10',//高 ))) ) ); if($data['printcode'] == 'ZXDPD_UK'){ $count['OrderDatas'][0]['FeeInfo'] = [ "TermsOfShipment"=> "DDP",// ]; $count['OrderDatas'][0]['OrderItems'][0]['CustomsCode']=$data['sbbm']; } $start_time = time(); $count = json_encode($count,true); $this->logic_ding->sendToDing("正鑫快递报文信息【".$count."】"); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); $res = curl_exec($ch); curl_close($ch); $this->logic_ding->sendToDing("正鑫快递请求链接".$url); $this->logic_ding->sendToDing("正鑫快递报文信息【".$count."】返回参数[".$res."]"); $res = json_decode($res,true); if(!isset($res['returnDatas'][0]['corpBillid'])) { $g = array('x'=>'0','Description'=>json_encode($res,JSON_UNESCAPED_UNICODE),'cs'=>$count); } else if(isset($res['returnDatas'][0]['statusCode']) && $res['returnDatas'][0]['statusCode'] == 'error'){ $g = array('x'=>'0','Description'=>json_encode($res,JSON_UNESCAPED_UNICODE)); } else { $yd_orderType = 1; if($data['printcode'] == 'ZXDPD_UK'){ $yd_orderType = 2; } $yd = $this->get_yd($res['returnDatas'][0]['corpBillid'],$printcode[2],$yd_orderType); //$fp = $this->get_fp($res['returnDatas'][0]['corpBillid']); if($yd != 'c')// && $fp != 'c' { $waybill = $res['returnDatas'][0]['trackNumber'].""; if(strlen($waybill) == 30){ $waybill = substr($waybill, 8); } $g = array('x'=>'1','waybillid'=>$res['returnDatas'][0]['corpBillid'],'waybill'=>$waybill,'yd'=>$yd);//'fp'=>$fp } else { $g = array('x'=>'0','Description'=>'换取运单失败,请重试。'.$res['returnDatas'][0]['corpBillid']); } } $this->logic_ding->sendToDing("正鑫快递erp返回信息".$data['number']."【".json_encode($g)."】"); $end_time = time(); if( $end_time - $start_time > 45){ if($g['x'] == 1){ $this->logic_ding->addJobs('outtime_order',['number'=>$data['number']]); } } return $g; } public function get_yd($waybill,$PrintPaper,$orderType=1) { $url = $this->url."printOrderLabel"; $Clientid = $this->clientid; $Token = $this->token; $count = array( 'Verify' => array( 'Clientid'=>$Clientid, 'Token'=>$Token ), 'CorpBillidDatas'=> array(0=>array('CorpBillid'=>$waybill)), 'OrderType'=> "".$orderType,//1:快件订单 2:快递制单 3:仓库订单 'PrintPaper'=> $PrintPaper,//打印纸张 快递制单只固定为:label 和 A4 'PrintContent'=> "1"//打印内容 1:地址标签 2:报关单 3:配货信息 可自由组合用“,”号隔开 如:1,2,3 ); $count = json_encode($count,true); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); $res = curl_exec($ch); curl_close($ch); $this->logic_ding->sendToDing("正鑫快递报文面单信息【".$count."】返回参数[".$res."]"); $res = json_decode($res,true); if($res['statusCode'] == 'success') { return $res['url']; } else { return 'c'; } } public function get_fp($waybill) { $url = $this->url."printOrderInvoice"; $Clientid = $this->clientid; $Token = $this->token; $count = array( 'Verify' => array( 'Clientid'=>$Clientid, 'Token'=>$Token ), 'CorpBillidDatas'=> array(0=>array('CorpBillid'=>$waybill)) ); $count = json_encode($count,true); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res,true); return $res;exit; if($res['statusCode'] == 'success') { return $res['url']; } else { return 'c'; } } public function get_del($waybill)//删除 { $url = $this->url."deleteOrder"; $Clientid = $this->clientid; $Token = $this->token; $count = array( 'OrderType'=> "1", 'Verify' => array( 'Clientid'=>$Clientid, 'Token'=>$Token ), 'CorpBillidDatas'=> array(0=>array('CorpBillid'=>$waybill)) ); $count = json_encode($count,true); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res,true); return $res;exit; $data = 0; if(isset($res['returnDatas'][0]['statusCode'])) { $data = ($res['returnDatas'][0]['statusCode'] == 'success')?1:0; } return $data; } public function get_PrintPaper()//根据渠道码获取打印尺寸 { $url = "http://zzys.kingtrans.net/PostInterfaceService?method=searchPrintPaper"; $Clientid = $this->clientid; $Token = $this->token; $count = array( 'Verify' => array( 'Clientid'=>$Clientid, 'Token'=>$Token ), 'ChannelCode'=> "usps_priority" ); $count = json_encode($count,true); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res,true); return $res; } public function get_abc()//快递渠道 { // $url = "http://ambcargo.kingtrans.cn/PostInterfaceService?method=searchStartChannel"; // $Clientid = 'LYFZP'; // $Token = 'NGkJSDx3bAxojl1YN232'; // $count = array( // 'Verify' => array( // 'Clientid'=>$Clientid, // 'Token'=>$Token // ) // ); // $count = json_encode($count,true); // $ch = curl_init(); // curl_setopt($ch,CURLOPT_URL,$url); // curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // curl_setopt($ch,CURLOPT_HEADER,0); // curl_setopt($ch,CURLOPT_POST, 1); // curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); // curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); // $res = curl_exec($ch); // curl_close($ch); // $res = json_decode($res,true); // return $res; } public function get_logistics($data)//快递渠道 { // $url = "http://ambcargo.kingtrans.cn/PostInterfaceService?method=searchTrack"; // $Clientid = 'LYFZP'; // $Token = 'NGkJSDx3bAxojl1YN232'; // $count = array( // 'Verify' => array( // 'Clientid'=>$Clientid, // 'Token'=>$Token // ), // 'Datas'=> array(0=>array('TrackNumber'=>$data['waybill'])) // ); // $count = json_encode($count,true); // $ch = curl_init(); // curl_setopt($ch,CURLOPT_URL,$url); // curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // curl_setopt($ch,CURLOPT_HEADER,0); // curl_setopt($ch,CURLOPT_POST, 1); // curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,600); // curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query(array('json'=>$count))); // $res = curl_exec($ch); // curl_close($ch); // $res = json_decode($res,true); // if($res['statusCode'] == 'success') // { // $exstate = 0; // $zt = ($res['returnDatas']['0']['statusCode'] == 'success')?$res['returnDatas']['0']['items']:'cw'; // $xq = ''; // if($zt == 'cw') // { // $content = date('Y-m-d H',time()).'-查询失败'; // $list = array('content'=>$content,'f'=>0); // return $list;exit; // } // foreach($zt as $v) // { // if($v['info'] == 'Delivered') // { // $exstate = 6; // break; // } // else if(stripos($v['location'],$data['country']) !== false) // { // $exstate = 4; // break; // } // else if($v['info'] == '订单信息已收到') // { // $exstate = 2; // break; // } // } // if($exstate > 0) // { // foreach($zt as $v) // { // $xq .= date('m-d H:i',strtotime($v['dateTime'])).' '.$v['info'].'
'; // } // $content = date('Y-m-d H',time()).'-查询成功'; // $list = array('exstate'=>$exstate,'content'=>$content,'f'=>1,'data'=>$xq);//正常可发送站内信 // } // else // { // $list = ''; // } // } // else // { // $content = date('Y-m-d H',time()).'-查询失败'; // $list = array('content'=>$content,'f'=>0);//非正常只更改详情信息 // } // return $list; } } //end class