一、背景和价值
1.背景
通过接口自动抓取轨迹, 无需登录爬虫工具 ,避免人工遗漏的情况。
2.价值
通过接口抓取lazada平台订单轨迹,提高轨迹数据的准确率,确保上网率。
二、需求描述
2.1. 功能清单
lazada轨迹API对接
2.2.影响点
无
2.3. 功能描述:
1.路径:仓储物流管理->包裹物流轨迹查询->轨迹查询
2. API接口地址&名称:
①接口地址:https://open.lazada.com/apps/doc/api?path=%2Flogistic%2Forder%2Ftrace
②接口名称:GetOrderTrace
3.API调用逻辑及界面显示逻辑
1)轨迹系统>轨迹查询->查询不到的页签,
①目前ERP系统根据【客户订单同步规则】自动同步到轨迹系统----------------------------现有逻辑
②无任何的轨迹内容信息返回,则认为查询不到-----------------------------现有逻辑
③全部调用API接口进行获取轨迹信息,获取回来后进行单独的存储,订单号,轨迹内容,轨迹时间,来源渠道,追踪号,平台类型,发货时间,上网时间,上网信息,状态等重要信息。
2)轨迹系统>"待上网" 的页签
①根据规则设置->自定义上网规则,有任意一条轨迹信息产生,单不包含上网规则时,则认为是待上网
②列表界面显示上网时间为北京时间,确保轨迹和列表界面显示一致。(若后台返回是UTC则需要转为北京时间)
3)轨迹系统>"运输途中" 的页签
①根据规则设置->自定义上网规则,若当前订单的内容符合上网规则,则该订单状态就修改为运输途中。
②列表界面显示上网时间为北京时间,确保轨迹和列表界面显示一致。(若后台返回是UTC则需要转为北京时间)
4)接口调用的时间范围
①从订单添加时间近2个月内的所有订单都检索(已上网的除外)
②只要获取到上网信息后,则不再进行订单接口的调用,否则都要一直进行调用API接口去获取。(物流人员自行打上妥投的标识)
5)历史数据处理
①功能上线后,系统默认获取12月1日到至今的轨迹数据拉取到系统。
6)包裹状态的列显示内容显示如下图(针对lazada和shopee)
①当前的逻辑:界面看到的信息都是直接调用51track 的接口进行实时显示的
②修改后逻辑:鼠标移上去后如下图
A,追踪号:订单对应的追踪号信息
B.目的地:中国-XXXXXX --------------------------发货国家默认为中文,到货国家为对应订单对应的国家
C.轨迹发件国家:每条轨迹的产生时间+ 轨迹内容.
lazada后台轨迹截图: 订单号:202212310127133982076 轨迹如下图

轨迹系统截图:

接口请求参数:
using Lazop.Api; using Lazop.Api.Util; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LazadaV2APIService.Request { public class GetOrderTraceRequest : LazopRequest { public GetOrderTraceRequest() { base.SetApiName(this.ApiName); base.SetHttpMethod(this.HttpMethod); } /// <summary> /// 接口名称 /// </summary> public string ApiName { get { return "/logistic/order/trace"; } } /// <summary> /// 请求类型 /// </summary> public string HttpMethod { get { return Constants.METHOD_GET; } } private string order_id; /// <summary> /// order id /// </summary> public string OrderId { get { return this.order_id; } set { this.order_id = value; base.AddApiParameter("order_id", value); } } private string locale; /// <summary> /// local /// </summary> public string Locale { get { return this.locale; } set { this.locale = value; base.AddApiParameter("locale", value); } } private List<string> ofcPackageIdList; /// <summary> /// package id list /// </summary> public List<string> OfcPackageIdList { get { return this.ofcPackageIdList; } set { this.ofcPackageIdList = value; base.AddApiParameter("ofcPackageIdList", JsonConvert.SerializeObject(value)); } } } }