自己联系物流(线下物流)批量发货

用户调用该接口可实现自己联系发货(线下物流),使用该接口发货,交易订单状态会直接变成卖家已发货。不支持货到付款、在线下单类型的订单。
注意:线下发货方式不支持物流跟踪,需要物流跟踪的请使用《在线订单发货处理》接口。

1.请求参数

请求URL:

POST https://kf.fw199.com/gateway/taobao/logistices/v2/offlinebatchsend

参数名 类型 说明 示例
appid String 合作伙伴AppId uwkahf@jfs92
timestamp String 当前时间戳
tb_seller_nick String 淘宝卖家店铺登录账号,非店铺名称 kingdo
items json 订单发货信息的集合,json格式 发货订单数量控制在100个(含)内
sign String 接口签名 如何计算生成见示例代码
sysid String 可空, 代表不同的应用,具体请咨询客服
items参数说明
参数名 类型 必须 示例 说明
sender_id Number false 123456 卖家联系人地址库ID,可以通过taobao.logistics.address.search接口查询到地址库ID。如果为空,取的卖家的默认取货地址
feature String false identCode=tid:aaa,bbb;machineCode=tid2:aaa;retailStoreId=12345;retailStoreType=STORE
tid String true 123 淘宝交易ID
sub_tid String false 1,2,3 需要拆单发货的子订单集合,针对的是一笔交易下有多个子订单需要分开发货的场景;1次可传人多个子订单号,子订单间用逗号隔开;为空表示不做拆单发货。
consign_pkgs TopConsignPkgRequest[] true 包裹信息
out_sid String true 123455 运单号.具体一个物流公司的真实运单号码。淘宝官方物流会校验,请谨慎传入
company_code String true POST 物流公司代码.如”POST”就代表中国邮政,”ZJS”就代表宅急送.调用 taobao.logistics.companies.get 获取
cancel_id Number true 123456 卖家联系人地址库ID,可以通过taobao.logistics.address.search接口查询到地址库ID。 如果为空,取的卖家的默认退货地址

发货订单的items对象的json格式如下,比如2个订单(无子订单)的格式如下:

[{
        "sender_id": 0,  
        "feature": "",
        "tid": "1915261095690565830",
        "sub_tid": "",
        "consign_pkgs": [{
            "out_sid": "773075543162399",
            "company_code": "STO"
        }],
        "cancel_id": 0
    },
    {
        "sender_id": 0,
        "feature": "",
        "tid": "1914231385728565830",
        "sub_tid": "",
        "consign_pkgs": [{
            "out_sid": "773075543162332",
            "company_code": "STO"
        }],
        "cancel_id": 0
    }
] 

如果是子订单发货的话,需要将子订单号写到sub_tid里,和对应的consign_pkgs集合。

2. 请求示例代码(Java)

   /**
     * 批量发货新接口
     * @throws Exception
     */
    @Test
    public void logisticesCompanyV2OffineBatchSend() throws Exception {

        String tb_seller_nick = Config.TBSellerNick ;
        //业务参数
        Map<String, String> data = new HashMap<String, String>();
        data.put("appid",  Config.AppId);
       // data.put("sysid", "100");// 不同的sysid代表不同的应用,请联系客服
        data.put("tb_seller_nick", tb_seller_nick);
        Long timestamp = System.currentTimeMillis() / 1000;
        data.put("timestamp", timestamp.toString());  
              String jsonItems ="[" +
                 "    {" +
                 "     \"sender_id\":0," +
                 "     \"feature\":\"\"," +
                 "     \"tid\":\"1915261095690565830\"," +
                 "     \"sub_tid\":\"\"," +
                 "     \"consign_pkgs\": [" +
                 "         {\"out_sid\":\"773075543162399\",\"company_code\":\"STO\" }" +
                 "     ]," +
                 "     \"cancel_id\":0" +
                 "}," +
                 "{" +
                 "    \"sender_id\":0," +
                 "    \"feature\":\"\"," +
                 "    \"tid\":\"1914231385728565830\"," +
                 "    \"sub_tid\":\"\"," +
                 "    \"consign_pkgs\": [" +
                 "        {\"out_sid\":\"773075543162332\",\"company_code\":\"STO\" }" +
                 "    ]," +
                 "    \"cancel_id\":0" +
                 "} " +
                 "]";

        data.put("items",jsonItems );
        // 参数签名
        data.put("sign", Utils.Sign(data,Config.AppSecret)); 
        // 调用服务API
        doHttpRequest(Config.LogisticesV2OfflineSendUrl,data);

    }

3. 返回结果如下:

{
    "code": 0,
    "message": "ok",
    "data": [
        {
            "tid": "1394614838090565830",
            "is_success": true,
            "msg": ""
        },
        {
            "tid": "1394382349229565830",
            "is_success": false,
            "msg": "运单号不符合规则或已经被使用"
        }
    ]
}

说明: code为0表示成功,这是系统层面的成功或失败,非0为失败,对于业务层面, tid为本次发货的订单号, is_success表示对应的订单是否发货成功, 如果失败,msg会包含失败原因。

4. 常见问题

1. 无效的联系人,请检查发货人相关信息,如手机号码,电话等
A: 造成错误的原因是因为 卖家设置的发货人信息出现错误了。让卖家在淘宝或者天猫的后台  检查下卖家填写的发货信息   进入【卖家中心】—【物流管理】—【物流工具】—【地址库】中编辑下卖家发货信息
2. 调用淘宝发货接口出错:CD01#发货方式不匹配

请先确认订单类型,对照发货条件:

