快递鸟 快递100接口示例

<?php
 
$KdApi=new KdApi();
// //调用快递鸟查询物流轨迹
// //---------------------------------------------
// /*
// * com 快递编号
// * num 快递单号
// */
// $com=$_POST["com"];
// $num=$_POST["num"];
// $logisticResult=$KdApi->getOrderTracesByJson("HTKY","73501295840655"); 
// echo $logisticResult;




//快递100查询
//   var_dump($KdApi->kuaidi100("huitongkuaidi","73501295840655"));





// //构造在线下单提交信息
 
// $eorder = [];
// //快递公司编码
// $eorder["ShipperCode"] = "SF";
// //订单编号PM201605078942
// $eorder["OrderCode"] = "PM".date("YmdHis");
// //支付方式 PayType	Int	邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付
// $eorder["PayType"] = 1;
// //快递类型:1-标准快件
// $eorder["ExpType"] = 1;

// // IsNotice Int	发货方式:0-上门揽件,1-网点自寄,默认为1	O
// $eorder["IsNotice"] = 1;
// //PackingType	Int	包装类型:包装类型(快运字段)默认为 0; 0- 纸 1- 纤 2- 木 3- 托膜 4- 木托 99-其他
// $eorder["PackingType"] = 1; 
// //IsReturnSignBill	Int	签收回单:1-需要,0-不需要,默认为0	O
// $eorder["IsReturnSignBill"] = 1;
// //DeliveryMethod	Int	送货方式:0-自提,1-送货上门(不含上楼)2-送货上楼。(适用于快运类型订单,物流公司可能会收取费用),默认为0
// $eorder["DeliveryMethod"] = 1; 

// // StartDate	String	上门取货时间段:"yyyy-MM-dd HH:mm:ss"格式化,本文中所有时间格式相同	O
// // $eorder["StartDate"] = "yyyy-MM-dd HH:mm:ss"; 
// // $eorder["EndDate"] = "yyyy-MM-dd HH:mm:ss"; 
 
// // Weight	Double	物品总重量kg	O
// $eorder["Weight"] = 1;
// //Quantity	Int	件数/包裹数	O
// $eorder["Quantity"] = 1;
// //Volume	Double	物品总体积m3	O
// $eorder["Volume"] = 1;
// //Remark	String	备注
// $eorder["Remark"] = "";

// //发件人信息
// $sender = [];
// $sender["Name"] = "李先生";
// $sender["Mobile"] = "18888888888";
// $sender["ProvinceName"] = "广东省";
// $sender["CityName"] = "深圳市";
// $sender["ExpAreaName"] = "福田区";
// $sender["Address"] = "赛格广场5401AB";
// //收件人信息
// $receiver = [];
// $receiver["Name"] = "李先生";
// $receiver["Mobile"] = "18888888888";
// $receiver["ProvinceName"] = "广东省";
// $receiver["CityName"] = "深圳市";
// $receiver["ExpAreaName"] = "福田区";
// $receiver["Address"] = "赛格广场5401AB";
// //ommodity商品信息
// /*GoodsName	String	商品名称	R
// GoodsCode	String	商品编码	O
// Goodsquantity	Int	商品数量	O
// GoodsPrice	Decimal	商品价格	O
// GoodsWeight	Decimal	商品重量	O
// GoodsDesc	String	商品描述	O
// GoodsVol	Double	商品体积m3
// */
// $commodityOne = [];
// $commodityOne["GoodsName"] = "其他";


// $commodity = [];
// $commodity[] = $commodityOne;

// $eorder["Sender"] = $sender;
// $eorder["Receiver"] = $receiver;
// $eorder["Commodity"] = $commodity;


// //调用在线下单
// $jsonParam = json_encode($eorder, JSON_UNESCAPED_UNICODE);
// //echo "在线下单接口提交内容:<br/>".$jsonParam;
// $jsonResult = $KdApi->submitOOrder($jsonParam);

// //解析在线下单返回结果
// $result = json_decode($jsonResult, true);
// echo '<pre>';
// var_dump($result);die;
// echo "<br/><br/>返回码:".$result["ResultCode"];
// if($result["ResultCode"] == "100") {
// 	echo "<br/>是否成功:".$result["Success"];
// }
// else {
// 	echo "<br/>在线下单失败";
// }

