使用快递100商家寄件API实现寄件功能

偷懒多时,现在补上之前说过的商家寄件实现。

先简单定义一下商家寄件场景:电商或企业集中在一个或多个地点,批量往全国各地发货。往往是一个门店,一个仓库,或一个代运营点。

再说一下,为啥要用商家寄件?
现在快递网点比较多,满街都是快递员再跑,找个网点或快递员来寄个件是很轻松的事情,为啥还要选这个商家寄件呢?原因主要有如下几点:

  1. 成本。随随便便找个网点或快递员,是很方便但是价格通常比较高,一年下来物流成本会较高。
  2. 服务。顺便叫的快递员,通常需要看快递员方便的时间来,不如商家寄件是经过优选的快递员,服务时效及质量都要靠谱一些。
  3. 管理。如果门店较多,或商铺较多,需要有完整的系统来同意管理,以免出现爆单的时候乱七八糟或漏洞百出。整体效率和关键节点的把控都会更好些。

看到这里,基本上是需要的同学了。不废话了,看一下商家寄件整体流程:

  1. 查询发件地是否有运力(能不能寄或者说有木有快递员来收) 在这里插入代码片
  2. 商家寄件(选择合适的运力来填写信息,生成快递单)
  3. 获取验证码(寄件成功后,生成一个取件码,快递员上门时候完成验证收货)
  4. 后续跟踪或取消订单(取件成功后,订阅快递轨迹信息方客户便后续查询;有其他问题暂时不寄时取消订单)

每个点对应一个接口,自己实现一下就搞定了。
代码看这里:Java版 | .Net版

   /**
     * 商家寄件查询运力
     * 快递100的基础账号信息,可以在这里获取 (需要填写完整才能测试) 
     * https://poll.kuaidi100.com/manager/page/myinfo/enterprise
     */
    @Test
    public void testBorderQuery() throws Exception {
    
    
        BaseReq<BOrderQueryReq>  param = new BaseReq<BOrderQueryReq>();
        BOrderQueryReq bOrderQueryReq = new BOrderQueryReq();
        bOrderQueryReq.setSendAddr("福田区华强南");

        String t = String.valueOf(System.currentTimeMillis());
        param.setKey(key);
        param.setSign(SignUtils.sign(new Gson().toJson(bOrderQueryReq) + t + key + secret));
        param.setT(t);
        param.setParam(bOrderQueryReq);

        BOrder bOrder = new BOrder();
        System.out.println(bOrder.transportCapacity(param));
    }

  /**
     * 商家寄件
     */
    @Test
    public void testBorder() throws Exception {
    
    
        BaseReq<BOrderReq>  param = new BaseReq<BOrderReq>();
        BOrderReq bOrderReq = new BOrderReq();
        bOrderReq.setKuaidicom(CompanyConstant.ZT);
        bOrderReq.setSendManName("张三");
        bOrderReq.setSendManMobile("15966666666");
        bOrderReq.setSendManPrintAddr("广东深圳市福田区华强南");
        bOrderReq.setRecManName("李四");
        bOrderReq.setRecManMobile("15966666666");
        bOrderReq.setRecManPrintAddr("广东深圳市南山区金蝶软件园");
        bOrderReq.setCallBackUrl("http://www.baidu.com");
        bOrderReq.setCargo("文件");
        bOrderReq.setRemark("测试下单,待会取消");
        bOrderReq.setWeight("1");
        bOrderReq.setSalt("123456");
        bOrderReq.setServiceType("标准快递");

        String t = String.valueOf(System.currentTimeMillis());
        param.setKey(key);
        param.setSign(SignUtils.sign(new Gson().toJson(bOrderReq) + t + key + secret));
        param.setT(t);
        param.setParam(bOrderReq);

        BOrder bOrder = new BOrder();
        System.out.println(bOrder.order(param));
    }
 /**
     * 商家寄件获取验证码
     */
    @Test
    public void testBorderGetCode() throws Exception {
    
    
        BaseReq<BOrderGetCodeReq>  param = new BaseReq<BOrderGetCodeReq>();
        BOrderGetCodeReq bOrderGetCodeReq = new BOrderGetCodeReq();
        bOrderGetCodeReq.setTaskId("CE181BBD30C0F9BF531AB456CCE278E7");
        bOrderGetCodeReq.setOrderId("100012021501262");

        String t = String.valueOf(System.currentTimeMillis());
        param.setKey(key);
        param.setSign(SignUtils.sign(new Gson().toJson(bOrderGetCodeReq) + t + key + secret));
        param.setT(t);
        param.setParam(bOrderGetCodeReq);

        BOrder bOrder = new BOrder();
        System.out.println(bOrder.getCode(param));
    }
    /**
     * 商家寄件取消
     */
    @Test
    public void testBorderCancel() throws Exception {
    
    
        BaseReq<BOrderCancelReq>  param = new BaseReq<BOrderCancelReq>();
        BOrderCancelReq bOrderCancelReq = new BOrderCancelReq();
        bOrderCancelReq.setTaskId("CE181BBD30C0F9BF531AB456CCE278E7");
        bOrderCancelReq.setOrderId("100012021501262");
        bOrderCancelReq.setCancelMsg("测试单取消");

        String t = String.valueOf(System.currentTimeMillis());
        param.setKey(key);
        param.setSign(SignUtils.sign(new Gson().toJson(bOrderCancelReq) + t + key + secret));
        param.setT(t);
        param.setParam(bOrderCancelReq);

        BOrder bOrder = new BOrder();
        System.out.println(bOrder.cancel(param));
    }

另外,这个需要快递100的企业版,先自己去注册一下获取key。

猜你喜欢

转载自blog.csdn.net/austin_he2020/article/details/109022739
今日推荐