zoukankan      html  css  js  c++  java
  • 快递鸟物流对接--电商

    一、准备阶段

      你需要自己去快递鸟注册信息,或者是公司会给你对接接口所需要的EBusinessID、AppKey (这个必须有,没有的话还搞什么)

      在官网可下载接口文档、快递公司的编码(这个也得有,没有怎么查)
      

    二、代码示例(这个可以直接拿来用,将你的参数改一改就可以了)

        public $ReqURL='https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
        public $EBusinessID='1111111';
        public $AppKey='111111111111111111111111';
    
        public function getOrderTracesByJson($customerName,$key,$number){
            // 组装应用级参数
            $requestData= "{".
                "'CustomerName': '$customerName',".
                "'OrderCode': '',".
                "'ShipperCode': '$key',".
                "'LogisticCode': '$number',".
                "}";
            // 组装系统级参数
            $datas = array(
                'EBusinessID' => $this->EBusinessID,
                'RequestType' => '8001', //免费即时查询接口指令1002/在途监控即时查询接口指令8001/地图版即时查询接口指令8003
                'RequestData' => urlencode($requestData) ,
                'DataType' => '2',
            );
            $datas['DataSign'] = $this->encrypt($requestData, $this->AppKey);
            //以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数
            $result = json_decode($this->sendPost($this->ReqURL, $datas),1);
            if ($result){
                if( $result['Success'] === false ) {
                    $traces[$key]['alttime'] = date('Y-m-d H:i:s',time());
                    $traces[$key]['log_text'] = $result['Reason'];
                }
                if ($result['Success'] === true ){
                    if( $result['State'] == '0' ) {
                        $traces[$key]['alttime'] = date('Y-m-d H:i:s',time());
                        $traces[$key]['log_text'] = $result['Reason'];
                    }
                    $traces = array();
                    if($result['Traces']){
                             foreach( $result['Traces'] as $key=>$value) {
                                 $traces[$key]['alttime'] = $value['AcceptTime'];
                                 $traces[$key]['log_text'] = strip_tags($value['AcceptStation']);
                             }
                             if ($result['State'] == 3){
                                 $traces['State']=$result['State'];
                             }
                             return $traces;
                    }else{
                        $traces[$key]['alttime'] = date('Y-m-d H:i:s',time());
                        $traces[$key]['log_text'] = '查询失败,请到快递公司官网查询';
                    }
                }
            }else{
                $traces[$key]['alttime'] = date('Y-m-d H:i:s',time());
                $traces[$key]['log_text'] = '查询失败,请到快递公司官网查询';
            }
        }
    
    
        /**
         *  post提交数据
         * @param  string $url 请求Url
         * @param  array $datas 提交的数据
         * @return url响应返回的html
         */
        public 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签名
         */
        public function encrypt($data, $ApiKey) {
            return urlencode(base64_encode(md5($data.$ApiKey)));
        }

    注释:$customerName -- 如果是顺丰的话需要发货人或者收件人的手机号后四位,其他快递不需要

       $key -- 快递公司编号(eg:STO   SF   JD)

       $number -- 物流单号

       getOrderTracesByJson,这个方法里面我根据实际需要将数据进行了一些修改,可以根据自己的业务需要进行修改

  • 相关阅读:
    快速分栏
    伪元素:before和:after的简单应用——清除浮动
    C# 调用事件
    C# 创建文件夹
    (C#-VisionPro)用代码方式新建VisionPro视觉文件(.vpp)
    C# 选择下拉框文件时触发
    C# 将指定目录下的文件夹名称加载到下拉框中
    (C#-VisionPro)用C#加载、保存ViaionPro的'.vpp'文件
    C# 关闭程序时保存程序数据
    (C#-VisionPro)用C#调用VisionPro保存的.vpp文件
  • 原文地址:https://www.cnblogs.com/cyxng/p/15294400.html
Copyright © 2011-2022 走看看