Model_zxyuntu.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <?php
  2. class Model_zxyuntu extends Lin_Model {
  3. //private $clientid = '80295';
  4. private $clientid = '80295';
  5. //private $token = 'WlpGWA==xuhlVp2o172e3f3rkB5n';
  6. private $token = '72457b8b-3ffe-4400-ba24-eca33e192703';
  7. //private $url = "https://zzfx.kingtrans.net/PostInterfaceService?method=";
  8. //private $url = "http://120.79.16.212:9999//api/order/createForecast";
  9. private $url = "http://120.79.16.212:9999//api";
  10. function __construct(){
  11. parent::__construct();
  12. $this->load->_model("Model_logic_ding","logic_ding");
  13. }
  14. //获取快递信息
  15. public function get_data($data){
  16. $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',);
  17. $printnumber = ($data['printnumber']==0)?'':'-'.$cs[$data['printnumber']];
  18. $Clientid = $this->clientid;
  19. $Token = $this->token;
  20. $code = array('USKD01'=>array('USKD01','USKD01','lable'),'ZXDPD_UK'=>array('DPD01','DPD01','label'),'ZXDPD_BTC'=>array('DPD02','DPD02','label'));
  21. $printcode = $code[$data['printcode']];
  22. $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');
  23. $data['province'] = preg_replace('/( | | |\s)/',' ',$data['province']);
  24. $data['province'] = trim($data['province'],' ');
  25. //$dataprovince = strlen($data['province'])==2?$data['province']:$ToState[strtolower($data['province'])];
  26. if(strlen($data['province'])==2){
  27. $dataprovince = $data['province'];
  28. }else{
  29. if(isset($ToState[strtolower($data['province'])])){
  30. $dataprovince = empty($data['province'])?'':$ToState[strtolower($data['province'])];
  31. }else{
  32. $dataprovince = $data['province'];
  33. }
  34. }
  35. if($data['printcode'] == 'ZXDPD_UK'){
  36. $orderType = 4;
  37. }elseif($data['printcode'] == 'ZXDPD_BTC'){
  38. $orderType = 4;
  39. }else{
  40. $orderType = 1;
  41. }
  42. //dpd不用中文 云途用
  43. $ccname = "";
  44. if(($data['printcode'] == 'ZXDPD_UK') || ($data['printcode'] == 'ZXDPD_BTC')){
  45. $ccname = $data['sbpm'].'*'.$data['ts'];
  46. }else{
  47. $ccname = $data['zwpm'];
  48. }
  49. $djzl = number_format($data['zzl'] / $data['zjs'], 2);
  50. $post = [
  51. "authorization" => [
  52. "code" => $Clientid,
  53. "token" => $Token,
  54. ],
  55. "datas" => [
  56. [
  57. "order"=>[
  58. "channelid"=>($data['js'] == 1)?$printcode[1]:$printcode[0],
  59. "customernumber1"=>$data['number'].$printnumber,
  60. "number"=> $data['zjs'],
  61. "forecastweight"=>$data['zzl'],
  62. "isbattery"=>0,//是否带电(0:否,1:是)
  63. "ismagnet"=>0,//是否带磁(0:否,1:是)
  64. "isliquid"=>0,//是否液体(0:否,1:是)
  65. "ispowder"=>0,//是否粉末(0:否,1:是)
  66. "feepaytype"=>"pp",//运费支付方式 CC:到付,PP:预付,TP:第三方
  67. "taxpaytype"=>"pp",//税金支付方式
  68. "countrycode"=>$data['lb'],
  69. "consigneename"=>$data['name'],//收件人名称
  70. "consigneecorpname"=>$data['client'],
  71. "consigneeaddress1"=>$data['address'],// 限制100
  72. "consigneeaddress2"=>$data['address2'],
  73. "consigneecity"=>$data['city'],//收件人城市
  74. "consigneezipcode"=>trim($data['zipcode'],' '),//收件人邮编
  75. "consigneeemail"=>trim($data['email'],' '),//收件人邮箱
  76. "consigneeprovince"=>$dataprovince,//收件人省州
  77. "consigneetel"=>preg_replace('/\D/s','',$data['phone']),
  78. //"sendertype"=>'01',//寄件人类型(有效值为:01:企业(B2B) 或 02:个人(B2C))
  79. "sendercountrycode"=>"CN",
  80. "sendername"=>"LongYing",
  81. "senderaddress1"=>"hangji Economic Development Zone",
  82. "senderaddress2"=>"LongYingShiYe, Yinghao Rd.",
  83. "sendertel"=>'15939964739',
  84. "sendercity"=>"Xuchang",
  85. "senderprovince"=>"HeNan",
  86. ],
  87. "volumes"=>[
  88. [
  89. "customerchildnumber"=>'',//客户子单号
  90. "prenum"=>$data['zjs'],//件数
  91. "prelength"=>'10',//长(CM)
  92. "prewidth"=>'10',//宽(CM)
  93. "preheight"=>'10',//高(CM)
  94. "prerweight"=>$djzl,//单件重量(KG)
  95. "palletnum"=>1,//托盘件数
  96. ]
  97. ],
  98. "items"=>[
  99. [
  100. "cnname"=>$ccname,
  101. "enname"=>$data['sbpm'].'*'.$data['ts'],
  102. "declarecurrency"=> "USD",
  103. "price"=>$data['dtsbjz'],
  104. "isbatterys"=>0,
  105. "ismagnets"=>0,
  106. "isliquids"=>0,
  107. "ispowders"=>0,
  108. 'hscode'=>$data['sbbm'],
  109. ]
  110. ]
  111. ]
  112. ]
  113. ];
  114. if($data['printcode'] == 'ZXDPD_UK'){
  115. $post['datas'][0]["order"]['termsofsalecode']= "DDP";
  116. //$post['datas'][0]["items"][0]['hscode'] = $data['sbbm'];
  117. }
  118. if($data['printcode'] == 'ZXDPD_BTC'){
  119. $post['datas'][0]["order"]['declaretypepkid'] = '不需要报关';
  120. $post['datas'][0]["order"]['sendetaxnumber'] = 'IM5280002556';
  121. }
  122. $jsonBody = json_encode($post);
  123. //$start_time = time();
  124. $url = $this->url."/order/createForecast";
  125. $res = $this->reqPost($url,$jsonBody);
  126. $this->logic_ding->sendToDing("正鑫快递报文信息【".$jsonBody."】返回参数[".json_encode($res)."].||".$url);
  127. if($res['code'] != 1){
  128. $g = array('x'=>'0','Description'=>json_encode($res,JSON_UNESCAPED_UNICODE),'cs'=>$jsonBody);
  129. return $g;
  130. }
  131. if($res['data']['code'] != 0){
  132. $g = array('x'=>'0','Description'=>json_encode($res['data'],JSON_UNESCAPED_UNICODE),'cs'=>$jsonBody);
  133. return $g;
  134. }
  135. // $waybillnumber = empty($res['data']['data'][0]['waybillnumber'])? (empty($res['data']['data'][0]['waybillnumber1']) ?"": $res['data']['data'][0]['waybillnumber1']) :$res['data']['data'][0]['waybillnumber'];
  136. $waybillnumber = "";
  137. if(!empty($res['data']['data'][0]['waybillnumber1'])){
  138. $waybillnumber = $res['data']['data'][0]['waybillnumber1'];
  139. }else{
  140. if(!empty($res['data']['data'][0]['waybillnumber'])){
  141. $waybillnumber = $res['data']['data'][0]['waybillnumber'];
  142. }
  143. }
  144. if(empty($waybillnumber)){
  145. $g = array('x'=>'0','Description'=>"获取运单为空,请联系技术检查",'cs'=>$jsonBody);
  146. return $g;
  147. }
  148. // var_dump($res['data']);
  149. $ys_res = $this->get_yd($waybillnumber);
  150. // var_dump($ys_res);
  151. $this->logic_ding->sendToDing("正鑫快递面单erp返回信息".$data['number']."【".json_encode($ys_res)."】");
  152. if(empty($ys_res['data']['data'])){
  153. $g = array('x'=>'0','Description'=>"换取运单失败,请重试-1。",'cs'=>$jsonBody);
  154. return $g;
  155. }
  156. if(empty($ys_res['data']['data']['url'])){
  157. $g = array('x'=>'0','Description'=>"换取运单失败,请重试-3。",'cs'=>$jsonBody);
  158. return $g;
  159. }
  160. // var_dump($ys_res['data']['data']);
  161. $url = $ys_res['data']['data']['url'];
  162. $g = array('x'=>'1','waybillid'=>'','waybill'=>$waybillnumber,'yd'=>$url);//'fp'=>$fp
  163. //$end_time = time();
  164. return $g;
  165. }
  166. public function get_yd($waybillnumber){
  167. $params = [
  168. "authorization" => [
  169. "code" => $this->clientid,
  170. "token" => $this->token,
  171. ],
  172. "datas" => [
  173. "printType"=> "Label",
  174. "printContent"=>1,
  175. "waybillnumber"=>[
  176. $waybillnumber
  177. ]
  178. ]
  179. ];
  180. $url = $this->url."/order/label";
  181. $jsonBody = json_encode($params);
  182. $res = $this->reqPost($url,$jsonBody);
  183. return $res;
  184. }
  185. public function del($customernumber){
  186. $params = [
  187. "authorization" => [
  188. "code" => $this->clientid,
  189. "token" => $this->token,
  190. ],
  191. "datas" => [
  192. "customernumber"=> $customernumber,
  193. ]
  194. ];
  195. $url = $this->url."/order/delete";
  196. $jsonBody = json_encode($params);
  197. return $this->reqPost($url,$jsonBody);
  198. }
  199. private function reqPost($url,$jsonBody){
  200. $ch = curl_init();
  201. curl_setopt_array($ch, [
  202. CURLOPT_URL => $url,
  203. CURLOPT_POST => true,
  204. CURLOPT_POSTFIELDS => $jsonBody,
  205. CURLOPT_HTTPHEADER => [
  206. 'Content-Type: application/json;charset=utf-8',
  207. 'Content-Length: ' . strlen($jsonBody)
  208. ],
  209. CURLOPT_RETURNTRANSFER => true, // 返回响应而不是直接输出
  210. CURLOPT_CONNECTTIMEOUT => 10,
  211. CURLOPT_TIMEOUT => 30,
  212. CURLOPT_FOLLOWLOCATION => false,
  213. CURLOPT_SSL_VERIFYPEER => false,
  214. CURLOPT_SSL_VERIFYHOST => false
  215. ]);
  216. $response = curl_exec($ch);
  217. $curlErrno = curl_errno($ch);
  218. $curlError = curl_error($ch);
  219. curl_close($ch);
  220. // 处理返回
  221. if ($curlErrno > 0) {
  222. return [
  223. 'code'=>-1,
  224. 'msg'=>$curlError,
  225. 'data'=>[],
  226. ];
  227. } else {
  228. $respArr = json_decode($response, true);
  229. return [
  230. 'code'=>1,
  231. 'msg'=>'success',
  232. 'data'=>$respArr,
  233. ];
  234. }
  235. }
  236. }