zoukankan      html  css  js  c++  java
  • YII2 使用快递鸟api跟踪物流查询

    使用快递鸟的api查询物流详情,以此写的类

    <?php
    /*
        * 快递鸟物流
    */
    namespace commonutils;
    
    class Kdniao
    {
        //填写你自己申请的快递鸟的配置
        private $EBusinessID = '000000';
        private $AppKey = 'xxxxxxxxxxxxxx';
        private $ReqURL = 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
    
    
        //nums  物流单号 
        //code  快递公司编号 如 SF 
        public function deliver_search($nums,$code)
        {
            $requestData = array(
                'ShipperCode'   => $code,  
                'LogisticCode'  => $nums,
                'PayType'    => '1',
                'ExpType'    => '1',
                'IsNotice'    => '0'
            );
            $params = json_encode($requestData);
    
            $datas = array(
                'EBusinessID' => $this->EBusinessID,
                'RequestType' => '1002',
                'RequestData' => urlencode($params) ,
                'DataType' => '2',
            );
            $datas['DataSign'] = $this->encrypt($params, $this->AppKey);
            $result = $this->sendPost($this->ReqURL, $datas);
            return json_decode($result,1);
        }
    
    
       /**
         *  post提交数据 
         * @param  string $url 请求Url
         * @param  array $datas 提交的数据 
         * @return url响应返回的html
         */
        private function sendPost($url, $datas) {
            $temps = array();   
            foreach ($datas as $key => $value) {
                $temps[] = sprintf('%s=%s', $key, $value);      
            }   
            $post_data = implode('&', $temps);
            $url_info = parse_url($url);
            if(empty($url_info['port']))
            {
                $url_info['port']=80;   
            }
            $httpheader = "POST " . $url_info['path'] . " HTTP/1.0
    ";
            $httpheader.= "Host:" . $url_info['host'] . "
    ";
            $httpheader.= "Content-Type:application/x-www-form-urlencoded
    ";
            $httpheader.= "Content-Length:" . strlen($post_data) . "
    ";
            $httpheader.= "Connection:close
    
    ";
            $httpheader.= $post_data;
            $fd = fsockopen($url_info['host'], $url_info['port']);
            fwrite($fd, $httpheader);
            $gets = "";
            $headerFlag = true;
            while (!feof($fd)) {
                if (($header = @fgets($fd)) && ($header == "
    " || $header == "
    ")) {
                    break;
                }
            }
            while (!feof($fd)) {
                $gets.= fread($fd, 128);
            }
            fclose($fd);  
            
            return $gets;
        }
    
        /**
         * 电商Sign签名生成
         * @param data 内容   
         * @param appkey Appkey
         * @return DataSign签名
         */
        private function encrypt($data, $appkey) 
        {
            return urlencode(base64_encode(md5($data.$appkey)));
        }
    
    
    
    }
  • 相关阅读:
    Daily Scrum 12.16
    Daily Scrum 12.15
    Daily Scrum 12.14
    Daily Scrum 12.12
    Daily Scrum 12.11
    Pipeline组Beta版本发布说明
    Pipeline组项目Postmortem
    Pipeline组Alpha版本发布说明
    Pipeline组测试说明
    Daily Scrum 11.6
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12979425.html
Copyright © 2011-2022 走看看