快递100物流查询接口简介原创
金蝶云社区-文安根
文安根
3人赞赏了该文章 1270次浏览 未经作者许可,禁止转载编辑于2023年05月15日 14:43:20

    供应链领域销售模块查询物流详细信息是有三个地方。1,在销售物流信息列表中通过手工查询;2,执行计划'销售物流更新'自动更新物流详情;3,通过回调函数,这个回调逻辑包含了快递管家物流订阅和快递100物流订阅推送; 第1和第2种方式都可以认为是星空主动查询快递100的物流接口,第3种方式为快递100或快递管家通过星空的回调地址主动推送到星空系统中。本文只讨论星空调用快递100的物流接口,此接口调用封装在组件 Kingdee.K3.SCM.App.Core.dll 中,且可供外部二开调用,客户可参阅此文二开到其它单据上。接口实现类为:Kingdee.K3.SCM.App.Core.KuaidiBillService ,方法签名为 public string QueryLogisticsTraceInfo(Context ctx, Kuadi100LogisticsQueryParameter parameter),参数Kuadi100LogisticsQueryParameter (定义在组件 Kingdee.K3.SCM.Core.dll 中)的定义如下图1-1所示:

image.png

图1-1


    上图1-1是反编译组件 Kingdee.K3.SCM.Sal.Business.PlugIn.dll 中的类 Kingdee.K3.SCM.Sal.Business.PlugIn.SalLogistInfoEdit 的截图,二开客户可以类似地反编译此组件并查看通版是如何获取其中的相关参数(比如授权码,KEY等),这里解释下图中的Kuadi100LogisticsQueryParameter 定义:

1,customer:授权码,必录,对应快递100参数配置中的公司编号

2,key:key,必录,对应快递100参数配置中的授权密钥

3,EnableLog:是否启用日志,如果为true,则日志文件中会详细记录相关请求及返回信息,二开客户可传false,详情参阅:https://vip.kingdee.com/article/261534670876342272?productLineId=1 

4,param.com:必录,物流公司编码

5,param.num:必录,物流单号

6,param.phone:非必录,手机号(可以是寄件人或收件人手机号),顺丰物流自2023年3月起查询物流时必录此参数

7,param.from:非必录,起始点

8,param.to:非必录,终止点,起始和终止点只是用来精确返回物流状态的,在同城件中,如果不输入这两个参数,可能返回错误的物流状态。

    当在单据插件中想二开实现物流查询功能时,可通过方法:KuaidiBillServiceHelper.QueryLogisticsTraceInfo(base.Context, parameter); 调用实现,当在服务端插件中二开实现此功能时,可通过方法:

IKuaidiBillService kdService = Kingdee.K3.SCM.Contracts.ServiceFactory.GetService<IKuaidiBillService>(ctx); 

kdService.QueryLogisticsTraceInfo(ctx, kdLogisticParam); 调用实现。

    QueryLogisticsTraceInfo 方法返回的格式有:

1,{"result":null,"returnCode":"601", "message":"没该功能权限"}

2,{"result": false,"returnCode": "500","message": "查询无结果,请隔段时间再查"} 

3,{

     "message": "ok",

     "state": "0",

     "status": "200",

     "condition": "F00",

     "ischeck": "0",

     "com": "yuantong",

     "nu": "V030344422",

     "data":[

         {

             "context": "上海分拨中心/装件入车扫描 ",

             "time": "2012-08-28 16:33:19",

             "ftime": "2012-08-28 16:33:19"

         },

         {

             "context": "上海分拨中心/下车扫描 ",

             "time": "2012-08-27 23:22:42",

             "ftime": "2012-08-27 23:22:42"

         }

     ]

}


注意:前两种返回都是失败的情况(可以看到result字段一个是返回null,一个是false),第三种是返回成功的情况(它没有result字段返回),估计是由于快递100历史原因失败和成功返回的数据包格式是不一样,客户二开解析返回的JSON数据是要特别注意。


赞 3