Model_dhl-PLT.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <?php
  2. class Model_Dhl extends Lin_Model {
  3. function __construct(){
  4. parent::__construct();
  5. }
  6. public function get_data($data)
  7. {
  8. if($data['pay'] == 1)
  9. {
  10. $data['pay'] == 'PayPal';
  11. }
  12. else if($data['pay'] == 2)
  13. {
  14. $data['pay'] == 'Western Union';
  15. }
  16. else if($data['pay'] == 3)
  17. {
  18. $data['pay'] == '微信';
  19. }
  20. else if($data['pay'] == 4)
  21. {
  22. $data['pay'] == '支付宝';
  23. }
  24. else if($data['pay'] == 5)
  25. {
  26. $data['pay'] == '银行转账';
  27. }
  28. else if($data['pay'] == 6)
  29. {
  30. $data['pay'] == '现金收款';
  31. }
  32. else if($data['pay'] == 7)
  33. {
  34. $data['pay'] == 'PingPong金融';
  35. }
  36. $id = 'XUCHANGLONGY';
  37. $pass = 'dJ84as3ELr';
  38. $sid = '603521441';
  39. $xmend = "\n";
  40. $Pieces = '';
  41. for($i=0;$i<$data['zjs'];$i++)
  42. {
  43. $Pieces .= "<Piece>".$xmend;
  44. $Pieces .= "<PieceID>".($i+1)."</PieceID>".$xmend;
  45. $Pieces .= "<PackageType>EE</PackageType>".$xmend;
  46. $Pieces .= "</Piece>".$xmend;
  47. }
  48. /** 此内容是添加发票信息
  49. $dataadress = array();$baddress = '';$ba1 = '';$ba2 = '';
  50. for($i=5;$i<count($data['baddress']);$i++)
  51. {
  52. $dataadress[] = $data['baddress'][$i];
  53. }
  54. if(count($dataadress) > 1)
  55. {
  56. for($i=0;$i<count($dataadress);$i++)
  57. {
  58. if($i < 2)
  59. {
  60. $ba1 .= $dataadress[$i].',';
  61. }
  62. else
  63. {
  64. $ba2 .= $dataadress[$i].',';
  65. }
  66. }
  67. $baddress .= "<BillToAddressLine>".rtrim($ba1,',')."</BillToAddressLine>".$xmend;
  68. $baddress .= "<BillToAddressLine>".rtrim($ba2,',')."</BillToAddressLine>".$xmend;
  69. }
  70. else
  71. {
  72. for($i=0;$i<count($dataadress);$i++)
  73. {
  74. $ba1 .= $dataadress[$i].',';
  75. }
  76. $baddress .= "<BillToAddressLine>".rtrim($ba1,',')."</BillToAddressLine>".$xmend;
  77. }
  78. **/
  79. $xml = "";
  80. $xml .= "<?xml version='1.0' encoding='UTF-8'?>".$xmend;
  81. $xml .= "<req:ShipmentRequest schemaVersion='6.2' xmlns:req='http://www.dhl.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.dhl.com ship-val-global-req-6.2.xsd'>".$xmend;
  82. $xml .= "<Request>".$xmend;
  83. $xml .= "<ServiceHeader>".$xmend;
  84. $xml .= "<MessageTime>".date('c')."</MessageTime>".$xmend;
  85. $xml .= "<MessageReference>".time().$data['orderinfo'].rand(10000000,99999999)."</MessageReference>".$xmend;
  86. $xml .= "<SiteID>".$id."</SiteID>".$xmend;//DHL账号
  87. $xml .= "<Password>".$pass."</Password>".$xmend;//DHL密码
  88. $xml .= "</ServiceHeader>".$xmend;
  89. $xml .= "<MetaData>".$xmend;
  90. $xml .= "<SoftwareName>LongYi ERP</SoftwareName>".$xmend;
  91. $xml .= "<SoftwareVersion>V1.0.0</SoftwareVersion>".$xmend;
  92. $xml .= "</MetaData>".$xmend;
  93. $xml .= "</Request>".$xmend;
  94. $xml .= "<RegionCode>AP</RegionCode>".$xmend;//地区代码
  95. $xml .= "<LanguageCode>en</LanguageCode>".$xmend;//语言
  96. $xml .= "<PiecesEnabled>Y</PiecesEnabled>".$xmend;
  97. $xml .= "<Billing>".$xmend;
  98. $xml .= "<ShipperAccountNumber>".$sid."</ShipperAccountNumber>".$xmend;
  99. $xml .= "<ShippingPaymentType>S</ShippingPaymentType>".$xmend;
  100. $xml .= "<BillingAccountNumber>".$sid."</BillingAccountNumber>".$xmend;
  101. $xml .= "<DutyPaymentType>R</DutyPaymentType>".$xmend;//R为收件人付关税 S发件人付关税
  102. $xml .= "</Billing>".$xmend;
  103. $xml .= "<Consignee>".$xmend;
  104. $xml .= "<CompanyName>".$data['name']."</CompanyName>".$xmend;//收货人名称
  105. if(strlen($data['address'].$data['address2']) > 44)
  106. {
  107. $adl = $data['address'].$data['address2'];
  108. $adl1 = substr($adl,0,44);//截取44字符前内容
  109. $adlnum = strripos($adl1," ");//查找最后一次出现空格位置
  110. $adl1 = substr($adl,0,$adlnum);//0到空格前之间的内容
  111. $adl2 = substr($adl,$adlnum+1,strlen($adl));//空格后到最后的内容
  112. $xml .= "<AddressLine>".$adl1."</AddressLine>".$xmend;//收货人地址1
  113. $xml .= "<AddressLine>".$adl2."</AddressLine>".$xmend;//收货人地址2
  114. }
  115. else
  116. {
  117. $xml .= "<AddressLine>".$data['address'].$data['address2']."</AddressLine>".$xmend;//收货人地址
  118. }
  119. if($data['street'] != '')
  120. {
  121. $xml .= "<AddressLine>".$data['street']."</AddressLine>".$xmend;//收货人街道
  122. }
  123. $xml .= "<City>".$data['city']."</City>".$xmend;//城市
  124. if($data['lb'] == 'US')
  125. {
  126. $xml .= "<DivisionCode>".$data['province']."</DivisionCode>".$xmend;//州代码,仅美国
  127. }
  128. $xml .= "<PostalCode>".trim($data['zipcode'],' ')."</PostalCode>".$xmend;//邮编
  129. $xml .= "<CountryCode>".$data['lb']."</CountryCode>".$xmend;//国家代码
  130. $xml .= "<CountryName>".$data['country']."</CountryName>".$xmend;//国家名称
  131. $xml .= "<Contact>".$xmend;
  132. $xml .= "<PersonName>".$data['client']."</PersonName>".$xmend;//名称
  133. $xml .= "<PhoneNumber>".preg_replace('/\D/s','',$data['phone'])."</PhoneNumber>".$xmend;//联系方式
  134. //$xml .= "<Email>".$data['email']."</Email>".$xmend;//联系邮箱
  135. $xml .= "</Contact>".$xmend;
  136. $xml .= "</Consignee>".$xmend;
  137. $xml .= "<Commodity>".$xmend;//多商品循环此外层标签及内层标签
  138. $xml .= "<CommodityCode>".$data['sbbm']."</CommodityCode>".$xmend;//商品编码
  139. $xml .= "<CommodityName>".$data['sbpm']."</CommodityName>".$xmend;//商品名称
  140. $xml .= "</Commodity>".$xmend;
  141. $xml .= "<Dutiable>".$xmend;
  142. $xml .= "<DeclaredValue>".$data['zsbjz']."</DeclaredValue>".$xmend;//申报价值
  143. $xml .= "<DeclaredCurrency>".$data['currencytitle']."</DeclaredCurrency>".$xmend;//货币代码
  144. $xml .= "</Dutiable>".$xmend;
  145. /** 发票信息开始 **/
  146. $xml .= "<UseDHLInvoice>Y</UseDHLInvoice>".$xmend;
  147. $xml .= "<DHLInvoiceLanguageCode>en</DHLInvoiceLanguageCode>".$xmend;
  148. $xml .= "<DHLInvoiceType>CMI</DHLInvoiceType>".$xmend;
  149. $xml .= "<ExportDeclaration>".$xmend;
  150. $xml .= "<ExportReasonCode>P</ExportReasonCode>".$xmend;
  151. $xml .= "<InvoiceNumber>".$data['paypal'].' '.$data['pay']."</InvoiceNumber>".$xmend;
  152. $xml .= "<InvoiceDate>".date('Y-m-d',time())."</InvoiceDate>".$xmend;
  153. /**
  154. $xml .= "<BillToCompanyName>".$data['client']."</BillToCompanyName>".$xmend;
  155. $xml .= "<BillToContanctName>".$data['client']."</BillToContanctName>".$xmend;//账单名称
  156. $xml .= $baddress;//地址
  157. $xml .= "<BillToCity>".$data['baddress'][4]."</BillToCity>".$xmend;//城市
  158. $xml .= "<BillToPostcode>".$data['baddress'][2]."</BillToPostcode>".$xmend;//邮编
  159. $xml .= "<BillToSuburb/>".$xmend;//所在郊区
  160. if($data['baddress'][1] == 'United States')
  161. {
  162. $xml .= "<BillToState>".$data['baddress'][3]."</BillToState>".$xmend;//省、州
  163. }
  164. $xml .= "<BillToCountryName>".$data['baddress'][1]."</BillToCountryName>".$xmend;//国家
  165. $xml .= "<BillToPhoneNumber>".preg_replace('/\D/s','',$data['baddress'][0])."</BillToPhoneNumber>".$xmend;//号码
  166. **/
  167. $xml .= "<ExportLineItem>".$xmend;
  168. $xml .= "<LineNumber>1</LineNumber>".$xmend;//顺序号
  169. $xml .= "<Quantity>".$data['ts']."</Quantity>".$xmend;//数量
  170. $xml .= "<QuantityUnit>PCS</QuantityUnit>".$xmend;//单位
  171. $xml .= "<Description>".$data['sbpm']."</Description>".$xmend;//品名
  172. $xml .= "<Value>".$data['dtsbjz']."</Value>".$xmend;//单价
  173. $xml .= "<IsDomestic>Y</IsDomestic>".$xmend;//是否国产,Y本国,N国外
  174. $xml .= "<CommodityCode>".$data['sbbm']."</CommodityCode>".$xmend;//品名编码
  175. $xml .= "<Weight>".$xmend;
  176. $xml .= "<Weight>".$data['zzl']."</Weight>".$xmend;//净重
  177. $xml .= "<WeightUnit>K</WeightUnit>".$xmend;//重量单位,K千克
  178. $xml .= "</Weight>".$xmend;
  179. $xml .= "<GrossWeight>".$xmend;
  180. $xml .= "<Weight>".$data['zzl']."</Weight>".$xmend;//毛重
  181. $xml .= "<WeightUnit>K</WeightUnit>".$xmend;//毛重单位,K千克
  182. $xml .= "</GrossWeight>".$xmend;
  183. $xml .= "<ManufactureCountryName>CN</ManufactureCountryName>".$xmend;//原产国名称
  184. $xml .= "</ExportLineItem>".$xmend;
  185. $xml .= "</ExportDeclaration>".$xmend;
  186. /** 发票信息结束 **/
  187. $xml .= "<Reference>".$xmend;
  188. $xml .= "<ReferenceID>".$data['number']."</ReferenceID>".$xmend;
  189. $xml .= "</Reference>".$xmend;
  190. $xml .= "<ShipmentDetails>".$xmend;
  191. $xml .= "<NumberOfPieces>".$data['zjs']."</NumberOfPieces>".$xmend;
  192. $xml .= "<Pieces>".$xmend;
  193. $xml .= $Pieces;
  194. $xml .= "</Pieces>".$xmend;
  195. $xml .= "<Weight>".$data['zzl']."</Weight>".$xmend;
  196. $xml .= "<WeightUnit>K</WeightUnit>".$xmend;
  197. $xml .= "<GlobalProductCode>P</GlobalProductCode>".$xmend;
  198. $xml .= "<LocalProductCode>P</LocalProductCode>".$xmend;
  199. $xml .= "<Date>".date('Y-m-d',time())."</Date>".$xmend;
  200. $xml .= "<Contents>".$data['sbpm']."</Contents>".$xmend;//内容
  201. $xml .= "<DoorTo>DD</DoorTo>".$xmend;
  202. $xml .= "<DimensionUnit>C</DimensionUnit>".$xmend;
  203. $xml .= "<InsuredAmount>".$data['bx']."</InsuredAmount>".$xmend;//保险金额
  204. $xml .= "<PackageType>EE</PackageType>".$xmend;
  205. $xml .= "<IsDutiable>Y</IsDutiable>".$xmend;
  206. $xml .= "<CurrencyCode>".$data['currencytitle']."</CurrencyCode>".$xmend;//货币代码
  207. $xml .= "</ShipmentDetails>".$xmend;
  208. $xml .= "<Shipper>".$xmend;
  209. $xml .= "<ShipperID>".$sid."</ShipperID>".$xmend;
  210. $xml .= "<CompanyName>".$data['warehouse']['company']."</CompanyName>".$xmend;//发货公司名称
  211. $xml .= "<AddressLine>".$data['warehouse']['address']."</AddressLine>".$xmend;//发货地址
  212. $xml .= "<AddressLine>".$data['warehouse']['address2']."</AddressLine>".$xmend;//发货地址
  213. $xml .= "<AddressLine>".$data['warehouse']['province']."</AddressLine>".$xmend;//发货省、州
  214. $xml .= "<City>".$data['warehouse']['city']."</City>".$xmend;//发货城市
  215. $xml .= "<PostalCode>".$data['warehouse']['zipcode']."</PostalCode>".$xmend;
  216. $xml .= "<CountryCode>".$data['warehouse']['lb']."</CountryCode>".$xmend;//发货国家代码
  217. $xml .= "<CountryName>".$data['warehouse']['country']."</CountryName>".$xmend;//发货国家名称
  218. $xml .= "<Contact>".$xmend;
  219. $xml .= "<PersonName>".$data['warehouse']['company']."</PersonName>".$xmend;//发货人名称
  220. $xml .= "<PhoneNumber>".preg_replace('/\D/s','',$data['warehouse']['phone'])."</PhoneNumber>".$xmend;//发货人电话
  221. $xml .= "</Contact>".$xmend;
  222. $xml .= "</Shipper>".$xmend;
  223. /** 无纸化 PLT 开始 **/
  224. $xml .= "<SpecialService>".$xmend;
  225. $xml .= "<SpecialServiceType>WY</SpecialServiceType>".$xmend;
  226. $xml .= "</SpecialService>".$xmend;
  227. /** 无纸化 PLT 结束 **/
  228. if($data['bx'] > 0)
  229. {
  230. $xml .= "<SpecialService>".$xmend;
  231. $xml .= "<SpecialServiceType>II</SpecialServiceType>".$xmend;
  232. $xml .= "</SpecialService>".$xmend;
  233. }
  234. $xml .= "<LabelImageFormat>PDF</LabelImageFormat>".$xmend;
  235. /** 无纸化 PLT 启用这个 **/
  236. $xml .= "<RequestArchiveDoc>N</RequestArchiveDoc>".$xmend;
  237. /** 无纸化 PLT 启用这个 **/
  238. /** 无纸化 PLT 关闭这个
  239. $xml .= "<RequestArchiveDoc>Y</RequestArchiveDoc>".$xmend;
  240. $xml .= "<NumberOfArchiveDoc>1</NumberOfArchiveDoc>".$xmend;
  241. **/
  242. $xml .= "<Label>".$xmend;
  243. $xml .= "<HideAccount>N</HideAccount>".$xmend;
  244. $xml .= "<LabelTemplate>8X4_PDF</LabelTemplate>".$xmend;
  245. $xml .= "<Resolution>200</Resolution>".$xmend;
  246. $xml .= "</Label>".$xmend;
  247. $xml .= "</req:ShipmentRequest>".$xmend;
  248. $ch = curl_init();
  249. curl_setopt($ch, CURLOPT_URL,'https://xmlpi-ea.dhl.com/XMLShippingServlet');
  250. curl_setopt($ch, CURLOPT_POST, 1);
  251. curl_setopt($ch, CURLOPT_HEADER, 0);
  252. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  253. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  254. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  255. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  256. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  257. $data = curl_exec($ch);
  258. curl_close($ch);
  259. $data = utf8_encode($data);
  260. libxml_disable_entity_loader(true);
  261. @$values = json_decode(json_encode(simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
  262. return $values;
  263. }
  264. } //end class