自己联系物流(线下物流)批量发货
用户调用该接口可实现自己联系发货(线下物流),使用该接口发货,交易订单状态会直接变成卖家已发货。不支持货到付款、在线下单类型的订单。
注意:线下发货方式不支持物流跟踪,需要物流跟踪的请使用《在线订单发货处理》接口。
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; | |
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 获取 |
-goods | TopConsignGoodsRequest[] | false | 包裹中商品信息 | 包裹中商品信息 |
--sub_tid | String | false | 111 | 子订单id |
--comp_item_id | String | false | 100001 | 成分品itemId |
--comp_sku_id | String | false | 100002 | 成分品skuId |
--item_type | Number | false | 0 | 品类型 0:标品/平台赠品,1:ERP线下赠品、2:成分品,默认为0 |
--num | Number | false | 1 | 商品数量,不传默认为子单上的商品数量;支持不传,但不能传0或负值 |
-sub_out_sid | String | false | 11112 | 快递子单运单号 |
cancel_id | Number | true | 123456 | 卖家联系人地址库ID,可以通过taobao.logistics.address.search接口查询到地址库ID。 如果为空,取的卖家的默认退货地址 |
consign_status | ConsignStatusRequest[] | fasle | 子订单发货状态 | |
-sub_tid | String | fasle | 123314 | 子订单id(组合品不需要传系统会自动计算) |
-is_part_consign | Boolean | fasle | true | 子订单是否部分发货,true:部分发货;false:全部发货;周期购、分销订单不支持部分发货 |
consign_type | Number | fasle | 1 | 发货类型 0:普通发货(老链路) 1: 普通发货(新链路,支持子订单部分发货、成分品发货以及ERP线下赠品发货) 2: 将发货状态从”部分发”修改为”全部发” 3:补发;默认为0 |
发货订单的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. 调用线下发货接口发货成功了,但是天猫后台还是未发货
卖家在商家后台手动发货—在线下单进行处理发货的。导致原因如下:【快递在线下单发货】这个订单是在线下单发货,在线下单发货后,订单无法直接更新成已发货状态。需要快递公司回传揽收成功,订单才会更新成已发货状态。如果快递公司回传揽收失败,订单会变成待发货状态,可以重新发货。如果快递公司不回传(已接单),则我们不能进行任何操作,只能联系快递公司确认。