PHP 快遞查詢源碼指導 (快遞鳥API)

☞ 背景

  • 最近進行網站後臺開發,需要實現物流的即時查詢,發現之前集成的 快遞100物流查詢 API ——【PHP 快遞查詢源碼資源】 已經不能正常使用了; 爲了方便以後的業務需求,經過比較,最後選擇使用 第三方物流 ——【快遞鳥
  • 同時,在此進行整理,希望能幫到有需求的道友們,謝謝 …

官方文檔: 快遞鳥 —— 即時查詢API
開發框架:ThinkPHP5.1.2

  • 【提示】(2020-02-09)
    當前,免費版只可以支持三通物流信息的查詢,如果想查詢其他物流信息,需購買其他產品服務;同時升級購買後根據技術對接,尚需要進行必要參數的修整,針對京東、順豐物流注意CustomerName參數的補充

☞ 開發步驟

①. 前期準備

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

②. 集成類的使用

  • 首先需要登錄 快遞鳥
    獲取賬號的 用戶IDAPI key
    對所提供源碼中的 集成類 BirdExpress.php ,進行配置項的替換操作
  • 然後
    將集成類整合到你的項目框架,根據框架規則進行必要修改(框架不同規則自然多數不同,本人爲 ThinkPHP5.1.2
    下圖爲簡單的調用測試:
  • 注意【2019.06.10 補充】:

測試發現,線上的 Linux 系統下無法識別命名空間大小寫情況,在此建議 namespace app\api\Controller,都改成小寫字母

③. 核心處理方法源碼

  • 首先,官方的代碼 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)

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

>>> 源碼上傳 >>>

☞ 附錄

①. 個人請求

  • 希望道友們能在這個【PHP 快遞查詢 - 源碼資源】下,給個評論,就說 :

    "樓主表示:代碼已過期,不能正常使用了,請不要再下載了!"

—— 即便我刪掉了原先的博客,依然有人能通過其他路徑找到 !? 我也奇怪,爲什麼自己上傳的資源,CSDN 不允許刪除呢?

②. 爲什麼我選擇使用 快遞鳥API

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

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

③. 參考文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章