Home  >  Article  >  Backend Development  >  Sample code sharing of PHP-Smart Logistics Interface demo

Sample code sharing of PHP-Smart Logistics Interface demo

黄舟
黄舟Original
2017-03-23 09:27:051547browse

PHP-Smart logistics interface demo sample code sharing

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

The above is the detailed content of Sample code sharing of PHP-Smart Logistics Interface demo. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn