获取顺丰快递单号接口(PHP demo)
演示demo 2016-07-21 10:31:45 接口   帝国CMS   

WEBSERVICE地址:
http://bsp-ois.sit.sf-express.com:9080/bsp-ois/ws/sfexpressService?wsdl
或者
https://bsp-ois.sit.sf-express.com:9443/bsp-ois/ws/sfexpressService?wsdl

HTTP/POST地址:
http://bsp-ois.sit.sf-express.com:9080/bsp-ois/sfexpressService
或者
https://bsp-ois.sit.sf-express.com:9443/bsp-ois/sfexpressServic

 

API PDF:https://open.sf-express.com/doc/sf_openapi_document_V1.pdf

 

开发环境接入编码:BSPdevelop
开发环境 Checkword:j8DzkIFgmlomPt0aLuwU

月结卡号 9999999999  测试专用

 

这里是以表单的形式post过来的,也可以根据订单号,获取这些信息,改一下就行

 

PHP Code复制内容到剪贴板
  1. //==================================================================  
  2. //功能:   获取顺丰快递运单号  
  3. //参数:     
  4. /**  
  5.  * 推送订单 (to 顺丰)  
  6.  * orderId              订单号  
  7.  * j_company            寄件方公司名称  
  8.  * j_contact            寄件方联系人  
  9.  * j_tel                寄件方联系电话  
  10.  * j_address            寄件地址  
  11.  * j_province           寄件方省份 (选填) 
  12.  * j_city               寄件方城市 (选填) 
  13.  * d_company            到件方公司名称 (选填) 
  14.  * d_contact            到件方联系人  
  15.  * d_tel                到件方联系电话  
  16.  * d_address            到件方地址  
  17.  * d_province           到件方省份 (选填) 
  18.  * d_city               到件方城市 (选填) 
  19.  * name                 商品名称(选填)  
  20.  * mailno               运单号 (选填) 
  21.  **/    
  22. //==================================================================  
  23. //顺丰物流  
  24. /*orderservice   routeservice*/  
  25. private $BSP_head = 'BSPdevelop';                                                      //客户卡号,校验码  
  26. private $BSP_url = 'http://bspoisp.sit.sf-express.com:11080/bsp-oisp/sfexpressService';  //快递类服务接口url  
  27. private $BSP_checkWord = 'j8DzkIFgmlomPt0aLuwU'//checkbody  
  28.   
  29. function getBSPexpress($post){  
  30.    
  31.     //转换参数形式  
  32.     foreach ($post as $kp=>$p) {  
  33.         $$kp = $p;  
  34.     };  
  35.   
  36.     $body = '<?xml version="1.0" encoding="UTF-8" ?><Request service="OrderService" lang="zh-CN"><Head>'.$this->BSP_head.'</Head><Body><Order orderid="'.$orderId.'" express_type="1" j_company="'.$j_company.'" j_contact="'.$j_contact.'" j_tel="'.$j_tel.'" j_address="'.$j_address.'" d_company="'.$d_company.'" d_contact="'.$d_contact.'" d_tel="'.$d_tel.'" d_address="'.$d_address.'" parcel_quantity="1" pay_method="" custid="" j_shippercode="" d_deliverycode="" cargo_total_weight="" sendstarttime="" mailno="" remark="测试" need_return_tracking_no="1" /></Order></Body></Request>';          
  37.   
  38.     $newbody = $body.$this->BSP_checkWord;         
  39.       
  40.   
  41.     $md5 =  md5($newbody,true);      
  42.     $verifyCode = base64_encode($md5);    
  43.     $fields = array('xml'=>$body,'verifyCode'=>$verifyCode);    
  44.     $parambody =  http_build_query($fields'''&');    
  45.     $res = $this->post2($this->BSP_url,$parambody);  
  46.     if(!$res){    
  47.         return Message(400,'error','获取超时,请重试','');  
  48.     }  
  49.     $parseXml = parseXml::getInstance();  
  50.     $newAry = $parseXml->xmlToArray($res);    
  51.     return Message(200,'success','',$newAry);   
  52. }  
  53.   
  54. //顺丰快递发送xml报文使用    
  55. function post2($url,$params)     
  56. {     
  57.      $curlObj = curl_init();    
  58.      curl_setopt($curlObj, CURLOPT_URL, $url); // 设置访问的url    
  59.      curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); //curl_exec将结果返回,而不是执行    
  60.      curl_setopt($curlObj, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded;charset=UTF-8"));    
  61.      curl_setopt($curlObj, CURLOPT_URL, $url);    
  62.      curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, FALSE);    
  63.      curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, FALSE);    
  64.      curl_setopt($curlObj, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);    
  65.         
  66.      curl_setopt($curlObj, CURLOPT_CUSTOMREQUEST, 'POST');          
  67.         
  68.      curl_setopt($curlObj, CURLOPT_POST, true);    
  69.      curl_setopt($curlObj, CURLOPT_POSTFIELDS, $params);           
  70.      curl_setopt($curlObj, CURLOPT_ENCODING, 'gzip');    
  71.   
  72.      $res = @curl_exec($curlObj);    
  73.          
  74.      curl_close($curlObj);    
  75.   
  76.      if ($res === false) {    
  77.            $errno = curl_errno($curlObj);    
  78.            if ($errno == CURLE_OPERATION_TIMEOUTED) {    
  79.                $msg = "Request Timeout:   seconds exceeded";    
  80.            } else {    
  81.                $msg = curl_error($curlObj);    
  82.            }    
  83.            echo $msg;    
  84.            $e = new XN_TimeoutException($msg);               
  85.            throw $e;    
  86.        }     
  87.     return $res;    
  88. }    

 

解析XML类:

PHP Code复制内容到剪贴板
  1. <?php  
  2. class parseXml{  
  3.     private static $instance;  
  4.   
  5.     public static function getInstance() {  
  6.         if (is_null ( self::$instance )) {  
  7.             self::$instance = new parseXml();  
  8.         }  
  9.         return self::$instance;  
  10.     }  
  11.   
  12.     /**  
  13.      * XML文档转为数组  
  14.      * @param string $xml XML文档字符串  
  15.      * @return array  
  16.      */    
  17.     public static function xmlToArray($xml) {    
  18.         return $xml ? self::xmlToArrayElement(simplexml_load_string($xml'SimpleXMLElement', LIBXML_NOCDATA)) : array();    
  19.     }    
  20.     
  21.     /**  
  22.      * xml文档转为数组元素  
  23.      * @param obj $xmlobject XML文档对象  
  24.      * @return array  
  25.      */    
  26.     public static function xmlToArrayElement($xmlobject) {    
  27.         $data = array();    
  28.         foreach ((array$xmlobject as $key => $value) {    
  29.             $data[$key] = !is_string($value) ? self::xmlToArrayElement($value) : $value;    
  30.         }    
  31.         return $data;    
  32.     }    
  33.   
  34. }  
  35. ?>  

 

 

b7ed35e0-90f8-42d5-85d2-9a142101e331.png

 如果订单号一直不变,会返回重复下单,而不是返回相同的订单信息如:

58369099-73b3-4c50-9a1a-5600e15c6325.png

本文来自于:http://www.yoyo88.cn/demo/21.html

Powered by yoyo苏ICP备15045725号-1