快遞鳥查詢訂單例項

流浪2024發表於2024-10-30
<?php
/**
 * @技術QQ群: 可登入官網https://www.kdniao.com/右側檢視技術群號
 * @see: https://kdniao.com/api-track
 * @copyright: 深圳市快金資料技術服務有限公司
 * ID和Key請到官網申請:https://kdniao.com/reg



 * 即時查詢介面
 * 此介面用於向快遞公司實時查詢物流軌跡資訊。該功能支援情況需檢視技術文件。
 * 正式地址:https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx
 *
 *
 * 系統級引數
 * RequestData       String    R    請求內容為JSON格式 詳情可參考介面技術文件:https://www.kdniao.com/documents
 * EBusinessID       String    R    使用者ID
 * RequestType       String    R    請求介面指令
 * DataSign           String    R    資料內容簽名,加密方法為:把(請求內容(未編碼)+ApiKey)進行MD5加密--32位小寫,然後Base64編碼,最後進行URL(utf-8)編碼
 * DataType           String    R    DataType=2,請求、返回資料型別均為JSON格式


 * 應用級引數
 * R-必填(Required),O-可選(Optional),C-報文中該引數在一定條件下可選(Conditional)
 * OrderCode      String(30)    O    訂單編號
 * ShipperCode      String(10)    R    快遞公司編碼  詳細編碼參考《快遞鳥介面支援快遞公司編碼.xlsx》 https://www.kdniao.com/documents
 * LogisticCode      String(30)    R    快遞單號
 * CustomerName      String(50)    C    ShipperCode為SF時必填,對應寄件人/收件人手機號後四位;ShipperCode為其他快遞時,可不填或保留欄位,不可傳值

 * 請求示例
 * ZTO請求示例:
 * {
 * "OrderCode": "",
 * "ShipperCode": "ZTO",
 * "LogisticCode": "638650888018",
 * }
 *
 * JD請求示例:
 * {
 * "OrderCode": "",
 * "CustomerName": "",
 * "ShipperCode": "JD",
 * "LogisticCode": "JDVA00003618100",
 * }
 *
 * SF請求示例:
 * {
 * "OrderCode": "",
 * "CustomerName": "1234",
 * "ShipperCode": "SF",
 * "LogisticCode": "SF00003618100",
 * }
 */



//使用者ID,快遞鳥提供,注意保管,不要洩漏
defined('EBusinessID') or define('EBusinessID', '888888');//即使用者ID,登入快遞鳥官網會員中心獲取 https://www.kdniao.com/UserCenter/v4/UserHome.aspx 
//API key,快遞鳥提供,注意保管,不要洩漏
defined('ApiKey') or define('ApiKey', 'c2fb3a23-de82-418c-9411-1234567890');//即API key,登入快遞鳥官網會員中心獲取 https://www.kdniao.com/UserCenter/v4/UserHome.aspx
//請求url,正式地址
defined('ReqURL') or define('ReqURL', 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx');

$CustomerName = $_REQUEST['CustomerName'];
$ShipperCode = 'JTSD';
$LogisticCode = 'JT2097977556048';

$logisticResult = getOrderTracesByJson($CustomerName,$ShipperCode,$LogisticCode);
echo $logisticResult;


function getOrderTracesByJson($CustomerName='',$ShipperCode,$LogisticCode){
  // 組裝應用級引數
    $requestData = [
        "CustomerName" =>$CustomerName,
        "OrderCode"    =>'',
        "ShipperCode"  =>$ShipperCode,
        "LogisticCode" =>$LogisticCode
    ];
    $requestData = json_encode($requestData);
//    var_dump($requestData);die;
  // 組裝系統級引數
    $datas = array(
        'EBusinessID' => EBusinessID,
        'RequestType' => '1002', //免費即時查詢介面指令1002/在途監控即時查詢介面指令8001/地圖版即時查詢介面指令8003
        'RequestData' => urlencode($requestData) ,
        'DataType' => '2',
    );
    $datas['DataSign'] = encrypt($requestData, ApiKey);
  //以form表單形式提交post請求,post請求體中包含了應用級引數和系統級引數
    $result=sendPost(ReqURL, $datas);    
    
    //根據公司業務處理返回的資訊......
    
    return $result;
}
 
/**
 *  post提交資料 
 * @param  string $url 請求Url
 * @param  array $datas 提交的資料 
 * @return url響應返回的html
 */
function sendPost($url, $datas) {
    $postdata = http_build_query($datas);
    $options = array(
      'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $postdata,
        'timeout' => 15 * 60 // 超時時間(單位:s)
      )
    );
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}

/**
 * 電商Sign簽名生成
 * @param data 內容   
 * @param ApiKey ApiKey
 * @return DataSign簽名
 */
function encrypt($data, $ApiKey) {
    return urlencode(base64_encode(md5($data.$ApiKey)));
}

?>

相關文章