zoukankan      html  css  js  c++  java
  • PHP 快递单号查询api接口源码指导

    快递查询源码

    背景

    • 最近进行网站后台开发,需要实现物流的即时查询,发现之前集成的 快递100物流查询 API ——【PHP 快递查询源码资源】 已经不能正常使用了; 为了方便以后的业务需求,经过比较,最后选择使用 第三方物流 ——【快递鸟】
    • 同时,在此进行整理,希望能帮到有需求的博友们,谢谢 …
    • 官方文档: 快递鸟 —— 即时查询API

    ①. 前期准备

    • 首先要进行快递鸟账号的注册 

      并根据对方的要求,完善用户申请。

      然后,根据自己的需求,开通所需服务(如果只是进行物流信息的查询,以当前业务查询次数较少为例):

    集成类的使用

    • 首先需要登录 快递鸟 

      获取账号的 用户ID 和 API key

      对所提供源码中的 集成类 BirdExpress.php ,进行配置项的替换操作

    • 然后

      将集成类整合到你的项目框架,根据框架规则进行必要修改(框架不同规则自然多数不同,本人为 ThinkPHP5.1.2

      下图为简单的调用测试:

    • 注意【2019.06.10 补充】:

     测试发现,线上的 linux 系统下无法识别命名空间大小写情况,在此建议 namespace APPapicontroller,都改成小写字母

    核心处理方法源码

    • 首先,官方的代码 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. 在后台操作人员输入快递单号时
       同时要求选择快递公司,获得 "编码"
       从而保证,在数据表中,存储的快递单号唯一匹配到一个编码,继而方便后面进行快递信息查询时,可同时获得所需的两个参数.
    

    ☞ >>> 源码上传 >>>

  • 相关阅读:
    接口自动化HttpRunner框架流程简介
    常用接口自动化工具框架
    接口自动化 python+request
    locust安装(性能测试)
    mac查看python的安装路径
    LA4119
    UVa11361
    求逆元
    欧拉phi函数
    快速幂
  • 原文地址:https://www.cnblogs.com/kdn2019/p/11654582.html
Copyright © 2011-2022 走看看