当前位置: API文档 > 订单类
logistics_sync_query.php(查询物流同步)
1.1 接口描述:旺店通ERP销售订单的发货状态、物流单号等同步给其他系统,注:”查询物流同步”与“物流同步回写”两个接口配合使用,完成“销售订单发货同步”,仅支持自有/其它平台店铺 |
1.2 适用版本:客户端 V2.4.5.1及以上版本 |
1.3 调用建议:物流同步业务分两部分,一部分是数据抓取,另一部分是状态回写,建议每五分钟从待同步物流数据池中,抓取一次物流数据,每次100条,处理完成一百条之后,把成功或者失败状态回写到OMS中,如此循环,直到数据池中取不出数据为止。 |
1.4 注意事项:①本接口logistics_sync_query是与logistics_sync_ack(物流同步状态回写)配合调用的,调用一次logistics_sync_query获得的待同步物流信息处理完成后,需要调用logistics_sync_ack响应同步结果;②测试环境如何测试物流同步请看本文档最下边的附录说明。 |
1.4 常见场景处理: 1.4. 1拆分发货:商城推送过来的是一个订单,但是因为实际情况需要(例:库存不足有货先发),在ERP系统拆分开了,分开发货。 ①:商城订单只有一条货品明细,且货品数量>=2被拆分成多个系统订单的
②:商城订单有多条货品明细,被拆分成多个系统订单的
③注意事项:
1.4.2 多包裹发货:ERP系统内单个订单包含的货品数量过多或者重量过重,因实际包装需要或物流公司要求(例如:单个包裹不能超过5kg),此时单个订单需要打印多个物流单进行发货。 ①:单个系统订单,实际多个包裹发货,每个包裹对应一个物流单号
|
2.1 自研商城、分销系统、全渠道等系统对接 |
环境 | HTTP地址 |
---|---|
测试环境 | https://sandbox.wangdian.cn/openapi2/logistics_sync_query.php |
正式环境 | https://api.wangdian.cn/openapi2/logistics_sync_query.php |
名称 | 字段 | 类型 | 长度 | 必须 | 描述 |
---|---|---|---|---|---|
卖家账号 | sid | String | 是 | 购买ERP时由旺店通分配给ERP购买方,请从ERP购买方获取。 | |
接口账号 | appkey | String | 是 | 本开放平台“自助对接”功能模块内自助申请,获取方式点击这里 | |
时间戳 | timestamp | int | 是 | 北京时间1970-01-01 08:00:00起至现在的总秒数,10位int值,旺店通企业版API服务端允许请求最大时间误差为5min,date.timezone = Asia/Shanghai。 | |
签名 | sign | String | 是 | API输入参数签名结果,签名算法介绍单击这里 |
名称 | 字段 | 类型 | 长度 | 必须 | 描述 |
---|---|---|---|---|---|
获取条数 | limit | tinyint | 4 | 是 | 每次请求需返回发货记录条数控制,取值范围大于等于,1小于等于100,limit输入值大于100时接口默认limit=100. 注:数据获取同步给商城系统后,一定要通过logistics_sync_ack.php回写结果,否则会出现ERP发货状态不能同步到商城的情况。 |
店铺编号 | shop_no | varchar | 20 | 否 | 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺待同步数据信息 |
是否支持拆单发货 | is_part_sync_able | tinyint | 1 | 否 | 是否支持拆单发货 0 否 1 是(支持开启多物流单号回传的卖家,没有对应需求的卖家请不要传该字段) |
名称 | 字段 | 类型 | 长度 | 必须 | 描述 |
---|---|---|---|---|---|
错误码 | code | int | 40 | 是 | 状态码:0表示成功,其他表示失败 |
错误原因 | message | varchar | 255 | 是 | 错误原因 |
数据条数 | total_count | int | 11 | 是 | 待物流同步数据总条数 |
待同步物流订单信息列表 | trades | data[] | 否 | 响应参数的1级数据节点,包含当前页的订单待同步物流订单信息的数据节点,节点下数据字段详见下述“trades” |
trades
名称 | 字段 | 类型 | 长度 | 必须 | 描述 |
---|---|---|---|---|---|
主键 | rec_id | int | 11 | 是 | 主键,用于logistics_sync_ack回写状态 |
店铺编号 | shop_no | varchar | 20 | 是 | 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置) |
原始订单 | tid | varchar | 40 | 是 | 原始订单编号,商城或平台订单号 |
物流单号 | logistics_no | varchar | 100 | 是 | 物流或者快递面单对应的编号 |
物流方式 | logistics_type | smallint | 6 | 是 | 响应值为代表物流方式的数字,数字对应的物流方式名称单击这里 |
发货条件 | delivery_term | tinyint | 4 | 是 | 1款到发货 2货到付款(包含部分货到付款) 3分期付款 |
发货时间 | consign_time | datetime | 是 | 发货时间 时间格式:yyyy-MM-dd HH:mm:ss | |
是否拆分发货 | is_part_sync | varchar | 1 | 是 | 是否拆分发货,1:拆单发货,0:不进行拆单发货 |
原始子订单 | oids | varchar | 208 | 是 | 子订单编号串,以逗号(,) 分隔,(is_part_sync非0时才有效) 字段超过上限后会分多条trades返回 |
平台ID | platform_id | smallint | 6 | 是 | 平台ID,固定值127 |
订单ID | trade_id | int | 11 | 是 | 订单ID |
erp物流编号 | logistics_code_erp | varchar | 20 | 是 | 代表物流所有属性的唯一编码,用于物流区分,ERP内支持自定义(ERP物流界面设置) |
erp物流公司名称 | logistics_name_erp | varchar | 40 | 是 | ERP内自定义的物流名称,(对应ERP设置-基本设置-物流界面的物流名称) |
物流方式名称 | logistics_name | varchar | 40 | 是 | 物流方式类型名称,(ERP设置-基本设置-物流界面的物流类型中文名称) |
出库单id | stockout_id | int | 11 | 是 | 出库单id |
是否同步 | is_need_sync | int | 1 | 是 | 1:需要同步,0:不需要同步 |
同步状态 | sync_status | int | 1 | 是 | 0:等待同步2:同步失败,3:同步成功4:手动设置为同步成功,5:手动取消同步 |
是否需要多次同步 | is_last | int | 否 | 一个订单要多次同步时,最后一个为1,用于同步回写状态 | |
店铺id | shop_id | smallint | 6 | 是 | 默认为0 |
物流id | logistics_id | int | 11 | 是 | 默认为0 |
描述 | description | varchar | 200 | 是 | 同步说明 |
同步时间 | sync_time | datetime | 是 | 默认为'0000-00-00 00:00:00',成功同步时间 | |
在线 | is_online | tinyint | 1 | 是 | 默认为0,是否使用淘宝在线发货 |
错误码 | error_code | varchar | 200 | 是 | 默认为 '',平台返回的错误码 |
错误描述 | error_msg | varchar | 200 | 是 | 默认为 '',平台返回的错误描述 |
重试次数 | try_times | tinyint | 4 | 是 | 默认为0,重试计数(有些同步失败可重试) |
最后修改时间 | modified | datetime | 是 | 最后修改时间, 时间格式:yyyy-MM-dd HH:mm:ss | |
创建时间 | created | datetime | 是 | 创建时间,时间格式:yyyy-MM-dd HH:mm:ss | |
序列号 | sn_list | data[] | 否 | 序列号(存在序列号时返回序列号,无序列号时返回 flag) |
sn_list
名称 | 字段 | 类型 | 长度 | 必须 | 描述 |
子订单编号 | oid | varchar | 40 | 是 | 子订单编号 |
序列号 | sn | varchar | 40 | 是 | 序列号 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php require_once ( "../WdtClient.php" ); $c = new WdtClient; $c ->sid = '' ; $c ->appkey = '' ; $c ->appsecret = '' ; $c ->gatewayUrl = 'http://sandbox.wangdian.cn/openapi2/logistics_sync_query.php' ; $c ->putApiParam( 'shop_no' , 'api_test' ); $c ->putApiParam( 'is_part_sync_able' ,0); $c ->putApiParam( 'limit' ,100); $json = $c ->wdtOpenApi(); var_dump( $json ); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package com.wangdian.api.trade; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.wangdian.api.WdtClient; public class LogisticsSyncQuery { public static void main(String[] args) { // TODO Auto-generated method stub WdtClient client = new WdtClient( "传入sid" , "传入appkey" , "传入appsecret" , "传入url" ); //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/ //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/ Map<String, String> params = new HashMap<String, String>(); params.put( "shop_no" , "mytest" ); params.put( "is_part_sync_able" , "0" ); params.put( "limit" , "100" ); try { String response = client.execute( "logistics_sync_query.php" , params); System.out.println(response); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WdtSdk; namespace LogisticsSyncQuery { class LogisticsSyncQuery { static void Main( string [] args) { WdtClient client = new WdtClient(); client.sid = "" ; client.appkey = "" ; client.appsecret = "" ; client.gatewayUrl = "http://sandbox.wangdian.cn/openapi2/logistics_sync_query.php" ; client.putParams( "shop_no" , "1223" ); client.putParams( "limit" , "100" ); string result = client.wdtOpenapi(); Console.WriteLine(result); Console.ReadKey(); } } } |
1 2 3 4 5 6 7 8 9 10 | import WdtClient t = WdtClient.WdtClient( 'appkey' , 'appsecret' , 'sid' , 'http://sandbox.wangdian.cn/openapi2/' ) params = {} params .update({ "limit" : '100' }) params .update({ "shop_no" : 'test' }) params .update({ "is_part_sync_able" : '0' }) response = t.execute( "logistics_sync_query.php" , params ) print(response) |
6.响应示例
6.1 正常响应示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | { "code" : 0, "message" : "" , "trades" : [ { "rec_id" : "1" , "shop_no" : "xyp2test" , "tid" : "115580935277840368-1" , "logistics_type" : "12" , "logistics_no" : "2313241321" , "delivery_term" : "1" , "consign_time" : "2019-05-19 00:45:00" , "oids" : "" , "is_part_sync" : "0" , "platform_id" : "126" , "trade_id" : "59658" , "logistics_name_erp" : "圆通速递" , "logistics_code_erp" : "2313241321" , "logistics_name" : "圆通速递" }, { "rec_id" : "2" , "shop_no" : "115580935277840368-2" , "tid" : "test0002" , "logistics_type" : "12" , "logistics_no" : "2313241322" , "delivery_term" : "1" , "consign_time" : "2015-01-01 10:00:00" , "oids" : "" , "is_part_sync" : "0" , "platform_id" : "126" , "trade_id" : "59658" , "logistics_name_erp" : "圆通速递" , "logistics_code_erp" : "2313241322" , "logistics_name" : "圆通速递" } ] } |
6.2 异常响应示例
1 2 3 4 | { "code" : 1007, "message" : "接口appkey已停用【解决办法:联系商务人员,重新开启接口appkey】 " } |
附录:
测试环境如何测试物流同步:
|