zoukankan      html  css  js  c++  java
  • PHP接入快递鸟查询快递

    今天做物流查询,用到了快递鸟.
    首先去快递鸟官网注册一个账号,然后进行实名认证.认证完之后进会员中心.
    会员中心
    这里有用户id和api key.
    在右侧技术支持中有一个API开发指南.
    新客户开发指南
    之前已经实名认证过了,直接点击技术文档
    demo下载
    我现在用的是PHP,下载PHP版的.

    <?php
    //电商ID
    defined('EBusinessID') or define('EBusinessID', '请到快递鸟官网申请http://kdniao.com/reg');
    //电商加密私钥,快递鸟提供,注意保管,不要泄漏
    defined('AppKey') or define('AppKey', '请到快递鸟官网申请http://kdniao.com/reg');
    //请求url
    defined('ReqURL') or define('ReqURL', 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx');
    
    //调用查询物流轨迹
    //---------------------------------------------
    
    $logisticResult=getOrderTracesByJson();
    echo $logisticResult;
    
    //---------------------------------------------
     
    /**
     * Json方式 查询订单物流轨迹
     */
    function getOrderTracesByJson(){
    	$requestData= "{'OrderCode':'','ShipperCode':'YTO','LogisticCode':'12345678'}";
    	
    	$datas = array(
            'EBusinessID' => EBusinessID,
            'RequestType' => '1002',
            'RequestData' => urlencode($requestData) ,
            'DataType' => '2',
        );
        $datas['DataSign'] = encrypt($requestData, AppKey);
    	$result=sendPost(ReqURL, $datas);	
    	
    	//根据公司业务处理返回的信息......
    	
    	return $result;
    }
     
    /**
     *  post提交数据 
     * @param  string $url 请求Url
     * @param  array $datas 提交的数据 
     * @return url响应返回的html
     */
    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签名
     */
    function encrypt($data, $appkey) {
        return urlencode(base64_encode(md5($data.$appkey)));
    }
    
    ?>
    

    这里的EBusinessID的值和AppKey的值就是会员中心那个页面的用户id和api key

    在getOrderTracesByJson()方法中的ShipperCode是快递公司的编码,可以在快递鸟里面下载快递公司编码
    快递公司编码

    LogisticCode是快递单号

    改一下EBusinessID, AppKey, ShipperCode, LogisticCode这四个值,再运行这个PHP文件就可以了.

  • 相关阅读:
    nginx 状态码整理
    nginx 添加perl
    Nginx 内置全局变量
    数组模板实现(新手遇到的格式问题)
    malloc的使用注意事项
    使用memset的注意事项!!!
    2019/3/31acm周三(三人)/CodeForces
    2019/3/31acm周三(三人)/LightOJ
    2019/3/31acm周三(三人)/hdu1042/高精度计算(未懂!)
    2019/3/24周赛坑题(读题)HDU 1412
  • 原文地址:https://www.cnblogs.com/fei-H/p/12199728.html
Copyright © 2011-2022 走看看