data 示例
数据类型: JSON
| 名称 |
类型 |
必要 |
说明 |
| expressNo |
String |
是 |
中邮运单号 |
注意:以下测试内容中出现 [单号] 的地方,请替换为需要操作的实际快递单号
一、生成的签名信息
| 项目 |
值 |
| 拼接字符串 (stringA) |
data{$$}{"expressNo": "[单号]"}{$$$}external_company{$$}c2e2e01c-6c95-4146-99d6-815811755603{$$$}2026-02-15 13:38:51{$$$$}5fd68fbe-16a4-4851-bc56-3b1890a40a90 |
| MD5签名 (sign) |
7139bf10414a580b45481f3a76321c31 |
| 时间戳 (timer) |
2026-02-15 13:38:51 |
二、完整请求参数JSON
{
"data": "{\"expressNo\": \"[单号]\"}",
"external_company": "c2e2e01c-6c95-4146-99d6-815811755603",
"sign": "7139bf10414a580b45481f3a76321c31",
"timer": "2026-02-15 13:38:51"
}
三、接口测试方式
方式1:使用 cURL 命令
curl -X POST https://captureupload.30post.cn/capture/api/logisticalInfoByExpNo \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-d "data=%7B%22expressNo%22%3A%20%22[单号]%22%7D" \
-d "external_company=c2e2e01c-6c95-4146-99d6-815811755603" \
-d "sign=7139bf10414a580b45481f3a76321c31" \
-d "timer=2026-02-15%2013%3A38%3A51"
方式2:使用 Postman
Method: POST
URL: https://captureupload.30post.cn/capture/api/logisticalInfoByExpNo
Headers:
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Body (x-www-form-urlencoded):
data: {"expressNo": "[单号]"}
external_company: c2e2e01c-6c95-4146-99d6-815811755603
sign: 7139bf10414a580b45481f3a76321c31
timer: 2026-02-15 13:38:51
方式3:使用 Python 代码
import hashlib
import json
import requests
from datetime import datetime, timedelta
AK = "c2e2e01c-6c95-4146-99d6-815811755603"
SK = "5fd68fbe-16a4-4851-bc56-3b1890a40a90"
def generate_sign(data_dict, expire_time, sk):
sorted_keys = sorted(data_dict.keys(), key=lambda x: x.lower())
string_parts = []
for key in sorted_keys:
value = data_dict[key]
string_parts.append(f"{key.lower()}{{$$}}{value}{{$$$}}")
time_str = expire_time.strftime("%Y-%m-%d %H:%M:%S")
string_parts.append(f"{time_str}")
string_parts.append(f"{{$$$$}}{sk}")
string_a = "".join(string_parts)
return hashlib.md5(string_a.encode('utf-8')).hexdigest().lower()
# 构建请求
business_data = {"expressNo": "[单号]"}
data_params = {
"data": json.dumps(business_data, ensure_ascii=False),
"external_company": AK
}
expire_time = datetime.now() + timedelta(minutes=5)
sign = generate_sign(data_params, expire_time, SK)
request_data = {
"data": data_params["data"],
"external_company": AK,
"sign": sign,
"timer": expire_time.strftime("%Y-%m-%d %H:%M:%S")
}
# 发送请求
url = "https://captureupload.30post.cn/capture/api/logisticalInfoByExpNo"
response = requests.post(url, data=request_data, timeout=30)
print(response.json())
接口返回
数据类型: JSON
| 名称 |
类型 |
说明 |
| success |
Number |
是否成功(成功为1,失败为0) |
| message |
String |
失败时为错误原因,成功时不返回 |
| base |
Array |
中邮基本物流信息(如果身份没有权限则不返回此节点,无数据时返回空数组) |
| customs |
Array |
海关信息(如果身份没有权限则不返回此节点,无数据时返回空数组) |
| aireline |
Array |
航空信息(如果身份没有权限则不返回此节点,无数据时返回空数组) |
| cnExpress |
Array |
国内转运信息(如果身份没有权限则不返回此节点,无数据时返回空数组) |
返回数据示例
数据类型: JSON
{
"success": "1",
"base": {
"success": "1",
"value": [
{
"expressionNo": "xxx",
"event": "xxxx",
"address": "",
"dateTime": "2016-04-07 14:34:00"
},
{
"expressionNo": " xxx ",
"event": " xxx ",
"address": "www",
"dateTime": "2016-04-07 12:36:10"
}
]
},
"customs": {
"success": "1",
"value": [
{
"expressionNo": "xxx",
"event": "xxxx",
"address": "",
"dateTime": "2016-04-07 14:34:00"
},
{
"expressionNo": " xxx ",
"event": " xxx ",
"address": "www",
"dateTime": "2016-04-07 12:36:10"
}
]
},
"aireline": {
"success": "1",
"value": [
{
"expressionNo": "xxx",
"event": "xxxx",
"address": "",
"dateTime": "2016-04-07 14:34:00",
"pcs": "2",
"wgt": "1000",
"flight": "xxx",
"flightNo": "xxx-xxxx"
}
]
},
"cnExpress": {
"success": "1",
"value": [
{
"expressionNo": "xxx",
"event": "xxxx",
"address": "",
"dateTime": "2016-04-07 14:34:00"
}
]
}
}