订单分批出库接口
接口描述:1、接口实现的功能和注意事项 订单分批出库接口,用于分批次出库订单上的商品(与之相对的是商品整批出库),每个运单上需要挂要出库的商品(skuUuid维度) 注意事项:https://joyspace.jd.com/h/personal/pages/gWQnacbmwquVOLF7UXTu 2、开放目的或场景: 用于订单商品分批出库 3、接口提供使用的商家类型: 目前仅支持pop商家
一、请求参数
请求URL:
公共参数
| 参数名称 | 参数类型 | 是否必须 | 示例值 | 参数描述 |
|---|---|---|---|---|
| appid | String | 是 | 合作伙伴AppId | |
| timestamp | String | 是 | 1657525936 | 当前Unix时间戳,秒 |
| seller_nick | String | 是 | 38173182 | 京东的账号,对应蜂巢授权返回jdseller字段 |
| sign | String | 是 |
业务参数
| 参数名 | 类型 | 是否必须 | 示例值 | 说明 |
|---|---|---|---|---|
| request_data | json | 是 | 要判断的订单号等, 出库数据 一次最多传入100个 ,注意是外层集合100个,不是内层的orderList中的订单号100个 |
request_data的示例
@Test public void JDOrderPartialOutShip() throws Exception { String reqData ="[{\"objectId\":\"obj100\",\"belongType\":200,\"data\":[{\"orderIds\":[309226020777],\"venderTaskAddressId\":21105493,\"deliveryType\":5,\"deliveryNumberDtoList\":[{\"deliveryId\":463,\"deliveryNums\":[\"YT3752755498963\"],\"deliveryName\":\"圆通快递\",\"partialShipmentGoodsList\":[{\"skuId\":10073001020713,\"num\":100,\"skuUuid\":\"1012_F2sB2t1307120972400844800\"}]}]}]}]"; String sellerNick = Config.JDSellerNick ; //业务参数 Map<String, String> data = new HashMap<String, String>(); data.put("appid", Config.AppId); data.put("seller_nick", sellerNick); Long timestamp = System.currentTimeMillis() / 1000; data.put("timestamp", timestamp.toString()); data.put("request_data",reqData ); // 参数签名 data.put("sign", Utils.Sign(data, Config.AppSecret)); doHttpRequest(Config.JDOrderPartialOutShipUrl, data); }主要请求参数说明
| 名称 | 类型 | 必须 | 示例值 | 描述 |
|---|---|---|---|---|
| outshipItem | com.jd.seller.order.external.request.outship.BatchStockOutOrder | 是 | 出库项 | |
| deliveryType | Number | 是 | 5 | 发货方式5:自己联系物流出库 目前仅支持5 |
| orderIds | java.util.List | 是 | 一组订单,如果只有一个订单表示订单为非合并出库;否则是合并出库,这批订单统一使用相同物流信息出库。目前不支持合单,每组订单仅支持传单个订单。 一次最多传入30个 | |
| orderId | Number | 是 | 285639587916 | 订单id |
| venderTaskAddressId | Number | 否 | 91209 | 发货地址id 来源:jingdong.vender.shipaddress.query ship_address_vo下id字段 |
| deliveryNumberDtoList | java.util.List | 是 | 发货配送信息 一次最多输入10个 | |
| deliveryNumberDtoItem | com.jd.seller.order.external.request.outship.DeliveryNumberDto | 是 | 发货配送信息项 | |
| deliveryNums | java.util.List | 是 | 订单对应的运单号 同物流公司多运单可叠加到此对象中 分批出库场景由于每个运单需要挂品,deliveryNums内仅支持一个,如果同物流公司多运单需要拆开到多个DeliveryNumberDto中 一次最多输入10个 | |
| deliveryNum | String | 是 | YT285639587916 | 运单号 |
| zsWayBillNum | String | 否 | 01234567 | 厂家自送或其他快递(物流单号) |
| zsDelivererPhone | String | 否 | 17283748578 | 厂家自送(送货人电话) |
| deliveryId | Number | 是 | 463 | 物流公司id 来源:jingdong.ldop.alpha.provider.query providerDTO下id字段 |
| zsCompanyPhone | String | 否 | 17283748578 | 厂家自送或其他快递(快递公司电话) 当物流公司为敏感词时 商家需要填写该电话 |
| zsCompanyName | String | 否 | xx快递 | 厂家自送或其他快递快递公司名称 |
| zsDelivererName | String | 否 | x先生 | 厂家自送(送货人姓名) |
| deliveryName | String | 是 | 圆通快递 | 物流公司名称 来源:jingdong.ldop.alpha.provider.query providerDTO下providerName字段 |
| partialShipmentGoodsList | java.util.List | 否 | 分批发货商品列表 分批出库必填 一次最多输入50个 | |
| skuUuid | String | 是 | 1012_F2sB2t1307120972400844800 | sku Uuid |
| num | Number | 是 | 1 | 发货数目 |
| skuId | Number | 是 | 10073001020713 | sku Id |
| belongType | Number | 是 | 200 | 商家类型 POP200 VC300 目前仅支持200 |
二、请求示例代码
Java
请求示例代码
@Test public void JDOrderPartialOutShip() throws Exception { String reqData = "[{\"objectId\":\"obj100\",\n" + " \"belongType\": 200,\n" + " \"data\": [\n" + " {\n" + " \"orderIds\": [309226020777],\n" + " \"venderTaskAddressId\": 21105493,\n" + " \"deliveryType\": 5,\n" + " \"deliveryNumberDtoList\": [\n" + " {\n" + " \"deliveryId\": 463,\n" + " \"deliveryNums\": [\n" + " \"YT3752755498963\"\n" + " ],\n" + " \"deliveryName\": \"圆通快递\",\n" + " \"partialShipmentGoodsList\": [\n" + " {\n" + " \"skuId\": 10073001020713,\n" + " \"num\": 100,\n" + " \"skuUuid\": \"1012_F2sB2t1307120972400844800\"\n" + " }\n" + " ]\n" + " }\n" + " ]\n" + " }\n" + " ]\n" + "}]"; String sellerNick = Config.JDSellerNick ; //业务参数 Map<String, String> data = new HashMap<String, String>(); data.put("appid", Config.AppId); data.put("seller_nick", sellerNick); Long timestamp = System.currentTimeMillis() / 1000; data.put("timestamp", timestamp.toString()); data.put("request_data",reqData ); // 参数签名 data.put("sign", Utils.Sign(data, Config.AppSecret)); doHttpRequest(Config.JDOrderPartialOutShipUrl, data); }三、返回结果
三(一)、返回成功的情况
{ "code": 0, "message": "ok", "data": [ { "code": 0, "msg": "", "objectId": "obj100", "data": { "successList": [308906255328], "failList": [] } } ]}三(一)、返回失败结果示例1
{ "code": 0, "message": "ok", "data": [ { "code": 0, "msg": "", "objectId": "obj100", "data": { "successList": [], "failList": [ { "code": 1000012, "orderId": 309226020777, "failReason": "订单309226020777不支持分批出库,原因为单品单件订单,不支持分批出库" } ] } } ]}三(二)、返回失败结果示例2
{ "code": 0, "message": "ok", "data": [ { "code": 0, "msg": "", "objectId": "obj100", "data": { "successList": [], "failList": [ { "code": 400304103, "orderId": 308906255328, "failReason": "分批发货运单号【YT3752755498963】已经存在" } ] } } ]}说明:
1. 最外层code为0表示系统层面成功,非0为失败,message会包含失败原因。2. 再是判断内层的code,如果不为0,也是失败,msg会有消息。3. 判断订单是否可以分批出库,以内层的successList和failList为准其他返回关键字段说明
| 名称 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| successList | java.util.List | 出库成功列表 | |
| orderId | Number | 285639587916 | 订单id |
| failList | java.util.List | 出库失败列表 | |
| failItem | com.jd.seller.order.external.response.outship.OutShipFailDto | 出库失败项 | |
| code | Number | 1000012 | 出库失败编码 |
| orderId | Number | 285639587916 | 订单id |
| failReason | String | sku:10073001020713 发货数量超过剩余发货数量,请刷新重试。 | 出库失败原因 |