PHP快遞單號查詢接口源碼指導 (快遞鳥API)

背景

最近進行網站後臺開發,需要實現物流的即時查詢, 爲了方便以後的業務需求,經過比較,最後選擇使用第三方快遞查詢接口服務商 ——【快遞鳥】
同時,在此進行整理,希望能幫到有需求的道友們,謝謝 ...
官方文檔: 快遞鳥 —— 即時查詢API
開發框架:ThinkPHP5.1.2
開發步驟

①. 前期準備
首先要進行快遞鳥賬號的註冊

快遞單號查詢接口_電子面單_APIKey授權申請-快遞鳥賬號註冊

快遞鳥API key免費註冊

並根據對方的要求,完善用戶申請。
然後,根據自己的需求,開通所需服務(如果只是進行物流信息的查詢,以當前業務查詢次數較少爲例):

②. 集成類的使用
首先需要登錄 快遞鳥 ,獲取賬號的 用戶ID和 API key
註冊完成後登入,進入到個人中心,這裏需要進行一個實名認證,按公司產品的類型進行一個選擇,展示頁面如下圖

快遞鳥實名認證
認證完成後在我的產品服務中選擇自己所需要的服務,當然對於初創型公司來說選擇免費版就夠了,等到業務做大時再選擇其他產品服務

還有就是在個人中心中如下圖所示,我們需要記住的是用戶ID,和API key(不要泄露),這將是我們進行接口調用時需要用到的,

對所提供源碼中的 集成類 BirdExpress.php,進行配置項的==替換操作==

然後
將集成類整合到你的項目框架,根據框架規則進行必要修改(框架不同規則自然多數不同,本人爲 ThinkPHP5.1.2)
下圖爲簡單的調用測試:

③. 核心處理方法源碼

首先,官方的代碼 demo獲得的物流信息是==正序展示==的
爲了方便物流信息的倒序展示,我進行了對數組Traces的==反轉操作==

/**
 * 核心方法
 * Json方式 查詢訂單物流軌跡
 * @param string $ShipperCode 快遞公司編碼
 * @param string $LogisticCode 物流單號
 * @param int $arrayFlag 是否進行數組轉化標誌 默認0:否  1:轉化
 * 參考規則舉例:
 * $requestData = "{'OrderCode':'','ShipperCode':'ZTO','LogisticCode':'640041334612'}";
 * @return result 包含即時物流信息的 Json數據
 */
public function getOrderTracesByJson($ShipperCode = "",$LogisticCode = "",$arrayFlag = 0)
{
    $requestData = "{   
                        'OrderCode':'',
                        'ShipperCode':'$ShipperCode',
                        'LogisticCode':'$LogisticCode'
                    }";
    $postData = array(
        'EBusinessID' => $this->EBusinessID,
        'RequestType' => '1002',//接口指令1002
        'RequestData' => urlencode($requestData),
        'DataType' => '2',
    );
    $postData['DataSign'] = $this->encrypt($requestData, $this->AppKey);
    $result = $this->sendPost($this->ReqURL, $postData);
    //根據公司業務處理返回的信息......
    if ($arrayFlag){
        $result = json_decode($result,true);
        //TODO 方便物流信息的倒序展示,進行數組反轉
        $result['Traces'] = array_reverse($result['Traces']);
    }
    return $result;
}

④. 效果展示截圖

通過上面核心源碼的展示,你應該會注意到
調用其方法,必須要傳入 ==快遞公司編碼== 和 ==物流單號== 這兩個參數
好在,官方提供了 快遞公司編碼, 所以,鄙人的設計思路如下:

  1. 根據官方提供的快遞公司編碼Excel表,取出其中的 "快遞公司"和"編碼"兩列數據存儲到本地數據表 ,如果使用的快遞數量較集中,可以自己建表輸入 ,如果是通用性的快遞使用,建議直接對excel錶轉化爲mysql(或其他數據表)存儲

如果需要進行 excel表的導入操作,可直接參考對應文章: ThinkPHP5.1 excel表的導入導出操作 (PHPExcel)

  1. 在後臺操作人員輸入快遞單號時 同時要求選擇快遞公司,獲得 "編碼" 從而保證,在數據表中,存儲的快遞單號唯一匹配到一個編碼,繼而方便後面進行快遞信息查詢時,可同時獲得所需的兩個參數。

源碼上傳 >>>

附錄
爲什麼我選擇使用快遞鳥API

首先,我擁有一個,測試物流單號:640041334612 (中通快遞),然後使用多個快遞查詢服務,效果如下:

通過比較發現:

  1. "快遞100" 沒有查到結果; "愛查快遞" 得出的結果並不是真實的物流信息
  2. "快遞網" 能查到快遞信息,但是詢問服務人員時知曉: 要麼網站上添加對方鏈接(我的管理後臺以及小程序、app是不能這樣玩的);要麼需要進行套餐定製,最低的大概一年1000 —— (前期網站是不需要那麼大的 查詢業務的,感覺浪費),而且,我不喜歡官網的設計風格(任性了)
  3. "快遞鳥",最讓我動心的是那個 "限3000次/天(即時查詢)" 是免費的 , 對於業務量前期不大的網站足夠使用,即便後期有需要,也可以直接進行套餐升級
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章