# 线下物流发货


接口地址: http://www.damaijia168.com/vv/external/v1/requestTbErp/taobao-logistics-offline-send


请求方式: POST


传参方式: JSON


返回格式: JSON


# 请求头参数

参数 类型 必选 示例
Authorization string 授权 access_token 1798c6aadec33d1bc2f5b707f1049aefexxxx

# 请求参数

参数 类型 必选 描述
shop_id string 店铺 ID
params object 参数
sub_tid number[] 需要拆单发货的子订单集合,针对的是一笔交易下有多个子订单需要分开发货的场景;1 次可传人多个子订单号,子订单间用逗号隔开;为空表示不做拆单发货。
tid number 淘宝交易 i_d
is_split number 表明是否是拆单,默认值 0,1 表示拆单
out_sid string 运单号。具体一个物流公司的真实运单号码。淘宝官方物流会校验,请谨慎传入;
company_code string 物流公司代码。如"POST"就代表中国邮政,"ZJS"就代表宅急送。
sender_id number 卖家联系人地址库 i_d,可以通过 taobao.logistics.address.search 接口查询到地址库 i_d。如果为空,取的卖家的默认取货地址
cancel_id number 卖家联系人地址库 i_d,可以通过 taobao.logistics.address.search 接口查询到地址库 i_d。 如果为空,取的卖家的默认退货地址
feature string feature 参数格式 范例: ident_code=tid1:识别码 1,识别码 2
seller_ip string 商家的 i_p 地址
edition string 版本 默认:1(不传默认为1)
1:1.0,2:2.0

# 请求示例

{
  "shop_id":173926031,
    "params":{
  "sub_tid": "1,2,3",
  "shop_id": "123456789",
  "tid": 123,
  "is_split": 0,
  "out_sid": "123456789",
  "company_code": "POST",
  "sender_id": 123456,
  "cancel_id": 123456,
  "feature": "ident_code=tid:aaa,bbb;machine_code=tid2:aaa;",
  "seller_ip": "192.168.1.10"
    }
}

# 请求代码示例

cURL请求代码示例

curl --location --request POST 'http://www.damaijia168.com/vv/external/v1/requestTbErp/taobao-logistics-offline-send' --header 'Authorization: 1798c6aadec33d1bc2f5b707f1049aefexxxx' --header 'Content-Type: application/json' --data-raw '{
  "subTid": "1,2,3",
  "shop_id": "123456789",
  "tid": 123,
  "isSplit": 0,
  "outSid": "123456789",
  "companyCode": "POST",
  "senderId": 123456,
  "cancelId": 123456,
  "feature": "identCode=tid:aaa,bbb;machineCode=tid2:aaa;",
  "seller_ip": "192.168.1.10"
}'

PHP请求代码示例

<?php

$curl = curl_init();

