Model_ups.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <?php
  2. class Model_Ups extends Lin_Model {
  3. function __construct(){
  4. parent::__construct();
  5. }
  6. public function get_data($data)
  7. {
  8. $cs = array('1'=>'2'.'nd','2'=>'3'.'rd','3'=>'4'.'th','4'=>'5'.'th','5'=>'6'.'th','7'=>'8'.'th','8'=>'9'.'th');
  9. $printnumber = ($data['printnumber']==0)?'':'-'.$cs[$data['printnumber']];
  10. if($data['country'] == 'United States')
  11. {
  12. $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');
  13. $data['province'] = preg_replace('/( | | |\s)/',' ',$data['province']);
  14. $data['province'] = trim($data['province'],' ');
  15. $dataprovince = strlen($data['province'])==2?$data['province']:$ToState[strtolower($data['province'])];
  16. $data['province'] = strtoupper($dataprovince);
  17. }
  18. if($data['country'] == 'Canada')
  19. {
  20. $ToState = array('ontario'=>'ON','quebec'=>'QC','nova scotia'=>'NS','new brunswick'=>'NB','manitoba'=>'MB','british columbia'=>'BC','prince edward island'=>'PE','saskatchewan'=>'SK','alberta'=>'AB','newfoundland and labrador'=>'NL','northwest territories'=>'NT','yukon'=>'YT','nunavut'=>'NU');
  21. $data['province'] = preg_replace('/( | | |\s)/',' ',$data['province']);
  22. $data['province'] = trim($data['province'],' ');
  23. $dataprovince = strlen($data['province'])==2?$data['province']:$ToState[strtolower($data['province'])];
  24. $data['province'] = strtoupper($dataprovince);
  25. }
  26. $userToken = '40b1df5b5f4a4f84a4eb6186f40099d4';
  27. $request['orderNo'] = $data['number'].$printnumber;
  28. $request['transportWayCode'] = 'UPS0';
  29. $request['cargoCode'] = 'W';
  30. $request['originCountryCode'] = $data['warehouse']['lb'];
  31. $request['destinationCountryCode'] = $data['lb'];
  32. $request['pieces'] = $data['zjs'];
  33. $request['shipperName'] = $data['warehouse']['company'];
  34. $request['shipperAddress'] = $data['warehouse']['address'];
  35. $request['shipperTelephone'] = $data['warehouse']['phone'];
  36. $request['consigneeName'] = $data['name'];
  37. $request['street'] = $data['address'];
  38. $request['city'] = $data['city'];
  39. $request['province'] = $data['province'];
  40. $request['consigneePostcode'] = $data['zipcode'];
  41. $request['consigneeTelephone'] = $data['phone'];
  42. $request['weight'] = '0.5';
  43. $request['insured'] = 'N';
  44. $request['goodsCategory'] = 'O';
  45. for($j = 0;$j<$data['zjs'];$j++)
  46. {
  47. $goods[] = array(
  48. 'name' => $data['sbpm'],//英文申报品名
  49. 'cnName' => $data['zwpm'],//中文申报品名
  50. 'pieces' => $data['ts'],//条数
  51. 'netWeight' => sprintf("%.2f",'0.5'/$data['ts']),//单条重量
  52. 'unitPrice' => $data['dtsbjz'],//单条申报价值
  53. 'customsNo' => '6704200000'//海关编码
  54. );
  55. }
  56. $request['declareItems'] = $goods;
  57. $client = new SoapClient ("http://42.123.127.204:8086/xms/services/order?wsdl", array ('encoding' => 'UTF-8'));
  58. $order_register = $client->createAndAuditOrder($userToken,$request);
  59. if($order_register->success && $order_register->trackingNo)
  60. {
  61. $label = 'http://42.123.127.204:8086/xms/client/order_online!print.action?userToken='.$userToken.'&trackingNo='.$order_register->trackingNo.'&pageSizeCode=7&printSelect=1&showCnoBarcode=0';//pageSizeCode:“1”表示80.5mm × 90mm“2”表示105mm × 210mm“3”表示A4“7”表示100mm × 150mm“4”表示102mm × 76mm“5”表示110mm × 85mm“6”表示100mm × 100mm。printSelect:1 地址标签打印 11 报关单 2 地址标签+配货信息 3 地址标签+报关单 12 特殊100mm×100mm地址。showCnoBarcode:是否显示客户单号, 0代表不显示(默认),1代表显示。trackingNo:orderId/orderNo/trackingNo->订单编号/客户单号/跟踪单号
  62. $g = array('x'=>'1','waybill'=>$order_register->trackingNo,'label'=>$label);
  63. }
  64. else
  65. {
  66. if(isset($order_register->error->errorInfo))
  67. {
  68. $g = array('x'=>'0','Description'=>$order_register->error->errorInfo);
  69. }
  70. else
  71. {
  72. $g = array('x'=>'0','Description'=>'该订单未在UPS系统中彻底删除或未知错误');
  73. }
  74. }
  75. return $g;
  76. }
  77. public function get_del($data)
  78. {
  79. $cs = array('1'=>'2'.'nd','2'=>'3'.'rd','3'=>'4'.'th','4'=>'5'.'th','5'=>'6'.'th','7'=>'8'.'th','8'=>'9'.'th');
  80. $printnumber = ($data['printnumber']==0)?'':'-'.$cs[$data['printnumber']];
  81. $userToken = '40b1df5b5f4a4f84a4eb6186f40099d4';
  82. $request['orderId'] = $data['number'].$printnumber;
  83. $client = new SoapClient ("http://42.123.127.204:8086/xms/services/order?wsdl", array ('encoding' => 'UTF-8'));
  84. $order_register = $client->deleteOrder($userToken,$request);
  85. return $order_register;
  86. }
  87. public function get_oooooo($data)
  88. {
  89. $data['address'] = str_replace(array('#','&#38;','&'),array('%23','%26'),$data['address']);
  90. $data['address2'] = str_replace(array('#','&#38;','&'),array('%23','%26'),$data['address2']);
  91. $data['client'] = str_replace(array('#','&#38;','&'),array('%23','%26'),$data['client']);
  92. $data['name'] = str_replace(array('#','&#38;','&'),array('%23','%26'),$data['name']);
  93. $xml = "";
  94. $xml .= "<createOrder>";
  95. $xml .= "<userToken>8a3ddab172a74ad887be919a2aa41641</userToken>"; //会员唯一标识
  96. $xml .= "<createOrderRequest>";//创建订单请求
  97. $xml .= "<orderNo />"; //客户单号
  98. $xml .= "<trackingNo />"; //服务商跟踪号码
  99. $xml .= "<cargoCode>W</cargoCode>";//货物类型。取值范围[W:包裹/D:文件]
  100. $xml .= "<transportWayCode>SGPOSTG</transportWayCode>"; //运输方式代码
  101. $xml .= "<goodsCategory>O</goodsCategory>";//物品类别。取值范围[G:礼物/D:文件/S:商业样本/R:回货品/O:其他]
  102. //$xml .= "<goodsDescription>bag</goodsDescription>";//物品类别
  103. $xml .= "<insured>N</insured>";//购买保险(投保:Y,不投保:N)。
  104. $xml .= "<pieces>1</pieces>"; //货物件数
  105. $xml .= "<weight>0.386</weight>";//货物重量
  106. $xml .= "<originCountryCode>CN</originCountryCode>"; //起运国家二字简码。
  107. $xml .= "<destinationCountryCode>AU</destinationCountryCode>";//目的国家二字简码
  108. $xml .= "<consigneeCompanyName>XXX company</consigneeCompanyName>";//收件人公司名称
  109. $xml .= "<consigneeName>Bruce Lee</consigneeName>";//收件人姓名
  110. //$xml .= "<consigneeTelephone>01088223345</consigneeTelephone>";//收件人固定电话
  111. $xml .= "<consigneeMobile>13688888888</consigneeMobile>";//收件人手机
  112. $xml .= "<street>Lipovaja 2345 Orenburg</street>";//收件人街道 200字符
  113. $xml .= "<city>Orenburg</city>";//收件人城市
  114. $xml .= "<province>Russia</province>";//收件人州/省
  115. $xml .= "<consigneePostcode>10001</ consigneePostcode >"; //收件人邮编
  116. $xml .= "<shipperAddress>xxx street</shipperAddress>";//发件人地址
  117. $xml .= "<shipperCompanyName>Hlt limit comany</shipperCompanyName>";//发件人公司名称
  118. $xml .= "<shipperName>Zhangsan</shipperName>";//发件人姓名
  119. $xml .= "<shipperPostcode>518000</shipperPostcode>";//发件人邮编
  120. //$xml .= "<shipperTelephone>07558888888</shipperTelephone>"; //发件人固定电话
  121. $xml .= "<shipperMobile>13132222222</shipperMobile>"; //发件人手机
  122. $xml .= "<declareItems>";
  123. $xml .= "<name>Canvas bag</name>";//英文申报品名
  124. $xml .= "<cnName>帆布袋</cnName>"; //中文申报名
  125. $xml .= "<pieces>1</pieces>";//件数
  126. $xml .= "<netWeight>0.683</netWeight>";//净重
  127. $xml .= "<unitPrice>8.6</unitPrice>";//单价
  128. $xml .= "<productMemo></productMemo>";//配货备注
  129. $xml .= "<customsNo>6104220010</ customsNo >";//海关编码
  130. $xml .= "</declareItems>";
  131. $xml .= "</createOrderRequest>";
  132. $xml .= "</createOrder>";
  133. $ch = curl_init();
  134. curl_setopt($ch, CURLOPT_URL, 'http://42.123.127.204:8086/xms/admin/page!login.action');
  135. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  136. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  137. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  138. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  139. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  140. curl_setopt($ch, CURLOPT_POST, 1);
  141. $result_xml = curl_exec($ch);
  142. //$result_xml = str_replace(array(':','-'), '', $result_xml);
  143. //@$values = json_decode(json_encode(simplexml_load_string($result_xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  144. return $result_xml;
  145. //Description提示错误 LabelImage运单PDF BarcodeNumber运单号
  146. }
  147. public function get_ex()
  148. {
  149. $userToken = '40b1df5b5f4a4f84a4eb6186f40099d4';
  150. $request['userToken'] = '40b1df5b5f4a4f84a4eb6186f40099d4';
  151. $client = new SoapClient ("http://42.123.127.204:8086/xms/services/order?wsdl", array ('encoding' => 'UTF-8'));
  152. $order_register = $client->getTransportWayList($userToken,$request);
  153. return $order_register;
  154. }
  155. public function get_address($data)
  156. {
  157. }
  158. public function get_manifest($fullorder) //生成发货清单
  159. {
  160. }
  161. public function get_logistics_zt($v) //阿里云云市场 暂停
  162. {
  163. $host = "https://ali-deliver.showapi.com";
  164. $path = "/showapi_expInfo";
  165. $method = "GET";
  166. $appcode = "008b9815e9fa49c49ba3a95f83f662f6";
  167. $headers = array();
  168. array_push($headers, "Authorization:APPCODE " . $appcode);
  169. $querys = "com=upsen&nu=".$v['waybill'];
  170. $bodys = "";
  171. $url = $host . $path . "?" . $querys;
  172. $v['exstate'] = (isset($v['exstate']))?$v['exstate']:'';//非订单查询无此属性
  173. $curl = curl_init();
  174. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
  175. curl_setopt($curl, CURLOPT_URL, $url);
  176. curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  177. curl_setopt($curl, CURLOPT_FAILONERROR, false);
  178. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  179. //curl_setopt($curl, CURLOPT_HEADER, true);
  180. if (1 == strpos("$".$host, "https://"))
  181. {
  182. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  183. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  184. }
  185. $read = json_decode(curl_exec($curl),true);
  186. if(!isset($read['showapi_res_body']['status']))
  187. {
  188. $content = (isset($read['showapi_res_body']['msg']))?date('Y-m-d H',time()).'-'.$read['showapi_res_body']['msg']:date('Y-m-d H',time()).'-'.'查询失败';
  189. $list = array('content'=>$content,'f'=>0);//非正常只更改详情信息
  190. }
  191. else if($read['showapi_res_body']['status'] > 1 && $read['showapi_res_body']['status'] != $v['exstate'])
  192. {
  193. $exstate = $read['showapi_res_body']['status'];
  194. $content = $read['showapi_res_body']['data'][0]['time'].' - '.$read['showapi_res_body']['data'][0]['context'];
  195. $xq = '';$pd = '';$i = 0;
  196. foreach($read['showapi_res_body']['data'] as $v)
  197. {
  198. if($i == '0')
  199. {
  200. $pd = $v['context'];
  201. }
  202. $xq .= $v['time'].' '.$v['context'].'<br />';
  203. $i++;
  204. }
  205. if($exstate == 2)
  206. {
  207. $exstate = 3;
  208. }
  209. else if($exstate == 3)
  210. {
  211. $exstate = 5;
  212. }
  213. else if($exstate == 4 && stripos($pd,"可取件") === false)
  214. {
  215. $exstate = 6;
  216. }
  217. else if($exstate == 4 && stripos($pd,"可取件") !== false)
  218. {
  219. $exstate = 5;
  220. }
  221. else if($exstate == 9 || $exstate == 5)
  222. {
  223. $exstate = 1;
  224. }
  225. $list = array('exstate'=>$exstate,'content'=>$content,'f'=>1,'data'=>$xq);//正常可发送站内信
  226. }
  227. else
  228. {
  229. $content = (isset($read['showapi_res_body']['msg']))?date('Y-m-d H',time()).'-'.$read['showapi_res_body']['msg']:date('Y-m-d H',time()).'-'.'查询失败';
  230. $list = array('content'=>$content,'f'=>0);//非正常只更改详情信息
  231. }
  232. return $list;
  233. //status : -1 待查询 0 查询异常 1 暂无记录 2 在途中 3 派送中 4 已签收 5 用户拒签 6 疑难件 7 无效单 8 超时单 9 签收失败 10 退回
  234. }
  235. public function get_logistics($v) //17track.net
  236. {
  237. $url = 'https://api.17track.net/track/v1/register';
  238. $data = '[{"number":"'.$v['waybill'].'","carrier":"100002"}]'; //运输商key查询https://res.17track.net/asset/carrier/info/carrier.all.json
  239. $header[] = "17token:0811AC1711EAABB7D764D04B824F8C2D";
  240. $header[] = "Content-Type:application/json";
  241. $ch = curl_init();
  242. curl_setopt($ch, CURLOPT_URL, $url);
  243. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  244. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  245. curl_setopt($ch, CURLOPT_POST, 1);
  246. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  247. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  248. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  249. $res = curl_exec($ch);
  250. curl_close($ch);
  251. $res = json_decode($res,true);
  252. if(isset($res['data']['accepted']['0']['origin']))
  253. {
  254. $list = array('exstate'=>0,'content'=>'','f'=>1,'data'=>'','webhookregister'=>1);
  255. }
  256. else
  257. {
  258. $list = array('content'=>$res['data']['rejected']['0']['error']['message'],'f'=>0);
  259. }
  260. }
  261. } //end class