电子面单怎么申请-JAVA/PHP

来源:互联网 发布:java判断是否数字 编辑:程序博客网 时间:2024/05/17 06:56

接口支持的消息接收方式:HTTPPOST

请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"

请求、返回数据类型:只支持JSON格式

接口提供:快递鸟

JAVA源码

import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;import java.security.MessageDigest; /** * * 快递鸟电子面单接口 * */ public class KdGoldAPIDemo {//电商IDprivate String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";//电商加密私钥,快递鸟提供,注意保管,不要泄漏private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";//请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderserviceprivate String ReqURL="http://testapi.kdniao.cc:8081/api/Eorderservice";/**     * Json方式 电子面单 * @throws Exception      */public String orderOnlineByJson() throws Exception{String requestData= "{'OrderCode': '012657700387'," +                "'ShipperCode':'EMS'," +                "'PayType':1," +                "'ExpType':1," +                "'Cost':1.0," +                "'OtherCost':1.0," +                "'Sender':" +                "{" +                "'Company':'LV','Name':'Taylor','Mobile':'15018442396','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73号'}," +                "'Receiver':" +                "{" +                "'Company':'GCCUI','Name':'Yann','Mobile':'15018442396','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +                "'Commodity':" +                "[{" +                "'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +                "'Weight':1.0," +                "'Quantity':1," +                "'Volume':0.0," +                "'Remark':'小心轻放'," +                "'IsReturnPrintTemplate':1}";Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8"));params.put("EBusinessID", EBusinessID);params.put("RequestType", "1007");String dataSign=encrypt(requestData, AppKey, "UTF-8");params.put("DataSign", urlEncoder(dataSign, "UTF-8"));params.put("DataType", "2");String result=sendPost(ReqURL, params);//根据公司业务处理返回的信息......return result;}/**     * MD5加密     * @param str 内容            * @param charset 编码方式 * @throws Exception      */@SuppressWarnings("unused")private String MD5(String str, String charset) throws Exception {    MessageDigest md = MessageDigest.getInstance("MD5");    md.update(str.getBytes(charset));    byte[] result = md.digest();    StringBuffer sb = new StringBuffer(32);    for (int i = 0; i < result.length; i++) {        int val = result[i] & 0xff;        if (val <= 0xf) {            sb.append("0");        }        sb.append(Integer.toHexString(val));    }    return sb.toString().toLowerCase();}/**     * base64编码     * @param str 内容            * @param charset 编码方式 * @throws UnsupportedEncodingException      */private String base64(String str, String charset) throws UnsupportedEncodingException{String encoded = Base64.encode(str.getBytes(charset));return encoded;    }@SuppressWarnings("unused")private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{String result = URLEncoder.encode(str, charset);return result;}/**     * 电商Sign签名生成     * @param content 内容        * @param keyValue Appkey       * @param charset 编码方式 * @throws UnsupportedEncodingException ,Exception * @return DataSign签名     */@SuppressWarnings("unused")private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception{if (keyValue != null){return base64(MD5(content + keyValue, charset), charset);}return base64(MD5(content, charset), charset);} /**     * 向指定 URL 发送POST方法的请求          * @param url 发送请求的 URL         * @param params 请求的参数集合          * @return 远程资源的响应结果     */@SuppressWarnings("unused")private String sendPost(String url, Map<String, String> params) {        OutputStreamWriter out = null;        BufferedReader in = null;                StringBuilder result = new StringBuilder();         try {            URL realUrl = new URL(url);            HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();            // 发送POST请求必须设置如下两行            conn.setDoOutput(true);            conn.setDoInput(true);            // POST方法            conn.setRequestMethod("POST");            // 设置通用的请求属性            conn.setRequestProperty("accept", "*/*");            conn.setRequestProperty("connection", "Keep-Alive");            conn.setRequestProperty("user-agent",                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");            conn.connect();            // 获取URLConnection对象对应的输出流            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            // 发送请求参数                        if (params != null) {          StringBuilder param = new StringBuilder();           for (Map.Entry<String, String> entry : params.entrySet()) {          if(param.length()>0){          param.append("&");          }                    param.append(entry.getKey());          param.append("=");          param.append(entry.getValue());                    System.out.println(entry.getKey()+":"+entry.getValue());          }          System.out.println("param:"+param.toString());          out.write(param.toString());            }            // flush输出流的缓冲            out.flush();            // 定义BufferedReader输入流来读取URL的响应            in = new BufferedReader(                    new InputStreamReader(conn.getInputStream(), "UTF-8"));            String line;            while ((line = in.readLine()) != null) {                result.append(line);            }        } catch (Exception e) {                        e.printStackTrace();        }        //使用finally块来关闭输出流、输入流        finally{            try{                if(out!=null){                    out.close();                }                if(in!=null){                    in.close();                }            }            catch(IOException ex){                ex.printStackTrace();            }        }        return result.toString();    }}


PHP源码

<?php/** * * 快递鸟电子面单接口 * *///电商IDdefined('EBusinessID') or define('EBusinessID', '请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx');//电商加密私钥,快递鸟提供,注意保管,不要泄漏defined('AppKey') or define('AppKey', '请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx');//请求url,接口正式地址:http://api.kdniao.cc/api/Eorderservicedefined('ReqURL') or define('ReqURL', 'http://testapi.kdniao.cc:8081/api/Eorderservice');//调用获取物流轨迹//-------------------------------------------------------------//构造电子面单提交信息$eorder = [];$eorder["ShipperCode"] = "SF";$eorder["OrderCode"] = "PM201604062341";$eorder["PayType"] = 1;$eorder["ExpType"] = 1;$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";$commodityOne = [];$commodityOne["GoodsName"] = "其他";$commodity = [];$commodity[] = $commodityOne;$eorder["Sender"] = $sender;$eorder["Receiver"] = $receiver;$eorder["Commodity"] = $commodity;//调用电子面单$jsonParam = json_encode($eorder, JSON_UNESCAPED_UNICODE);//$jsonParam = JSON($eorder);//兼容php5.2(含)以下echo "电子面单接口提交内容:<br/>".$jsonParam;$jsonResult = submitEOrder($jsonParam);echo "<br/><br/>电子面单提交结果:<br/>".$jsonResult;//解析电子面单返回结果$result = json_decode($jsonResult, true);echo "<br/><br/>返回码:".$result["ResultCode"];if($result["ResultCode"] == "100") {echo "<br/>是否成功:".$result["Success"];}else {echo "<br/>电子面单下单失败";}//-------------------------------------------------------------/** * Json方式 查询订单物流轨迹 */function submitEOrder($requestData){$datas = array(        'EBusinessID' => EBusinessID,        'RequestType' => '1007',        'RequestData' => urlencode($requestData) ,        'DataType' => '2',    );    $datas['DataSign'] = 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('%s=%s', $key, $value);    }    $post_data = implode('&', $temps);    $url_info = parse_url($url);if($url_info['port']==''){$url_info['port']=80;}echo $url_info['port'];    $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)));}/**************************************************************  *  *  使用特定function对数组中所有元素做处理  *  @param  string  &$array     要处理的字符串  *  @param  string  $function   要执行的函数  *  @return boolean $apply_to_keys_also     是否也应用到key上  *  @access public  *  *************************************************************/  function arrayRecursive(&$array, $function, $apply_to_keys_also = false)  {      static $recursive_counter = 0;      if (++$recursive_counter > 1000) {          die('possible deep recursion attack');      }      foreach ($array as $key => $value) {          if (is_array($value)) {              arrayRecursive($array[$key], $function, $apply_to_keys_also);          } else {              $array[$key] = $function($value);          }             if ($apply_to_keys_also && is_string($key)) {              $new_key = $function($key);              if ($new_key != $key) {                  $array[$new_key] = $array[$key];                  unset($array[$key]);              }          }      }      $recursive_counter--;  }  /**************************************************************  *  *  将数组转换为JSON字符串(兼容中文)  *  @param  array   $array      要转换的数组  *  @return string      转换得到的json字符串  *  @access public  *  *************************************************************/  function JSON($array) {      arrayRecursive($array, 'urlencode', true);      $json = json_encode($array);      return urldecode($json);  }  ?>


0 0
原创粉丝点击