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']]; $url = $this->url."createOrder"; $Clientid = $this->clientid; $Token = $this->token; $code = array('USKD01'=>array('USKD01','USKD01','lable'),'ZXDPD_UK'=>array('ZXDPD001','ZXDPD001','label'),'ZXDPD_BTC'=>array('ZXDPD003','ZXDPD003','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; } //创建并预报订单 $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'],' ')//邮箱 ), "Declatype"=>"", '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'],//数量 'CustomsCode'=> $data['sbbm'],//报关代码 )), 'Volumes' => array(//材积明细 (OrderType 为快递制单必传) 0=>array( 'Weight' => $data['zzl'],//实重 'Number' => '1',//件数 // 'Length' => '30',//长 // 'Width' => '30',//宽 // 'Height' => '4',//高 'Length' => '10',//长 'Width' => '10',//宽 'Height' => '10',//高 ))) ) ); echo "
";
		print_r($count);
		die;
		if($data['printcode'] == 'ZXDPD_UK'){
			$count['OrderDatas'][0]['FeeInfo'] = [
				"TermsOfShipment"=> "DDP",//
			];
			$count['OrderDatas'][0]['OrderItems'][0]['CustomsCode']=$data['sbbm'];
		}

		if($data['printcode'] == 'ZXDPD_BTC'){
			$count['OrderDatas'][0]['Declatype'] = '不需要报关';
			$count['OrderDatas'][0]['VatNumber'] = 'IM5280002556';
		}
		$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."].||".$url);
		
		$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