curlSetopt_array($curl, array(
  CURLOPT_URL => 'http://www.damaijia168.com/vv/external/v1/requestTbErp/taobao-logistics-offline-send',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
  "subTid": "1,2,3",
  "shop_id": "123456789",
  "tid": 123,
  "isSplit": 0,
  "outSid": "123456789",
  "companyCode": "POST",
  "senderId": 123456,
  "cancelId": 123456,
  "feature": "identCode=tid:aaa,bbb;machineCode=tid2:aaa;",
  "seller_ip": "192.168.1.10"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: 1798c6aadec33d1bc2f5b707f1049aefexxxx',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

JAVA请求代码示例

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n  \"subTid\": \"1,2,3\",\r\n  \"shop_id\": \"123456789\",\r\n  \"tid\": 123,\r\n  \"isSplit\": 0,\r\n  \"outSid\": \"123456789\",\r\n  \"companyCode\": \"POST\",\r\n  \"senderId\": 123456,\r\n  \"cancelId\": 123456,\r\n  \"feature\": \"identCode=tid:aaa,bbb;machineCode=tid2:aaa;\",\r\n  \"seller_ip\": \"192.168.1.10\"\r\n}");
Request request = new Request.Builder()
  .url("http://www.damaijia168.com/vv/external/v1/requestTbErp/taobao-logistics-offline-send")
  .method("POST", body)
  .addHeader("Authorization", "1798c6aadec33d1bc2f5b707f1049aefexxxx")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();

Python请求代码示例

import requests
import json

url = "http://www.damaijia168.com/vv/external/v1/requestTbErp/taobao-logistics-offline-send"

payload = json.dumps({
  "subTid": "1,2,3",
  "shopId": "5********8",
  "tid": ********,
  "isSplit": 1,
  "outSid": "1830********12227",
  "companyCode": "POST",
  "senderId": 123456,
  "cancelId": 123456,
  "feature": "identCode=tid:aaa,bbb;machineCode=tid2:aaa;",
  "sellerIp": "192.168.1.10"
})
headers = {
  'Authorization': 'd964d7b9c4365a538d9b12661f********',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

# 响应参数

参数 类型 描述
data object 返回数据
----is_success Boolean 返回发货是否成功。
----deduct_money int 消耗点券
status int 状态码,0为成功

# 返回数据

{
  "data": {
    "is_success": true,
        "deduct_money": 4
  },
  "status": 0
}

# 错误码

状态码(status) 错误信息 解决方案
132 请求格式必须为JSON 修改请求参数格式为json
422 参数列表不合法,在err中会给出提示 根据提示做相应修改
200 认证失败 请确保请求头里的Authorization存在或者未过期
422 物流订单不存在 调用发货接口前要先判断 tid 是不是自己的 tid或者说tid 是否存在,最好用搜索出来的 tid 列表里面的数据传入。
422 没有权限进行发货 在发货前要判断好订单的状态,只有交易存在、属于自己、并且是等待卖家发货的才能发,其余的状态不能调用这个接口。
422 订单状态不对 1.遇到 isv 开头的错误不要在程序重试
2.建议在发货前先调用交易 API 如:taobao.trade.fullinfo.get 来查询这个订单的状态,根据订单状态再做相应的处理,避免状态为已发货订单进行重复发货
422 没有选择物流公司 对物流公司(companyCode)做好校验,没有选择 companyCode 的不允许其发货。
422 运单号为空 对运单号(out_sid)进行校验,没有传入 out_sid 不允许其发货。
422 运单号不符合规则或已经被使用 每个物流公司都有特定的运单号规则,参照该运单号规则在前端对运单号是否符合对应的规则进行校验,不符合规则的不允许其发货。
422 参数无效,格式不对、非法值、越界等 请校验参数后重试
422 参数为空 必填参数为空,如 tid 为空,请确保必选参数不为空
422 地址库不存在或该地址库不属于当前用户 可以通过此接口查询地址库 taobao.logistics.address.search
422 已生成发货单 已经生成发货单的订单不能发货
422 物流公司名称过长 物流公司名称过长,长度请控制在20 个字符以内
422 该物流公司不支持自己联系 通过 taobao.logistics.companies.get 查询支持自已联系的物流公司
422 该交易状态不正确,不能发货 建议在发货前先调用交易 API 如:taobao.trade.fullinfo.get 来查询这个订单的状态,根据订单状态再做相应的处理,避免状态为已发货订单进行重复发货
422 对不起,您尚未成功订购 E 速宝物流服务 请订购E速宝服务
422 对不起,该订单超出了 E 速宝的服务范围,请联系小二处理 请检查收货地址和发货地址
422 top 接口不允许对拆单订单操作
422 运单号被识别为假,无法发货 输入正确的运单号
422 您填写的运单号已经过期无效,不允许用此物流运单号发货 输入正确的运单号
422 您此笔交易订单付款时间晚于快递公司揽收时间,此物流运单号不能使用 输入正确的运单号
422 您此笔交易订单收货人地址信息与快递公司签收地址信息不匹配,此物流运单号不能使用 输入正确的运单号
422 运单号已被使用,当前订单非真, 此物流单号不能使用 输入正确的运单号
422 您填写的运单号已被使用,不允许用此物流运单号发货 输入正确的运单号
422 您的收货人信息与发货人信息一致,不允许发货 请确认收件人和发货人信息是否相同
422 拆单标记 和子订单列表两者必须都填或者都不填
422 子订单交易号为空 当传递 isSplit 为 1 时,必须传递该订单下的子订单交易号
422 订单已拆单,必须传入子交易号列表 这个是已经被拆单的,操作这个订单发货时,必须带有子订单列表
422 订单已拆单,请走拆单逻辑 订单已拆单,必须传入 issplit 和子订单列表
422 当前操作的订单是拆单订单,拆单标记和子订单列表都必须传递 在操作拆单订单时,传递拆单标记和子订单列表
422 订单已经被拆单,isSplit 必须是 1 订单被拆单,isSplit 等于 1
422 接入拆单异常 拆单逻辑未知错误,请确认发货参数无异常后重试
422 未查到物流订单 请确认参数后重试
422 当前操作的订单不是拆单订单,拆单标记和子订单列表都不能带入 不带入拆单标记和子订单列表
422 子订单号没有精确匹配 传入的子订单交易号必须完全匹配物流包裹中的子订单
422 输入的用户 Id 或交易订单号不正确,未查到交易订单 检查用户 ID 和交易订单号后重试
422 非拆单订单的物流订单数不等于 1 请联系淘宝物流开发
422 物流订单不存在 sessionkey 对应的 nick 和订单(tid) 对应 nick 不一致导致报错,调用发货接口前要先判断 tid 是不是属于卖家自身的 tid 。
422 拆单校验未通过 请确认相关参数正确后重试
422 发货类型不匹配。如虚拟商品订单、家装类订单(仅能通过卖家后台页面发货),如使用该接口发货,会出现这个报错。 报错后禁止重试,并提示用户通过虚拟发货接口或到页面操作发货
422 feature 参数格式不对。 请确认feature 参数正确后重试。
422 系统异常 1、先检查是参数是否正确。如 companyCode 传入了 out_sid(运单号);订单号(tid)和 sessionkey 对应的不是同一个卖家等 。
2、若参数无误,报错后可稍等后重试 1 次 。
422 非法的 nick,无权查询 入参时 tid 和 sessionkey 对应的卖家 nick 不是同一个导致, 确认一致后重试
422 发货异常,请稍等后重试 请检查参数正确后重试
422 物流公司不存在或被禁用 一般是发货时,非淘宝合作物流公司,companyCode 传入 other 等英文字符导致 。发货时如非淘宝合作物流公司,请直接输入物流公司名称,不能填 other
422 发货使用物流公司不支持 部分物流公司被清退导致,更换其它物流公司发货
422 物流订单状态不为新建状态,无需发货处理 发货时检查订单状态,已发货订单不要重复发货,仅对待发货的订单发货。
422 物流的订单状态为关闭状态,无需发货 发货时检查订单状态,非等待发货状态,无需发货
422 您的订单无法通过此接口进行发货操作 请联系客服进行咨询