Model_ali.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <?php
  2. class Model_Ali extends Lin_Model {
  3. function __construct(){
  4. parent::__construct();
  5. }
  6. public function get_data($data)
  7. {
  8. $appToken = '070c4a24fdeb23fa3e0270858cd2ceda';
  9. $appKey = '070c4a24fdeb23fa3e0270858cd2cedabfd75d1f2e461ee13e69646d3437a302';
  10. $data['address'] = str_replace(array('&'),array('&amp;'),$data['address']);
  11. $data['address2'] = str_replace(array('&'),array('&amp;'),$data['address2']);
  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');
  13. $data['province'] = preg_replace('/( | |\s)/',' ',$data['province']);
  14. $data['province'] = trim($data['province'],' ');
  15. $data['province'] = (strlen($data['province'])==2 || $data['lb'] != 'US')?$data['province']:$ToState[strtolower($data['province'])];
  16. $data['city'] = preg_replace('/( | |\s)/',' ',$data['city']);
  17. if($data['printcode'] == 'FEDEX')
  18. {
  19. $code = 'YB0004';
  20. }
  21. else if($data['printcode'] == 'TOLL')
  22. {
  23. $code = 'DPEX';
  24. }
  25. else if($data['printcode'] == 'ARAMEX')
  26. {
  27. $code = 'YB0001';
  28. }
  29. else
  30. {
  31. $code = $data['printcode'];
  32. }
  33. $list = array();
  34. $list['reference_no'] = $data['number'];//客户参考号
  35. //$list['shipper_hawbcode'] = 'YT'.$data['orderinfo'];//运单号,必须YT开头
  36. $list['shipping_method'] = $code;//配送方式
  37. $list['order_weight'] = '0.400';//订单重量
  38. $list['country_code'] = $data['lb'];//收件人国家二字码
  39. if($data['bx'] > 0)
  40. {
  41. $list['insurance_value'] = $data['bx'];//投保金额,默认RMB
  42. }
  43. $list['order_pieces'] = $data['zjs'];//外包装件数,默认
  44. $list['Consignee'] = array();//收件人信息
  45. $list['Consignee']['consignee_company'] = $data['client'];
  46. $list['Consignee']['consignee_province'] = $data['province'];
  47. $list['Consignee']['consignee_city'] = $data['city'];
  48. $list['Consignee']['consignee_street'] = $data['address'];
  49. if($data['address2'])
  50. {
  51. $list['Consignee']['consignee_street2'] = $data['address2'];
  52. }
  53. $list['Consignee']['consignee_postcode'] = trim($data['zipcode'],' ');
  54. $list['Consignee']['consignee_name'] = $data['name'];
  55. $list['Consignee']['consignee_telephone'] = $data['phone'];
  56. $list['Shipper'] = array();//发件人信息
  57. $list['Shipper']['shipper_company'] = $data['warehouse']['company'];
  58. $list['Shipper']['shipper_countrycode'] = $data['warehouse']['lb'];
  59. $list['Shipper']['shipper_province'] = $data['warehouse']['province'];
  60. $list['Shipper']['shipper_city'] = $data['warehouse']['city'];
  61. $list['Shipper']['shipper_street'] = $data['warehouse']['address'].$data['warehouse']['address2'];
  62. $list['Shipper']['shipper_postcode'] = $data['warehouse']['zipcode'];
  63. $list['Shipper']['shipper_name'] = $data['warehouse']['company'];
  64. $list['Shipper']['shipper_telephone'] = preg_replace('/\D/s','',$data['warehouse']['phone']);
  65. $list['Shipper']['shipper_mobile'] = '03747050111';
  66. $list['Shipper']['shipper_email'] = '3002735981@qq.com';
  67. $list['ItemArr'] = array();
  68. $list['ItemArr'][0]['invoice_enname'] = $data['sbpm'];
  69. $list['ItemArr'][0]['invoice_cnname'] = $data['zwpm'];
  70. //$zzl = sprintf("%.2f",0.4/($data['ts']+1));
  71. $list['ItemArr'][0]['invoice_weight'] = '0.005';
  72. $list['ItemArr'][0]['invoice_quantity'] = $data['ts'];
  73. $list['ItemArr'][0]['invoice_unitcharge'] = $data['dtsbjz'];
  74. //$list['ItemArr']['invoice_currencycode'] = 'USD';
  75. $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  76. $xml.='<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org/Ec/">';
  77. $xml.='<SOAP-ENV:Body>';
  78. $xml.='<ns1:callService>';
  79. $xml.='<paramsJson>'.json_encode($list).'</paramsJson>';
  80. $xml.='<appToken>'.$appToken.'</appToken>';
  81. $xml.='<appKey>'.$appKey.'</appKey>';
  82. $xml.='<service>createOrder</service>';
  83. $xml.='</ns1:callService>';
  84. $xml.='</SOAP-ENV:Body>';
  85. $xml.='</SOAP-ENV:Envelope>';
  86. $ch = curl_init();
  87. curl_setopt($ch, CURLOPT_URL, 'http://120.78.181.120/default/svc/web-service');
  88. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  89. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  90. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  91. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  92. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  93. curl_setopt($ch, CURLOPT_POST, 1);
  94. $result_xml = curl_exec($ch);
  95. $result_xml = $response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $result_xml);
  96. $xml = new SimpleXMLElement($result_xml);
  97. $body = $xml->xpath('//ns1callServiceResponse');
  98. $array = json_decode(json_encode((array)$body),true);
  99. $result_xml = json_decode($array[0]['response'],true);
  100. if($result_xml['ask'] == 'Failure')
  101. {
  102. return array('a'=>1,'m'=>$result_xml['message'].':'.$result_xml['Error']['errMessage']);
  103. }
  104. else
  105. {
  106. return array('a'=>2,'number'=>$result_xml['shipping_method_no']);
  107. }
  108. }
  109. public function get_label($number,$type)
  110. {
  111. $appToken = '070c4a24fdeb23fa3e0270858cd2ceda';
  112. $appKey = '070c4a24fdeb23fa3e0270858cd2cedabfd75d1f2e461ee13e69646d3437a302';
  113. $list = array();
  114. $list['reference_no'] = $number;
  115. $list['label_type'] = $type;
  116. $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  117. $xml.='<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org/Ec/">';
  118. $xml.='<SOAP-ENV:Body>';
  119. $xml.='<ns1:callService>';
  120. $xml.='<paramsJson>'.json_encode($list).'</paramsJson>';
  121. $xml.='<appToken>'.$appToken.'</appToken>';
  122. $xml.='<appKey>'.$appKey.'</appKey>';
  123. $xml.='<service>getLabelUrl</service>';
  124. $xml.='</ns1:callService>';
  125. $xml.='</SOAP-ENV:Body>';
  126. $xml.='</SOAP-ENV:Envelope>';
  127. $ch = curl_init();
  128. curl_setopt($ch, CURLOPT_URL, 'http://120.78.181.120/default/svc/web-service');
  129. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  130. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  131. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  132. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  133. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  134. curl_setopt($ch, CURLOPT_POST, 1);
  135. $result_xml = curl_exec($ch);
  136. $result_xml = $response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $result_xml);
  137. $xml = new SimpleXMLElement($result_xml);
  138. $body = $xml->xpath('//ns1callServiceResponse');
  139. $array = json_decode(json_encode((array)$body),true);
  140. $result_xml = json_decode($array[0]['response'],true);
  141. if($result_xml['ask'] == 'Failure')
  142. {
  143. return array('a'=>1,'m'=>$result_xml['Error']['errMessage']);
  144. }
  145. else
  146. {
  147. return array('a'=>2,'pdf'=>$result_xml['url']);
  148. }
  149. }
  150. public function get_ps()//配送方式 getShippingMethod
  151. {
  152. $appToken = '070c4a24fdeb23fa3e0270858cd2ceda';
  153. $appKey = '070c4a24fdeb23fa3e0270858cd2cedabfd75d1f2e461ee13e69646d3437a302';
  154. $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  155. $xml.='<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org/Ec/">';
  156. $xml.='<SOAP-ENV:Body>';
  157. $xml.='<ns1:callService>';
  158. $xml.='<paramsJson>'.json_encode(array('true')).'</paramsJson>';
  159. $xml.='<appToken>'.$appToken.'</appToken>';
  160. $xml.='<appKey>'.$appKey.'</appKey>';
  161. $xml.='<service>getShippingMethod</service>';
  162. $xml.='</ns1:callService>';
  163. $xml.='</SOAP-ENV:Body>';
  164. $xml.='</SOAP-ENV:Envelope>';
  165. $ch = curl_init();
  166. curl_setopt($ch, CURLOPT_URL, 'http://120.78.181.120/default/svc/web-service');
  167. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  168. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  169. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  170. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  171. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  172. curl_setopt($ch, CURLOPT_POST, 1);
  173. $result_xml = curl_exec($ch);
  174. $result_xml = str_replace(array(':','-'), '', $result_xml);
  175. @$result_xml = json_decode(json_encode(simplexml_load_string($result_xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  176. $result_xml = str_replace(array('""','"[','time_cost(s)"','err_code"','"{'),array('":"','":[','time_cost(s)":','err_code":','":{'),$result_xml['SOAPENVBody']['ns1callServiceResponse']['response']);
  177. $result_xml = json_decode($result_xml,true);
  178. return $result_xml;
  179. }
  180. public function get_lj($number,$type)//取消
  181. {
  182. $appToken = '070c4a24fdeb23fa3e0270858cd2ceda';
  183. $appKey = '070c4a24fdeb23fa3e0270858cd2cedabfd75d1f2e461ee13e69646d3437a302';
  184. $list = array();
  185. $list['reference_no'] = $number;
  186. $list['type'] = $type;
  187. $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  188. $xml.='<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org/Ec/">';
  189. $xml.='<SOAP-ENV:Body>';
  190. $xml.='<ns1:callService>';
  191. $xml.='<paramsJson>'.json_encode($list).'</paramsJson>';
  192. $xml.='<appToken>'.$appToken.'</appToken>';
  193. $xml.='<appKey>'.$appKey.'</appKey>';
  194. $xml.='<service>cancelOrder</service>';
  195. $xml.='</ns1:callService>';
  196. $xml.='</SOAP-ENV:Body>';
  197. $xml.='</SOAP-ENV:Envelope>';
  198. $ch = curl_init();
  199. curl_setopt($ch, CURLOPT_URL, 'http://120.78.181.120/default/svc/web-service');
  200. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  201. curl_setopt($ch, CURLOPT_VERBOSE, 1);
  202. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  203. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  204. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  205. curl_setopt($ch, CURLOPT_POST, 1);
  206. $result_xml = curl_exec($ch);
  207. $result_xml = $response = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $result_xml);
  208. $xml = new SimpleXMLElement($result_xml);
  209. $body = $xml->xpath('//ns1callServiceResponse');
  210. $array = json_decode(json_encode((array)$body),true);
  211. $result_xml = json_decode($array[0]['response'],true);
  212. if($result_xml['ask'] == 'Success')
  213. {
  214. return 1;
  215. }
  216. else
  217. {
  218. return $result_xml['Error']['errMessage'];
  219. }
  220. }
  221. } //end class