快递鸟和快递100类

浏览:328 发布日期:2020/02/21 分类:功能实现 关键字: 快递 物流 快递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"=>"",
          //快递鸟电商加密私钥,快递鸟提供,注意保管,不要泄漏
          "AppKey"=>"",
          //快递鸟 调试模式 false true 测试
          "debug"=>true,
          //快递100 公司编号, 请在企业管理后台查看
          "customer"=>'',
          //快递100key
          "key"=>"",
      ];
        
 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;

            
}


}
评论( 相关
后面还有条评论,点击查看>>