快递鸟预约取件API接口对接编码

来源:互联网 发布:行政级轿车 知乎 编辑:程序博客网 时间:2024/06/02 14:30
快递鸟预约取件接口是实现在自有网站系统上实现发快递功能的接口

接口对接流程
快递鸟网站申请接口KEY-对接接口-调试-上线使用

接口描述/说明
(1)在线下单接口是快递鸟提供给独立电商、仓储管理系统、物流供应链等物流系统平台使用的下单接口。
(2)解决在线发货需求,商户通过网络选择快递公司发送请求通知快递公司有快递要发货。
(3) 客户把数据通过此接口转发到快递鸟,由快递鸟安排快递员上门取件的服务。
(4)订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。
(5)接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):"application/x-www-form-urlencoded;charset=utf-8"。
(6)接口地址: API测试地址:http://testapi.kdniao.cc:8081/api/OOrderService
API正式地址:http://api.kdniao.cc/api/OOrderService

接口参数


接口编码
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; /** ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx*/public class KdGoldAPIDemo {//电商IDprivate String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";//电商加密私钥,快递鸟提供,注意保管,不要泄漏private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServicApply.aspx";//测试请求url    private string ReqURL = "http://testapi.kdniao.cc:8081/api/oorderservice";//正式请求url//private string ReqURL = "http://api.kdniao.cc/api/OOrderService";/**     * Json方式 在线下单 * @throws Exception      */public String orderOnlineByJson() throws Exception{String requestData= "{'OrderCode': '012657700312'," +                                  "'ShipperCode':'YTO'," +                                  "'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}]," +                                  "'AddService':" +                                  "[{" +                                  "'Name':'COD','Value':'1020'}]," +                                  "'Weight':1.0," +                                  "'Quantity':1," +                                  "'Volume':0.0," +                                  "'Remark':'小心轻放'," +                                  "'Commodity':" +                                  "[{" +                                  "'GoodsName':'鞋子'," +                                  "'Goodsquantity':1," +                                  "'GoodsWeight':1.0}]" +                                  "}";Map<String, String> params = new HashMap<String, String>();params.put("RequestData", urlEncoder(requestData, "UTF-8"));params.put("EBusinessID", EBusinessID);params.put("RequestType", "1001");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();    }}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 雀巢美禄 meilu 美禅整形 美福 美秀 美科 美科电子琴 月亮美称 城乡美称 美称 美称的拼音 美称拼音 美称智能秤 中国城乡美称 月亮的四个美称和雅号 邮递员的美称是什么 石头城是哪个城市的美称 日光之城是哪个城市的美称 青木美空 美空 美空网 美空杏 叶山美空 美空模特 美空人体 美空影院 石动美空 进藤美空 美空写真 美空熊乃瑾 美空模特网 美空是什么 模特美空 美空网怎么约 青木美空礼仪在线播放 青木美空在线 美空模特价目表 美空是什么意思 美空网婚纱照 美空网婚纱照片 美空婚纱摄影