快递员上门取件api接口技术对接java文档

上门取件,是电商平台为寄件用户提供的通过一键下单到快递员,并在2小时上门取件的寄件服务。适用于散客在线寄件、电商退货上门取件等业务场景;通过API指令由系统自动将消息发送给物流公司和快递员,由快递员上门取货揽件与在线收款;解决寄件客户不用线下找快递员、不用苦苦等待,通过上门取件服务让客户可以轻松选择约定时间、地点完成寄件需求。

一、快递员上门取件

快递鸟上门取件,是电商平台为寄件用户提供一键下单到快递员,并在2小时上门取件的寄件服务。适用于在线寄件、退换货等业务。

(1)API接口地址: ​ ​http://www.kdniao.com/product-order2​​?from=CSDN

(2)注册免费获取API KEY地址: ​ ​http://www.kdniao.com/reg​​?from=CSDN

(3)获取技术文档地址: ​ ​http://www.kdniao.com/api-pickup​​?from=CSDN

二、产品功能

1,一键退换货

在app或后台一键退货,不用线下找快递员,不用苦苦等待即可完成发货。

2,在线支付运费

快递员上门取件与在线收款,通过APP在线支付运费,告别线下或私下转款等传统支付方式。

3,预约上门时间

递员实时接单响应,并统一在上门前电话联络,在两小时后内上门揽收后回到网点将包裹发送分拨中心。

4、运费险赔付

服务过程中因物流公司原因出现快递丢失、破损等情况,提供保障赔付。

5、智能调度订单

根据不同时效产品,智能分派服务的快递公司(包括但不限于圆通、申通、韵达、中通、京东、德邦、顺丰等)。

三、上门取件应用场景

1、移动端APP、公众号、电商等提供的散客寄件下单模块,通过上门取件直接预约快递员上门揽件,支持在线支付运费;

2、电商平台、自营电商售后退货退款时,买家通过平台直接预约快递员上门揽件,支持在线支付运费;

四、客户案例

小红书:买家售后寄件后,快递员2小时上门取件

五、应用客户

六、试用流程

七、接入流程

八、demo下载 ​ ​接口接入技术文档​​

上门取件接口Demo工具.NET版

上门取件接口Demo工具.PHP版

上门取件接口Demo工具.JAVA版

上门取件接口Demo工具.PYTHON版

上门取件接口Demo工具.GO版

上门取件接口Demo工具.NODE.JS版

九、请求代码例示

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; 

/**

*

* 快递鸟在线下单接口

*

*  @技术QQ: 4009633321

* @技术QQ群: 200121393

*  @see: http://www.kdniao.com/api-order

*  @copyright: 深圳市快金数据技术服务有限公司

* ID和Key请到官网申请:http://www.kdniao.com/ServiceApply.aspx

*/

public class KdGoldAPIDemo {

    //电商ID

    private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";  

    //电商加密私钥,快递鸟提供,注意保管,不要泄漏

    private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值