小包接口文档

1. 接口概述

小包模块提供了一系列RESTful API接口,用于标签替换、扫描记录管理以及相关操作。本文档详细描述了这些接口的使用方法、请求参数和响应格式。

测试环境请求地址:http://172.232.21.79:5002

正式环境请求地址:https://lr.tooexp.com

1.1 接口基础信息

1.2 状态码说明

状态码 描述
200 操作成功
400 请求参数错误或操作失败
401 身份验证失败
404 资源不存在
500 服务器内部错误

2. 接口详细说明

2.1 根据跟踪单号获取标签替换请求记录

接口路径/label-replace/tracking/{trackingNumber}

请求方法:GET

功能描述:根据跟踪单号获取标签替换请求记录

请求参数

参数名 类型 必填 描述 示例值
trackingNumber string 跟踪单号 "1Z999AA10123456789"

请求示例

GET /api/Label/label-replace/tracking/1Z999AA10123456789

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "trackingNumber": "1Z999AA10123456789", "count": 1, "data": [{"Id": 1, "NeutralWaybillNumber": "TEST001", "FinalMileTrackingNumber": "1Z999AA10123456789", "ReplaceStatus": "Y", "CreatedAt": "2026-03-30T10:00:00Z"}]}

失败响应

{"status": "error", "message": "Tracking number is required"}

2.2 根据中性面单单号获取标签替换请求记录

接口路径/label-replace/waybill/{waybillNumber}

请求方法:GET

功能描述:根据中性面单单号获取标签替换请求记录

请求参数

参数名 类型 必填 描述 示例值
waybillNumber string 中性面单单号 "TEST001"

请求示例

GET /api/Label/label-replace/waybill/TEST001

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "waybillNumber": "TEST001", "data": {"Id": 1, "NeutralWaybillNumber": "TEST001", "FinalMileTrackingNumber": "1Z999AA10123456789", "ReplaceStatus": "Y", "CreatedAt": "2026-03-30T10:00:00Z"}}

失败响应

{"status": "error", "message": "Waybill number is required"}

2.3 根据中性面单单号获取标签文件并返回字节流

接口路径/label-replace/waybill/{waybillNumber}/download

请求方法:GET

功能描述:根据中性面单单号获取标签文件并返回字节流

请求参数

参数名 类型 必填 描述 示例值
waybillNumber string 中性面单单号 "TEST001"

请求示例

GET /api/Label/label-replace/waybill/TEST001/download

响应格式

成功响应

失败响应

{"status": "error", "message": "Label replace request not found for the provided waybill number"}

2.4 获取打印预览页面

接口路径/print-preview

请求方法:GET

功能描述:获取打印预览页面

请求参数

请求示例

GET /api/Label/print-preview

响应格式

成功响应

失败响应

2.5 测试讯通回传接口

接口路径/label-scan/test-xuntong-webhook

请求方法:POST

功能描述:测试讯通回传接口

请求参数

参数名 类型 必填 描述 示例值
WaybillNumber string 中性面单单号 "TEST001"
Success bool 是否成功,默认true true
Description string 描述 "Test webhook"

请求示例

{"WaybillNumber": "TEST001", "Success": true, "Description": "Test webhook"}

响应格式

成功响应

{"status": "ok", "message": "Test webhook sent successfully"}

失败响应

{"status": "error", "message": "Waybill number is required"}

2.6 记录标签扫描

接口路径/label-scan/record

请求方法:POST

功能描述:记录标签扫描

请求参数

参数名 类型 必填 描述 示例值
CustomerId int 客户ID 1
NeutralWaybillNumber string 中性面单单号 "TEST001"
Result int 扫描结果 0
CreatedBy string 创建人 "system"
ReferenceNumber string 参考号 "REF001"
FinalMileTrackingNumber string 尾程跟踪单号 "1Z999AA10123456789"
Description string 描述 "标签扫描"

请求示例

{"CustomerId": 1, "NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system", "ReferenceNumber": "REF001", "FinalMileTrackingNumber": "1Z999AA10123456789", "Description": "标签扫描"}

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "scanRecord": {"Id": 1, "NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system", "CreatedAt": "2026-03-30T12:00:00Z"}}

失败响应

{"status": "error", "message": "Neutral waybill number is required"}

2.7 根据中性面单查询扫描记录列表

接口路径/label-scan/waybill/{waybillNumber}

请求方法:GET

功能描述:根据中性面单查询扫描记录列表

请求参数

参数名 类型 必填 描述 示例值
waybillNumber string 中性面单单号 "TEST001"

请求示例

GET /api/Label/label-scan/waybill/TEST001

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "waybillNumber": "TEST001", "count": 1, "data": [{"Id": 1, "NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system", "CreatedAt": "2026-03-30T10:00:00Z"}]}

失败响应

{"status": "error", "message": "Waybill number is required"}

2.8 根据客户ID查询扫描记录列表

接口路径/label-scan/customer/{customerId}

请求方法:GET

功能描述:根据客户ID查询扫描记录列表

请求参数

参数名 类型 必填 描述 示例值
customerId int 客户ID 1

请求示例

GET /api/Label/label-scan/customer/1

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "customerId": 1, "count": 2, "data": [{"Id": 1, "NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system", "CreatedAt": "2026-03-30T10:00:00Z"}, {"Id": 2, "NeutralWaybillNumber": "TEST002", "Result": 0, "CreatedBy": "system", "CreatedAt": "2026-03-30T11:00:00Z"}]}

失败响应

{"status": "error", "message": "An unexpected error occurred during scan record retrieval.", "errorDetails": "错误信息"}

2.9 获取客户的扫描记录统计

接口路径/label-scan/stats/customer/{customerId}

请求方法:GET

功能描述:获取客户的扫描记录统计

请求参数

参数名 类型 必填 描述 示例值
customerId int 客户ID 1

请求示例

GET /api/Label/label-scan/stats/customer/1

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "customerId": 1, "stats": {"totalScans": 10, "successfulScans": 8, "failedScans": 2}}

失败响应

{"status": "error", "message": "An unexpected error occurred during scan statistics retrieval.", "errorDetails": "错误信息"}

2.10 批量查询标签替换请求

接口路径/label-replace/batch

请求方法:GET

功能描述:批量查询标签替换请求

请求参数

参数名 类型 必填 描述 示例值
page int 页码,默认1 1
pageSize int 每页数量,默认10 10
sortBy string 排序字段,默认CreatedAt "CreatedAt"
sortOrder string 排序方向,默认desc "desc"
billOfLadingNumber string 提单号 "BOL001"
masterPackageNumber string 大包号 "MP001"
referenceNumber string 参考号 "REF001"
neutralWaybillNumber string 中性面单单号 "TEST001"
finalMileTrackingNumber string 尾程跟踪单号 "1Z999AA10123456789"
replaceStatus string 换单状态 "Y"
customerId int 客户ID 1
callback string JSONP回调函数名 "callback"

请求示例

GET /api/Label/label-replace/batch?page=1&pageSize=10&sortBy=CreatedAt&sortOrder=desc

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "totalCount": 100, "page": 1, "pageSize": 10, "totalPages": 10, "data": [{"Id": 1, "NeutralWaybillNumber": "TEST001", "FinalMileTrackingNumber": "1Z999AA10123456789", "ReplaceStatus": "Y", "CreatedAt": "2026-03-30T10:00:00Z"}, ...]}

失败响应

{"status": "error", "message": "An unexpected error occurred during batch retrieval.", "errorDetails": "错误信息"}

2.11 批量查询标签扫描记录

接口路径/label-scan/batch

请求方法:GET

功能描述:批量查询标签扫描记录

请求参数

参数名 类型 必填 描述 示例值
page int 页码,默认1 1
pageSize int 每页数量,默认10 10
sortBy string 排序字段,默认CreatedAt "CreatedAt"
sortOrder string 排序方向,默认desc "desc"
customerId int 客户ID 1
referenceNumber string 参考号 "REF001"
neutralWaybillNumber string 中性面单单号 "TEST001"
finalMileTrackingNumber string 尾程跟踪单号 "1Z999AA10123456789"
result int 扫描结果 0
callback string JSONP回调函数名 "callback"

请求示例

GET /api/Label/label-scan/batch?page=1&pageSize=10&sortBy=CreatedAt&sortOrder=desc

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "totalCount": 50, "page": 1, "pageSize": 10, "totalPages": 5, "data": [{"Id": 1, "NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system", "CreatedAt": "2026-03-30T10:00:00Z"}, ...]}

失败响应

{"status": "error", "message": "An unexpected error occurred during batch retrieval.", "errorDetails": "错误信息"}

2.12 导出标签替换请求为Excel

接口路径/label-replace/export-excel

请求方法:GET

功能描述:导出标签替换请求为Excel

请求参数

参数名 类型 必填 描述 示例值
billOfLadingNumber string 提单号 "BOL001"
masterPackageNumber string 大包号 "MP001"
referenceNumber string 参考号 "REF001"
neutralWaybillNumber string 中性面单单号 "TEST001"
finalMileTrackingNumber string 尾程跟踪单号 "1Z999AA10123456789"
replaceStatus string 换单状态 "Y"
customerId int 客户ID 1

请求示例

GET /api/Label/label-replace/export-excel?customerId=1&replaceStatus=Y

响应格式

成功响应

失败响应

{"status": "error", "message": "An unexpected error occurred during export.", "errorDetails": "错误信息"}

2.13 批量取消订单

接口路径/label-replace/batch-cancel

请求方法:POST

功能描述:批量取消订单

请求参数

参数名 类型 必填 描述 示例值
CustomerCode string 客户代码 "TEST"
ApiKey string API密钥 "api_key_123"
WaybillNumbers array 中性面单单号列表 ["TEST001", "TEST002"]

请求示例

{"CustomerCode": "TEST", "ApiKey": "api_key_123", "WaybillNumbers": ["TEST001", "TEST002"]}

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "successCount": 2, "failedCount": 0, "failedItems": [], "message": "Batch cancel completed successfully"}

失败响应

{"status": "error", "message": "Waybill numbers are required"}

2.14 导出标签扫描记录为Excel

接口路径/label-scan/export-excel

请求方法:GET

功能描述:导出标签扫描记录为Excel

请求参数

参数名 类型 必填 描述 示例值
customerId int 客户ID 1
referenceNumber string 参考号 "REF001"
neutralWaybillNumber string 中性面单单号 "TEST001"
finalMileTrackingNumber string 尾程跟踪单号 "1Z999AA10123456789"
result int 扫描结果 0

请求示例

GET /api/Label/label-scan/export-excel?customerId=1&result=0

响应格式

成功响应

失败响应

{"status": "error", "message": "An unexpected error occurred during export.", "errorDetails": "错误信息"}

2.15 获取客户列表

接口路径/customers

请求方法:GET

功能描述:获取客户列表

请求参数

参数名 类型 必填 描述 示例值
callback string JSONP回调函数名 "callback"

请求示例

GET /api/Label/customers

响应格式

成功响应

{"status": "ok", "timestamp": "2026-03-30T12:00:00Z", "data": [{"Id": 1, "CustomerCode": "TEST", "CustomerName": "测试客户"}, ...]}

失败响应

{"status": "error", "message": "An unexpected error occurred during customers retrieval.", "errorDetails": "错误信息"}

2.16 批量查询换单状态

接口路径/label-replace/status

请求方法:POST

功能描述:批量查询换单状态

请求参数

请求头

参数名 类型 必填 描述 示例值
customerCode string 客户代码 "TEST"
apiKey string API密钥 "api_key_123"

请求体

参数名 类型 必填 描述 示例值
numbers array 单号列表(中性面单或尾程单号) ["TEST001", "1Z999AA10123456789"]

请求示例

{"numbers": ["TEST001", "1Z999AA10123456789"]}

响应格式

成功响应

{"code": 200, "timestamp": "2026-03-30T12:00:00Z", "count": 2, "data": [{"number": "TEST001", "status": "Y", "message": "Success"}, {"number": "1Z999AA10123456789", "status": "Y", "message": "Success"}]}

失败响应

{"code": 400, "message": "customerCode and apiKey are required in headers"}

3. 接口调用示例

3.1 使用cURL调用

根据跟踪单号获取标签替换请求记录

curl -X GET "http://localhost:5002/api/Label/label-replace/tracking/1Z999AA10123456789"

根据中性面单单号获取标签文件

curl -X GET "http://localhost:5002/api/Label/label-replace/waybill/TEST001/download" -o "label_TEST001.pdf"

记录标签扫描

curl -X POST "http://localhost:5002/api/Label/label-scan/record" \
  -H "Content-Type: application/json" \
  -d '{"NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system"}'

批量查询换单状态

curl -X POST "http://localhost:5002/api/Label/label-replace/status" \
  -H "Content-Type: application/json" \
  -H "customerCode: TEST" \
  -H "apiKey: api_key_123" \
  -d '{"numbers": ["TEST001", "1Z999AA10123456789"]}'

3.2 使用PowerShell调用

根据跟踪单号获取标签替换请求记录

Invoke-RestMethod -Uri "http://localhost:5002/api/Label/label-replace/tracking/1Z999AA10123456789" `
  -Method GET

根据中性面单单号获取标签文件

Invoke-WebRequest -Uri "http://localhost:5002/api/Label/label-replace/waybill/TEST001/download" `
  -Method GET `
  -OutFile "label_TEST001.pdf"

记录标签扫描

Invoke-RestMethod -Uri "http://localhost:5002/api/Label/label-scan/record" `
  -Method POST `
  -ContentType "application/json" `
  -Body '{"NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system"}'

批量查询换单状态

Invoke-RestMethod -Uri "http://localhost:5002/api/Label/label-replace/status" `
  -Method POST `
  -ContentType "application/json" `
  -Headers @{"customerCode"="TEST"; "apiKey"="api_key_123"} `
  -Body '{"numbers": ["TEST001", "1Z999AA10123456789"]}'

4. 业务流程示例

4.1 标签下载流程

  1. 查询标签替换记录:根据中性面单单号查询标签替换记录
  2. 下载标签文件:获取标签文件并返回字节流
  3. 记录扫描:记录标签扫描操作

4.2 流程示例

# 1. 查询标签替换记录
GET /api/Label/label-replace/waybill/TEST001

# 2. 下载标签文件
GET /api/Label/label-replace/waybill/TEST001/download

# 3. 记录扫描
POST /api/Label/label-scan/record
{"NeutralWaybillNumber": "TEST001", "Result": 0, "CreatedBy": "system"}

5. 注意事项

5.1 接口调用限制

5.2 数据验证

5.3 认证要求

6. 常见问题

6.1 标签下载失败

可能原因

解决方案

6.2 认证失败

可能原因

解决方案

6.3 批量操作失败

可能原因

解决方案

7. 接口版本管理

版本 变更内容 发布日期
v1.0 初始版本,包含所有基础接口 2026-03-30

8. 联系信息

如有接口使用问题,请联系系统管理员或开发团队。