1、COD订单只能用COD发货: taobao.logistics.online.send( 在线订单发货处理(支持货到付款) )

2、无需物流订单只能用虚拟发货处理:taobao.logistics.dummy.send (无需物流(虚拟)发货处理)
订单是否需要虚拟发货,可以通过接口 taobao.trade.fullinfo.get(获取单笔交易的详细信息) shipping_type字段进行判断。

3、时效保障(is_lgtype),一口价订单只能走线下发货:taobao.logistics.offline.send (自己联系物流(线下物流)发货)

4、家装物流订单只能用家装物流发货: taobao.wlb.order.jz.consign (家装发货接口)
家装订单可以通过以下方式判断:https://open.taobao.com/help?spm=a219a.7386797.0.0.2bb3669ablnKtc&source=search&docId=1869&docType=14

5、海外集运订单不能用无需物流发货:taobao.wlb.import.threepl.offline.consign( 3PL直邮线下发货 )

6、保税订单商家不需要自己发货,仓库会发货的。

3. 发货报错,“运单号不符合规则或已经被使用”?
  • 首先通过cainiao.waybill.ii.query.by.waybillcode 查看电子面的状态,如果错误码是“面单号已失效”则说明,此面单已经取消或者回收。不允许发货。
    如果面单状态为合法(2,3,4,5),则面单号被其他人非法使用,需要商家进行投诉。

  • 一般是运单号已被其它订单发货使用过导致,非同一买家,相同收货地址订单,不允许使用相同运单号发货;另一个原因是,同一买家收货地址也相同,但使用同一个运单号次数过多,也是不允许的,也会有类似报错。

  • 如果是合单发货,有的发货正常,有的提示“运单号不符合规则或已经被使用”,只要有一个订单发货被揽收,另一个订单发货就提示“运单号不符合规则或已经被使用”,所以在揽收之前把所有的合单订单发货完成。

  • 如果合单发货,合单订单的收货地址不一致,也会提示“运单号不符合规则或已经被使用”这个错误;地址不一致,所以只能换运单号发货。

  • 常见的一个原因:卖家使用运单号将商品打包完成之后 先将货物给到物流方揽收了,揽收之后再使用单号做发货处理了。 这种也会导致订单发货报该异常,只要物流方扫描了 那么在进行发货时系统会和物流方校验运单号。

  • 发货使用的物流公司编码(company_code)可以通过接口taobao.logistics.companies.get( 查询物流公司信息 )查询,如果接口和文档都没有的查到,说明该物流公司没有和淘宝网合作,所以发货时 company_code 传入 OTHER 。
    https://open.taobao.com/doc.htm?spm=a219a.7386797.0.0.ab58669apVKXDo&source=search&docId=105085&docType=1

  • 如果以上条件都不符合,则可能是非淘宝合作物流单号,发货会提示“运单号不符合规则或已使用”,是因为线下发货会被被拦截。

建议:为了保障消费者体验,淘系平台正进行系统安全升级。部分物流单号已经被诊断为高风险单号,为了保障接下来发货不受到影响,请贵店铺尽快通过官方安全的菜鸟电子面单完成取号和发货!具体如何使用操作请参考https://www.cainiao.com/markets/cnwww/cnwaybill。

4. 线上发货接口返回CD01#该物流公司揽收或派送范围不支持

订单发货时,需要判断发货人和收货人地址是否在物流公司揽收和派送范围,此提示代表不在派送或揽收范围内,所以被拦截了。调在线发货接口 (taobao.logistics.online.send ),物流方无法上门取件则会提示揽收&派送范围异常。
在调在线发货接口前最好先调相关接口查询下:
taobao.logistics.address.reachable( 判定服务是否可达 )

5. 发货接口报错sub_msg”:”该物流公司不支持这种服务”

出现该异常存在以下情况:
1、订单可能是家装订单(家装订单判断 ,家装发货可以使用taobao.wlb.order.jzwithins.consign( 家装发货接口 )),或是其他类型订单。

2、调用taobao.logistics.offline.send 或者 taobao.logistics.online.send 发货时 ,物流公司code不正确或者不支持的公司会导致发货异常。

例如:百世发货”company_code”:”BEST” 会出现发货异常,百世物流不支持自己联系物流这个业务,只有百世快运,和百世汇通是支持线下发货的淘宝后台用的Code”:”BESTQJT” 发货的,而非BEST的

请调用 taobao.logistics.companies.get( 查询物流公司信息 ) 获取正确的 物流公司code 和 name
如果在淘宝合作物流公司列表中找不到该物流公司,发货时物流公司编码code传“OTHER”,属于“其他”物流公司

6. 不支持主订单下的多个子订单同时发货,请按子订单分批重试调用发货接口

原因分析:同一个主订单,不要同时发货多个子交易单,否则存在同时修改同一主订单,导致状态推进异常的问题,导致产生异常
解决方案:同一主订单下多子订单发货时,返回错误时,可以重试,或者数据请求间存在毫秒级别的间隔。

7. 调用线下发货接口发货成功了,但是天猫后台还是未发货

卖家在商家后台手动发货—在线下单进行处理发货的。导致原因如下:【快递在线下单发货】这个订单是在线下单发货,在线下单发货后,订单无法直接更新成已发货状态。需要快递公司回传揽收成功,订单才会更新成已发货状态。如果快递公司回传揽收失败,订单会变成待发货状态,可以重新发货。如果快递公司不回传(已接单),则我们不能进行任何操作,只能联系快递公司确认。

文档更新时间: 2023-10-18 14:49   作者:admin