class KdApi{ 
  public  $conf=[
          //快递鸟电商ID 
          "EBusinessID"=>"test1395396",
          //快递鸟电商加密私钥,快递鸟提供,注意保管,不要泄漏
          "AppKey"=>"c14e0f85-ad29-4b8c-aa86-65f9fe5eb681",
          //快递鸟 调试模式 false true 测试
          "debug"=>true,
          //快递100 公司编号, 请在企业管理后台查看
          "customer"=>'4ABF503E8E654D052D62AAE5DF38FF84',
          //快递100 公司编号, 请在企业管理后台查看
          "key"=>"LxRCjwoi3582",
      ];
        
 public function __construct($conf = "") {
     
  }
 
/**
 * Json方式 提交在线下单
 */
function submitOOrder($requestData){
    //电商加密私钥,快递鸟提供,注意保管,不要泄漏
 
//请求url,接口正式地址:http://api.kdniao.com/api/eorderservice    测试环境地址:http://testapi.kdniao.com:8081/api/oorderservice
       
        if($this->conf["debug"]){
            $ReqURL="http://testapi.kdniao.com:8081/api/oorderservice";
        }else{
            $ReqURL="http://api.kdniao.com/api/eorderservice";
        }
	$datas = array(
        'EBusinessID' => $this->conf["EBusinessID"],
        'RequestType' => '1001',
        'RequestData' => urlencode($requestData) ,
        'DataType' => '2',
    );
    $datas['DataSign'] = $this->encrypt($requestData,$this->conf["AppKey"] );
	$result=$this->sendPost($ReqURL, $datas);	
	
	//根据公司业务处理返回的信息......
	
	return $result;
}

 //---------------------------------------------
 
/**
 * Json方式 查询订单物流轨迹
 */
function getOrderTracesByJson($com,$num){
 
//请求url
// (6)测试地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json
// (7)正式地址:http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx
  if($this->conf["debug"]){
            $ReqURL="http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
        }else{
            $ReqURL="http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
        }
	$requestData='{"OrderCode":"","ShipperCode":"'.$com.'","LogisticCode":"'.$num.'" }';
	$datas = array(
         'EBusinessID' => $this->conf["EBusinessID"],
        'RequestType' => '1002',
        'RequestData' => urlencode($requestData) ,
        'DataType' => '2',
    );
    $datas['DataSign'] = $this->encrypt($requestData, $this->conf["AppKey"]);
	$result=$this->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);
    $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";
    $httpheader.= "Host:" . $url_info['host'] . "\r\n";
    $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";
    $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";
    $httpheader.= "Connection:close\r\n\r\n";
    $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 == "\r\n" || $header == "\n")) {
			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)));
}


/**
 * Json方式 提交在线下单
 */
function kuaidi100($com,$num){
      /*
        
        名称	类型	是否必需	示例值	  描述
        customer	String	是		我方分配给贵司的的公司编号, 请在企业管理后台查看
        sign	String	是		签名,  
        param	Object	是		由其他字段拼接
        └ com	string	是	yuantong	查询的快递公司的编码, 一律用小写字母
        └ num	string	是	12345678	查询的快递单号, 单号的最大长度是32个字符
        └ phone	string	否	13888888888	收、寄件人的电话号码(手机和固定电话均可,只能填写一个,顺丰单号必填,其他快递公司选填。如座机号码有分机号,分机号无需上传。)
        └ from	string	否	广东深圳	出发地城市
        └ to	string	否	北京朝阳	目的地城市,到达目的地后会加大监控频率
        └ resultv2	int	否	1	添加此字段表示开通行政区域解析功能
        
        */
            //参数设置
            $post_data = array();
             //$this->conf["customer"], this->conf["key"],  
            $post_data["customer"] =$this->conf["customer"];
            $key= $this->conf["key"] ;
            $post_data["param"] = '{"com":"'.$com.'","num":"'.$num.'"}';
           
        
            $url='http://poll.kuaidi100.com/poll/query.do';
            $post_data["sign"] = md5($post_data["param"].$key.$post_data["customer"]);
            $post_data["sign"] = strtoupper($post_data["sign"]);
            $o="";
            foreach ($post_data as $k=>$v)
            {
                $o.= "$k=".urlencode($v)."&";		//默认UTF-8编码格式
            }
            $post_data=substr($o,0,-1);
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); 
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($curl);
            curl_close($curl);
            $retuaz=["code"=>1000,"msg"=>"成功","data"=>json_decode($output)];
            return $retuaz;

            
}


}
发布了19 篇原创文章 · 获赞 0 · 访问量 438

猜你喜欢

转载自blog.csdn.net/wangzhae/article/details/104513759