<?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;


}


}



程序员交流qq群:782974737