首页  >  文章  >  后端开发  >  PHP-智选物流接口demo的示例代码分享

PHP-智选物流接口demo的示例代码分享

黄舟
黄舟原创
2017-03-23 09:27:051543浏览

PHP-智选物流接口demo的示例代码分享

<?php
//电商ID
defined(&#39;EBusinessID&#39;) or define(&#39;EBusinessID&#39;, &#39;请到快递鸟官网申请http://kdniao.com/reg&#39;);
//电商加密私钥,快递鸟提供,注意保管,不要泄漏
defined(&#39;AppKey&#39;) or define(&#39;AppKey&#39;, &#39;请到快递鸟官网申请http://kdniao.com/reg&#39;);
//请求url
//测试地址
defined(&#39;ReqURL&#39;) or define(&#39;ReqURL&#39;, &#39;http://testapi.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx&#39;);
//正式地址
//defined(&#39;ReqURL&#39;) or define(&#39;ReqURL&#39;, &#39;http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx&#39;);
 
 //调用获取物流轨迹
//-------------------------------------------------------------
 
$logisticResult = getExpRecommendByJson();
echo $logisticResult;
 
//-------------------------------------------------------------
  
/**
 * Json方式 智选物流
 */
function getExpRecommendByJson(){
    $requestData= "{&#39;MemberID&#39;:&#39;123456&#39;,&#39;WarehouseID&#39;:&#39;1&#39;,&#39;Detail&#39;:[{&#39;OrderCode&#39;:&#39;12345&#39;,&#39;IsCOD&#39;:0,
    &#39;Sender&#39;:{&#39;ProvinceName&#39;:&#39;广东省&#39;,&#39;CityName&#39;:&#39;广州&#39;,&#39;ExpAreaName&#39;:&#39;龙岗区&#39;,&#39;Subdistrict&#39;:&#39;布吉街道&#39;,&#39;Address&#39;:&#39;518000&#39;},
    &#39;Receiver&#39;:{&#39;ProvinceName&#39;:&#39;广东&#39;,&#39;CityName&#39;:&#39;梅州&#39;,&#39;ExpAreaName&#39;:&#39;丰顺&#39;,&#39;Subdistrict&#39;:&#39;布吉街道&#39;,&#39;Address&#39;:&#39;518000&#39;},
    &#39;Goods&#39;:[{&#39;ProductName&#39;:&#39;包&#39;,&#39;Volume&#39;:&#39;&#39;,&#39;Weight&#39;:&#39;1&#39;}]},{&#39;OrderCode&#39;:&#39;12346&#39;,&#39;IsCOD&#39;:0,&#39;Sender&#39;:{&#39;ProvinceName&#39;:&#39;广东省&#39;,
    &#39;CityName&#39;:&#39;广州&#39;,&#39;ExpAreaName&#39;:&#39;龙岗区&#39;,&#39;Subdistrict&#39;:&#39;布吉街道&#39;,&#39;Address&#39;:&#39;518000&#39;},&#39;Receiver&#39;:{&#39;ProvinceName&#39;:&#39;湖南&#39;,
    &#39;CityName&#39;:&#39;长沙&#39;,&#39;ExpAreaName&#39;:&#39;龙岗区&#39;,&#39;Subdistrict&#39;:&#39;布吉街道&#39;,&#39;Address&#39;:&#39;518000&#39;},&#39;Goods&#39;:[{&#39;ProductName&#39;:&#39;包&#39;,&#39;Volume&#39;:&#39;&#39;,&#39;Weight&#39;:&#39;1&#39;}]}]}";
    $datas = array(
        &#39;EBusinessID&#39; => EBusinessID,
        &#39;RequestType&#39; => &#39;2006&#39;,
        &#39;RequestData&#39; => urlencode($requestData) ,
        &#39;DataType&#39; => &#39;2&#39;,
    );
    $datas[&#39;DataSign&#39;] = encrypt($requestData, AppKey);
    $result=sendPost(ReqURL, $datas); 
     
    //根据公司业务处理返回的信息......
     
    return $result;
}
  
/**
 * Json方式 导入运费模板
 */
function importCostTemplateByJson(){
    $requestData= "{&#39;MemberID&#39;:&#39;123456&#39;,&#39;Detail&#39;:[{&#39;ShipperCode&#39;:&#39;YD&#39;,&#39;SendProvince&#39;:&#39;广东&#39;,&#39;SendCity&#39;:&#39;广州&#39;,&#39;SendExpArea&#39;:&#39;天河&#39;,
    &#39;ReceiveProvince&#39;:&#39;湖南&#39;,&#39;ReceiveCity&#39;:&#39;长沙&#39;,&#39;ReceiveExpArea&#39;:&#39;龙岗&#39;,&#39;FirstWeight&#39;:&#39;1&#39;,&#39;FirstFee&#39;:&#39;8&#39;,&#39;AdditionalWeight&#39;:&#39;1&#39;,
    &#39;AdditionalFee&#39;:&#39;10&#39;,&#39;WeightFormula&#39;:&#39;&#39;},{&#39;ShipperCode&#39;:&#39;YD&#39;,&#39;SendProvince&#39;:&#39;广东&#39;,&#39;SendCity&#39;:&#39;广州&#39;,&#39;SendExpArea&#39;:&#39;天河&#39;,
    &#39;ReceiveProvince&#39;:&#39;湖南&#39;,&#39;ReceiveCity&#39;:&#39;长沙&#39;,&#39;ReceiveExpArea&#39;:&#39;雨花&#39;,&#39;FirstWeight&#39;:&#39;1&#39;,&#39;FirstFee&#39;:&#39;8&#39;,
    &#39;AdditionalWeight&#39;:&#39;1&#39;,&#39;AdditionalFee&#39;:&#39;10&#39;,&#39;WeightFormula&#39;:&#39;{{w-0}-0.4}*{{{1000-w}-0.4}+1}*4.700+ {{w-1000}-0.6}*[(w-1000)/1000]*4.700)&#39;,
    &#39;ShippingType&#39;:&#39;1&#39;,&#39;IntervalList&#39;:[{&#39;StartWeight&#39;: 1.0,&#39;EndWeight&#39;: 2.0, &#39;Fee&#39;: 3.0}]}]}";
    $datas = array(
        &#39;EBusinessID&#39; => EBusinessID,
        &#39;RequestType&#39; => &#39;2004&#39;,
        &#39;RequestData&#39; => urlencode($requestData) ,
        &#39;DataType&#39; => &#39;2&#39;,
    );
    $datas[&#39;DataSign&#39;] = 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(&#39;%s=%s&#39;, $key, $value);     
    }  
    $post_data = implode(&#39;&&#39;, $temps);
    $url_info = parse_url($url);
    if(empty($url_info[&#39;port&#39;]))
    {
        $url_info[&#39;port&#39;]=80;  
    }
    $httpheader = "POST " . $url_info[&#39;path&#39;] . " HTTP/1.0\r\n";
    $httpheader.= "Host:" . $url_info[&#39;host&#39;] . "\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[&#39;host&#39;], $url_info[&#39;port&#39;]);
    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)));
}
 
?>

以上是PHP-智选物流接口demo的示例代码分享的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn