
物流快递查询
企业用户实名使用个人用户实名使用个人用户无法使用
输入快递单号和快递代号查询实时物流信息。该接口支持单号自动识别,可查询国内外上千家物流快递公司的物流跟踪服务,包括顺丰、圆通、申通、中通、韵达、百世、EMS等快递物流查询,同步支持物流轨迹查询功能。
价格
¥0元/20次
新用户免费体验,自购买起有效期1个月
选择套餐:




常见问题
快递查询API支持哪些快递公司?
支持国内外上千家快递公司,包括顺丰、圆通、中通、韵达、申通、京东、EMS、极兔、德邦、百世等主流快递。
需要用户选择快递公司吗?
不需要。接口支持单号自动识别,用户只需输入快递单号即可。
顺丰快递查询需要注意什么?
顺丰、丰网、跨越、中通需传入收件人或寄件人手机号(后四位也可),以便获取完整物流轨迹。
返回哪些信息?
返回完整物流轨迹(包含时间、地点、状态描述)、当前最新状态、已耗时、快递公司电话等。
有免费试用吗?
新用户注册可免费试用20次。
适用于哪些场景?
电商订单跟踪、物流系统对接、ERP系统集成、小程序快递查询等。
支持哪些开发语言?
提供Java、Python、PHP、C#四种语言的代码示例,可直接复制使用。
对接有问题怎么办?
可联系客服拉技术对接群。
接口名称:全国快递物流查询
描述:输入物流单号等信息,实时查询物流轨迹信息
请求地址 url:https://api.shuxuntech.com/v1/express/query
请求方式 method:get/post
参数:
| 名称 | 参数位置 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| appKey | head | string | 是 | 数勋分配appKey |
| timestamp | head | string | 是 | unix时间毫秒值 |
| sign | head | string | 是 | 签名,说明 |
| no | query | string | 是 | 物流单号 |
| code | query | string | 否 | 快递代码,详见物流快递代码字典 |
| tel | query | string | 否 | 顺丰/丰网/跨越/中通需传入收件人或寄件人手机号或手机号后四位(推荐使用寄件人) |
签名算法说明:
数勋分配的appKey、当前unix时间毫秒值timestamp、数勋分配的appSecret、 按顺序拼接sha256加密得到sign,查看如下示例
appKey = aaa;
timestamp = 1682476904289;
appSecret = bbb;
sign = sha256(appKey+timestamp+appSecret)
正确返回:
{
"code": "0",
"msg": "成功",
"isFee": 1,
"seqNo": "8bdguy0kbojrkq9cf5tp3l4tidbpile3",
"data": {
"theLastTime": "2024-02-28 13:47:43", //运单号物流流转当前最新描述
"cpCode": "EMS", //快递公司编码
"mailNo": "985834***141", //快递单号
"cpMobile": "11183", //快递公司电话
"theLastMessage": "您的快件已签收【***理工学院软件学院东菜鸟驿站】,如有疑问请电联快递员【电话:157***5502】。连接美好,无处不在,感谢您使用中国邮政,期待再次为您服务。",//运单号物流流转当前最新描述
"logisticsCompanyName": "EMS", //快递公司名称
"cpUrl": "https://www.ems.com.cn/", //快递公司官网
"takeTime": "2天3小时50分", //从揽收到送达所耗时间
"logisticsStatusDesc": "已签收", //运单号当前物流状态文字描述
"logisticsTraceDetailList": [ //物流流转明细
{
"areaCode": "CN***00000000", //非必须,当前节点所在地址行政编码
"areaName": "河南省,**市", //非必须,当前节点所在地区,省,市,区或省,市
"subLogisticsStatus": "SIGN", //物流流转子状态,详见:物流状态编码对照表
"time": 1709099263000, //时间,单位毫秒
"logisticsStatus": "SIGN", //物流流转状态,详见:物流状态编码对照表
"desc": "您的快件已签收【***理工学院软件学院东菜鸟驿站】,如有疑问请电联快递员【电话:157***5502】。连接美好,无处不在,感谢您使用中国邮政,期待再次为您服务。"//物流流转描述
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,**市",
"subLogisticsStatus": "STA_INBOUND",
"time": 1709098104000,
"logisticsStatus": "DELIVERING",
"desc": "您的快件已派送至【***理工学院软件学院东菜鸟驿站】,自提点电话:153***0902,请您凭取件码领取快件,如有疑问请电联快递员【电话:15737715502】,投诉请致电11183。"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,南阳市",
"subLogisticsStatus": "DELIVERING",
"time": 1709084792000,
"logisticsStatus": "DELIVERING",
"desc": "快件正在派送中,请耐心等待,保持电话畅通,准备签收,如有疑问请电联快递员【苗**,电话:157***5502】或揽投部【电话:0377-631***00】,投诉请致电11183。"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,**市",
"subLogisticsStatus": "TRANSPORT",
"time": 1709084492000,
"logisticsStatus": "TRANSPORT",
"desc": "快件到达【***市白河揽投部】"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,南阳市",
"subLogisticsStatus": "TRANSPORT",
"time": 1709074003000,
"logisticsStatus": "TRANSPORT",
"desc": "快件离开【**市包件车间】,正在发往下一站"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,**市",
"subLogisticsStatus": "TRANSPORT",
"time": 1709058177000,
"logisticsStatus": "TRANSPORT",
"desc": "快件到达【**市包件车间】"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,***市",
"subLogisticsStatus": "TRANSPORT",
"time": 1709036234000,
"logisticsStatus": "TRANSPORT",
"desc": "快件离开【***市包件车间】,正在发往下一站"
},
{
"areaCode": "CN***00000000",
"areaName": "河南省,***市",
"subLogisticsStatus": "TRANSPORT",
"time": 1709032670000,
"logisticsStatus": "TRANSPORT",
"desc": "快件到达【***市包件车间】"
},
{
"areaCode": "CN5***00000000",
"areaName": "四川省,***市",
"subLogisticsStatus": "TRANSPORT",
"time": 1708962186000,
"logisticsStatus": "TRANSPORT",
"desc": "快件离开【**双流处理中心天府包件车间】,正在发往下一站"
},
{
"areaCode": "CN5***00000000",
"areaName": "四川省,***市",
"subLogisticsStatus": "TRANSPORT",
"time": 1708952075000,
"logisticsStatus": "TRANSPORT",
"desc": "快件到达【***双流处理中心天府包件车间】"
},
{
"areaName": "四川省,**市,**县",
"subLogisticsStatus": "TRANSPORT",
"time": 1708952067000,
"logisticsStatus": "TRANSPORT",
"desc": "快件离开【**区电商客户平岗路揽投部】,正在发往【成都双流处理中心天府包件车间】"
},
{
"areaName": "四川省,成都市,**县",
"subLogisticsStatus": "TRANSPORT",
"time": 1708952066000,
"logisticsStatus": "TRANSPORT",
"desc": "快件已在【**区电商客户平岗路揽投部】完成分拣,准备发出"
},
{
"areaCode": "CN5***00000000",
"areaName": "四川省,成都市",
"subLogisticsStatus": "ACCEPT",
"time": 1708911453000,
"logisticsStatus": "ACCEPT",
"desc": "中国邮政 已收取快件"
}
],
"logisticsStatus": "SIGN" //物流流转状态,详见:物流状态编码对照表;
}
}
错误返回:
{
"code": "1",
"msg": "请输入快递编号",
"isFee": 0,
"seqNo": null,
"data": null
}
返回字段描述:
| 字段名 | 类型 | 描述 |
|---|---|---|
| code | string | 错误码 |
| msg | string | 错误描述 |
| isFee | int | 是否计费(1:计费,0:不计费) |
| seqNo | string | 调用流水号 |
| data | object | 返回数据 |
data对象说明
| 字段名 | 类型 | 描述 |
|---|---|---|
| theLastTime | string | 运单号物流流转当前最新变更时间 |
| cpCode | string | 快递公司代码 |
| mailNo | string | 快递编号 |
| cpMobile | string | 快递公司电话 |
| theLastMessage | string | 运单号物流流转当前最新描述 |
| logisticsCompanyName | string | 分快递公司名称 |
| cpUrl | string | 快递公司官网 |
| takeTime | string | 从揽收到送达所耗时间 |
| logisticsStatusDesc | string | 运单号当前物流状态文字描述 |
| logisticsStatus | string | 物流流转状态,详见:物流状态编码对照表 |
| logisticsTraceDetailList | array | 物流流转明细 |
logisticsTraceDetailList 对象说明
| 字段名 | 类型 | 描述 |
|---|---|---|
| areaCode | string | 非必须,当前节点所在地址行政编码 |
| areaName | string | 非必须,当前节点所在地区,省,市,区或省,市 |
| subLogisticsStatus | string | 物流流转子状态,详见:物流状态编码对照表 |
| time | string | 时间,单位毫秒 |
| logisticsStatus | string | 物流流转状态,详见:物流状态编码对照表 |
| desc | string | 物流流转描述 |
code错误码说明
| code | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 参数错误 |
| 2 | 无记录 |
| 3 | 第三方服务异常 |
| 4 | 签名错误 |
| 5 | 余额不足 |
| 6 | 调用频率超限 |
| 7 | 账号停用 |
| 8 | 接口已停用 |
| 9 | 联系服务商开通接口权限 |
| 10 | ip不在白名单 |
| 11 | 系统异常 |
| 12 | 实名状态错误 |
| 99 | 其他异常,具体返回为准 |
快递公司代码对照表
| 序号 | 值 | 描述 |
|---|---|---|
| 1 | SF | 顺丰快递 |
| 2 | YTO | 圆通快递 |
| 3 | ZTO | 中通快递 |
| 4 | YUNDA | 韵达快递 |
| 5 | YDKY | 韵达快运 |
| 6 | STO | 申通快递 |
| 7 | TTKDEX | 天天快递 |
| 8 | JD | 京东快递 |
| 9 | EMS | 中国邮政(其他常用名称:邮政国内小包、EMS、邮政标准快递、E邮宝、EMS经济快递、EMS特快专递、邮政快递包裹、EMS快递包裹、邮政EMS速递、邮政平邮、邮政商务小包、平邮、邮包、邮政快递,都可以使用此对照关系查询或订阅物流) |
| 10 | DBKD | 德邦快递 |
| 11 | DBL | 德邦物流 |
| 12 | DBKY | 德邦快运 |
| 13 | SURE | 速尔快运 |
| 14 | UC | 优速快递 |
| 15 | JT | 极兔速递 |
| 16 | KYE | 跨越速运 |
| 17 | CP471906 | 顺心捷达 |
| 18 | ANE56 | 安能物流 |
| 19 | BESTQJT | 百世快运 |
| 20 | FW | 丰网速递 |
| 21 | YMDD | 壹米滴答 |
| 22 | JYM | 加运美 |
| 23 | ZTOKY | 中通快运 |
| 24 | CP449455 | 京广速递 |
| 25 | ZJS | 宅急送 |
| 26 | FAST | 快捷快递 |
| 27 | FEDEX | 联邦快递 |
| 28 | RRS | 日日顺 |
| 29 | SNWL | 苏宁快递 |
| 30 | ZMKM | 丹鸟 |
| 31 | ZMKMKD | 丹鸟快递 |
| 32 | RFD | 如风达 |
| 33 | YCKY | 远成快运 |
| 34 | JYXP | 九曳供应链 |
| 35 | CP468398 | 圆通承诺达 |
| 36 | GTO | 国通快递 |
| 37 | QFKD | 全峰快递 |
| 38 | SDSD | 山东递速 |
| 39 | XFWL | 信丰物流 |
| 40 | CP443514 | 百世云配 |
| 41 | LE10032270 | 韵达同城 |
| 42 | PADTF | 平安达腾飞 |
| 43 | HOAU | 天地华宇 |
| 44 | STOKY | 申通快运 |
| 45 | ZTKY | 中铁物流/飞豹快递 |
| 46 | EWINSHINE | 万象物流 |
| 47 | QRT | 全日通 |
| 48 | GZFY | 凡宇快递 |
| 49 | XBWL | 新邦物流 |
| 50 | CRE | 中铁快运 |
| 51 | LTS | 联昊通 |
| 52 | SHENGHUI | 盛辉物流 |
| 53 | HUANGMAJIA | 黄马甲配送 |
| 54 | CHENGBANG | 晟邦物流 |
| 55 | GZLT | 飞远配送 |
| 56 | HZABC | 飞远(爱彼西)配送 |
| 57 | YCT | 黑猫宅急便 |
| 58 | COE | COE |
| 59 | DTW | 大田物流 |
| 60 | AIR | 亚风速递 |
| 61 | WJ | 万家物流 |
| 62 | D4PX | 递四方 |
| 63 | UPS | UPS |
| 64 | SUIJIAWL | 穗佳物流 |
| 65 | SUTENG | 速腾快递 |
| 66 | ANNTO | 安得智联 |
| 67 | DISU | D速 |
| 68 | ZZJHTD | 郑州建华 |
| 69 | ZTOGJ | 中通国际 |
| 70 | SXJH | 建华快递 |
| 71 | ZL | 四川增联供应链 |
| 72 | JUSDA | 准时达 |
| 73 | YDGJ | 韵达国际 |
| 74 | FENGNIAO | 蜂鸟配送 |
| 75 | FJGJ | 泛捷国际物流 |
| 76 | CVP | 潮优配 |
| 77 | LSWL | 林氏物流 |
| 78 | CQLY | 重庆铃宇消费品供应链 |
| 79 | XINZHIHUI | 新智慧 |
| 80 | STOINTL | 申通国际 |
| 81 | HBZL | 湖北众联 |
| 82 | GOODKUAIDI | GOOD快递 |
| 83 | EWE_GLOBAL | EWE GLOBAL |
| 84 | WDSWL | 鸿达顺物流 |
| 85 | AXD | 安鲜达 |
| 86 | GDNFCMFXWL | 广东南方传媒发行物流 |
| 87 | XLOBO | 贝海国际速递 |
| 88 | ESDEX | 卓志速运 |
| 89 | YTOGJ | 圆通国际 |
| 90 | STWL | 速通物流 |
| 91 | WAJ | 沃埃家 |
| 92 | UBON | 优邦速运 |
| 93 | WND | WnDirect |
| 94 | SXXF | 山西馨富 |
| 95 | YC | 远长物流 |
| 96 | BSGJ | 百世国际 |
| 97 | YUD | 长发快递 |
| 98 | KMYRX | 昆明云瑞祥 |
| 99 | DHL | DHL全球 |
| 100 | CN7000001011758 | 泰进物流 |
| 101 | BYZH | 贝业智慧物流 |
| 102 | JQWL | 浙江鉴强物流 |
| 103 | ESB | E速宝 |
| 104 | SZXK | 苏州熙康 |
| 105 | DDS | 点点送 |
| 106 | SUYUN123 | 58速运 |
| 107 | SEND2CHINA | Send2China |
| 108 | CYEXP | 长宇快递 |
| 109 | TTKEU | 天天欧洲物流 |
| 110 | SQWL | 商桥物流 |
| 111 | WORLDCPS | 天马物流 |
| 112 | KXTX | 卡行天下 |
| 113 | AOYOUZGKY | 澳邮中国快运 |
| 114 | EFS | EFSPOST |
| 115 | AXWL | 安迅物流 |
| 116 | RUSTON | 俄速通 |
| 117 | PAKD | 平安快递 |
| 118 | TDWL_123456 | 腾达物流 |
| 119 | XZB | 鑫泽邦物流 |
| 120 | HCT | 新竹物流 |
| 121 | MGSD | 美国速递 |
| 122 | SCJXWLYXGS | 余氏东风 |
| 123 | DD | 当当宅配 |
| 124 | AST | 安世通 |
| 125 | FTDKD | 富腾达快递 |
| 126 | EHAOYAO | 好药师物流 |
| 127 | RBYZEMS | 日本邮政EMS |
| 128 | CGKD | 程光快递 |
| 129 | DOD | 门对门 |
| 130 | YDTKD | 易达通快递 |
| 131 | BHWL | 保宏物流 |
| 132 | XAJ | 新安居仓配 |
| 133 | CSZX | 城市之星 |
| 134 | XYWL | 秀驿物流 |
| 135 | LTJZPS | 蓝豚家装配送 |
| 136 | DJ56 | 东骏快捷 |
| 137 | NEDA | 能达速递 |
| 138 | CHS | 重庆中环 |
| 139 | YXWLJT | 宇鑫物流 |
物流状态对照表

全国物流快递查询
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
/**
* 全国物流快递查询 - Java 示例代码
* 接口地址:https://api.shuxuntech.com/v1/express/query
*
* 说明:本示例只使用 JDK 原生 API(java.net / java.security),不依赖任何第三方 jar 包,
* 也不需要本项目的工具类,复制到本地即可编译运行:
* javac ExpressQueryDemo.java
* java ExpressQueryDemo
*/
public class ExpressQueryDemo {
/** 数勋分配的 appKey,请替换为您自己的 appKey */
private static final String APP_KEY = "您的appKey";
/** 数勋分配的 appSecret,请替换为您自己的 appSecret */
private static final String APP_SECRET = "您的appSecret";
/** 接口地址 */
private static final String API_URL = "https://api.shuxuntech.com/v1/express/query";
/** 快递编号 */
private static final String NO = "";
/** 快递代码 */
private static final String CODE = "";
/** 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位 */
private static final String TEL = "";
public static void main(String[] args) throws Exception {
// 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
String timestamp = String.valueOf(System.currentTimeMillis());
// 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256,得到小写十六进制字符串
String sign = sha256Hex(APP_KEY + timestamp + APP_SECRET);
// 3、业务参数,拼到 url 的 query 里
String query = "no=" + urlEncode(NO) + "&" + "code=" + urlEncode(CODE) + "&" + "tel=" + urlEncode(TEL);
String url = API_URL + (query.isEmpty() ? "" : "?" + query);
// 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("appKey", APP_KEY);
conn.setRequestProperty("timestamp", timestamp);
conn.setRequestProperty("sign", sign);
conn.setConnectTimeout(10000);
conn.setReadTimeout(20000);
int status = conn.getResponseCode();
// 5、读取返回内容:报错时读错误流,避免只拿到一个异常看不到原因
InputStream in = (status >= 200 && status < 300) ? conn.getInputStream() : conn.getErrorStream();
String result = readAll(in);
conn.disconnect();
System.out.println("HTTP状态码=" + status);
System.out.println("返回结果=" + result);
}
/**
* sha256 加密,返回小写十六进制字符串
* 服务端校验签名用的就是这个算法(小写十六进制)
*/
private static String sha256Hex(String content) throws Exception {
byte[] bytes = MessageDigest.getInstance("SHA-256").digest(content.getBytes("UTF-8"));
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
sb.append(Character.forDigit((b >> 4) & 0xF, 16));
sb.append(Character.forDigit(b & 0xF, 16));
}
return sb.toString();
}
/** url 编码,中文参数需要编码 */
private static String urlEncode(String value) throws Exception {
return URLEncoder.encode(value, "UTF-8");
}
/** 读取输入流内容 */
private static String readAll(InputStream in) throws Exception {
if (in == null) {
return "";
}
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
try {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} finally {
reader.close();
}
return sb.toString();
}
}
# 全国物流快递查询 - Python 示例代码
# 接口地址:https://api.shuxuntech.com/v1/express/query
#
# 说明:只使用 Python 标准库(urllib / hashlib / time),不需要 pip 安装任何第三方包,
# 保存为 express_query_demo.py 后直接执行 python express_query_demo.py 即可。
import hashlib
import time
import urllib.error
import urllib.parse
import urllib.request
# 数勋分配的 appKey,请替换为您自己的 appKey
APP_KEY = "您的appKey"
# 数勋分配的 appSecret,请替换为您自己的 appSecret
APP_SECRET = "您的appSecret"
# 接口地址
API_URL = "https://api.shuxuntech.com/v1/express/query"
# 快递编号
NO = ""
# 快递代码
CODE = ""
# 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位
TEL = ""
def sha256_hex(content):
"""sha256 加密,返回小写十六进制字符串,服务端校验签名用的就是这个算法"""
return hashlib.sha256(content.encode("utf-8")).hexdigest()
def main():
# 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
timestamp = str(int(time.time() * 1000))
# 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256
sign = sha256_hex(APP_KEY + timestamp + APP_SECRET)
# 3、业务参数
params = {}
params["no"] = NO
params["code"] = CODE
params["tel"] = TEL
data = urllib.parse.urlencode(params)
# 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
request = urllib.request.Request(API_URL + ("?" + data if data else ""), method="GET")
request.add_header("appKey", APP_KEY)
request.add_header("timestamp", timestamp)
request.add_header("sign", sign)
# 5、读取返回内容:报错时也把返回体读出来,避免只拿到一个异常看不到原因
try:
with urllib.request.urlopen(request, timeout=20) as response:
status = response.getcode()
body = response.read().decode("utf-8")
except urllib.error.HTTPError as e:
status = e.code
body = e.read().decode("utf-8")
print("HTTP状态码=" + str(status))
print("返回结果=" + body)
if __name__ == "__main__":
main()
<?php
/**
* 全国物流快递查询 - PHP 示例代码
* 接口地址:https://api.shuxuntech.com/v1/express/query
*
* 说明:只使用 PHP 内置函数,不需要 composer 安装任何依赖,也不需要 curl 扩展,
* 保存为 express_query_demo.php 后直接执行 php express_query_demo.php 即可。
*/
// 数勋分配的 appKey,请替换为您自己的 appKey
$appKey = "您的appKey";
// 数勋分配的 appSecret,请替换为您自己的 appSecret
$appSecret = "您的appSecret";
// 接口地址
$url = "https://api.shuxuntech.com/v1/express/query";
// 快递编号
$no = "";
// 快递代码
$code = "";
// 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位
$tel = "";
// 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
$timestamp = sprintf('%.0f', microtime(true) * 1000);
// 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256
$sign = hash('sha256', $appKey . $timestamp . $appSecret);
// 3、业务参数
$params = array(
'no' => $no,
'code' => $code,
'tel' => $tel,
);
$body = http_build_query($params);
// 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
$context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => "appKey: {$appKey}\r\n"
. "timestamp: {$timestamp}\r\n"
. "sign: {$sign}\r\n",
'timeout' => 20,
// 返回 4xx、5xx 时也把返回体读出来,方便排查
'ignore_errors' => true,
),
));
$requestUrl = ($body === '') ? $url : $url . '?' . $body;
$result = file_get_contents($requestUrl, false, $context);
// 打印结果
if (!empty($http_response_header[0])) {
echo "HTTP状态=" . $http_response_header[0] . PHP_EOL;
}
echo "返回结果=" . $result . PHP_EOL;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
/**
* 全国物流快递查询 - C# 示例代码
* 接口地址:https://api.shuxuntech.com/v1/express/query
*
* 说明:只使用 .NET 基础类库(System.Net.Http / System.Security.Cryptography),不依赖任何第三方包。
* 需要 .NET Framework 4.5 及以上,或 .NET Core / .NET 5 及以上;
* 保存为 ExpressQueryDemo.cs 后,用 dotnet run 或 VS 控制台项目直接运行即可。
*/
public class ExpressQueryDemo
{
/** 数勋分配的 appKey,请替换为您自己的 appKey */
private const string AppKey = "您的appKey";
/** 数勋分配的 appSecret,请替换为您自己的 appSecret */
private const string AppSecret = "您的appSecret";
/** 接口地址 */
private const string ApiUrl = "https://api.shuxuntech.com/v1/express/query";
/** 快递编号 */
private const string No = "";
/** 快递代码 */
private const string Code = "";
/** 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位 */
private const string Tel = "";
public static void Main(string[] args)
{
// 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
long millis = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
string timestamp = millis.ToString();
// 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256
string sign = Sha256Hex(AppKey + timestamp + AppSecret);
// 3、业务参数
Dictionary<string, string> form = new Dictionary<string, string>();
form.Add("no", No);
form.Add("code", Code);
form.Add("tel", Tel);
string body = ToFormBody(form);
// 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
using (HttpClient client = new HttpClient())
{
client.Timeout = TimeSpan.FromSeconds(20);
client.DefaultRequestHeaders.Add("appKey", AppKey);
client.DefaultRequestHeaders.Add("timestamp", timestamp);
client.DefaultRequestHeaders.Add("sign", sign);
string url = (body == "") ? ApiUrl : ApiUrl + "?" + body;
HttpResponseMessage response = client.GetAsync(url).GetAwaiter().GetResult();
// 5、读取返回内容,4xx、5xx 时 HttpClient 不会抛异常,这里同样能拿到返回体
string content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
Console.WriteLine("HTTP状态码=" + (int)response.StatusCode);
Console.WriteLine("返回结果=" + content);
}
}
/** 拼装 application/x-www-form-urlencoded 内容,中文参数需要编码 */
private static string ToFormBody(Dictionary<string, string> form)
{
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> item in form)
{
if (sb.Length > 0)
{
sb.Append("&");
}
sb.Append(Uri.EscapeDataString(item.Key)).Append("=").Append(Uri.EscapeDataString(item.Value));
}
return sb.ToString();
}
/** sha256 加密,返回小写十六进制字符串,服务端校验签名用的就是这个算法 */
private static string Sha256Hex(string content)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(content));
StringBuilder sb = new StringBuilder(bytes.Length * 2);
foreach (byte b in bytes)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
}
}
// 全国物流快递查询 - Node.js 示例代码
// 接口地址:https://api.shuxuntech.com/v1/express/query
//
// 说明:只使用 Node.js 内置模块(https / crypto),不需要 npm 安装任何第三方包,
// 保存为 express_query_demo.js 后直接执行 node express_query_demo.js 即可(需 Node 10 及以上)。
const https = require('https');
const crypto = require('crypto');
// 数勋分配的 appKey,请替换为您自己的 appKey
const APP_KEY = '您的appKey';
// 数勋分配的 appSecret,请替换为您自己的 appSecret
const APP_SECRET = '您的appSecret';
// 接口地址
const API_URL = 'https://api.shuxuntech.com/v1/express/query';
// 快递编号
const NO = '';
// 快递代码
const CODE = '';
// 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位
const TEL = '';
// sha256 加密,返回小写十六进制字符串,服务端校验签名用的就是这个算法
function sha256Hex(content) {
return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
}
// 打印返回结果
function printResult(statusCode, body) {
console.log('HTTP状态码=' + statusCode);
console.log('返回结果=' + body);
}
// 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
const timestamp = String(Date.now());
// 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256
const sign = sha256Hex(APP_KEY + timestamp + APP_SECRET);
// 3、业务参数,放在 url 的 query 里(中文由 URLSearchParams 自动 URL 编码)
const query = new URLSearchParams({ no: NO, code: CODE, tel: TEL }).toString();
const url = query ? API_URL + '?' + query : API_URL;
// 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
const request = https.request(url, {
method: 'GET',
headers: {
appKey: APP_KEY,
timestamp: timestamp,
sign: sign
},
timeout: 20000
}, function (response) {
// 5、读取返回内容:即使报错(4xx、5xx)也能拿到返回体,避免只看到异常看不到原因
let body = '';
response.setEncoding('utf8');
response.on('data', function (chunk) { body += chunk; });
response.on('end', function () { printResult(response.statusCode, body); });
});
request.on('timeout', function () {
request.destroy();
console.log('请求超时');
});
request.on('error', function (err) {
console.log('请求异常=' + err.message);
});
request.end();
// 全国物流快递查询 - Go 示例代码
// 接口地址:https://api.shuxuntech.com/v1/express/query
//
// 说明:只使用 Go 标准库(net/http、crypto/sha256、encoding/hex 等),不需要引入任何第三方包,
// 保存为 express_query_demo.go 后直接执行 go run express_query_demo.go 即可。
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"io"
"net/http"
"net/url"
"time"
)
// 数勋分配的 appKey,请替换为您自己的 appKey
const appKey = "您的appKey"
// 数勋分配的 appSecret,请替换为您自己的 appSecret
const appSecret = "您的appSecret"
// 接口地址
const apiURL = "https://api.shuxuntech.com/v1/express/query"
// 快递编号
const no = ""
// 快递代码
const code = ""
// 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位
const tel = ""
// sha256 加密,返回小写十六进制字符串,服务端校验签名用的就是这个算法
func sha256Hex(content string) string {
sum := sha256.Sum256([]byte(content))
return hex.EncodeToString(sum[:])
}
func main() {
// 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/int64(time.Millisecond))
// 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256
sign := sha256Hex(appKey + timestamp + appSecret)
// 3、业务参数,放在 url 的 query 里(url.Values 会自动对中文做 URL 编码)
query := url.Values{}
query.Set("no", no)
query.Set("code", code)
query.Set("tel", tel)
requestURL := apiURL
if len(query) > 0 {
requestURL = apiURL + "?" + query.Encode()
}
// 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
req, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
fmt.Println("创建请求失败=" + err.Error())
return
}
req.Header.Set("appKey", appKey)
req.Header.Set("timestamp", timestamp)
req.Header.Set("sign", sign)
client := &http.Client{Timeout: 20 * time.Second}
resp, err := client.Do(req)
if err != nil {
fmt.Println("请求异常=" + err.Error())
return
}
defer resp.Body.Close()
// 5、读取返回内容:即使报错(4xx、5xx)也能拿到返回体
body, _ := io.ReadAll(resp.Body)
fmt.Println("HTTP状态码=" + resp.Status)
fmt.Println("返回结果=" + string(body))
}
#!/usr/bin/env bash
# 全国物流快递查询 - curl 示例代码
# 接口地址:https://api.shuxuntech.com/v1/express/query
#
# 说明:只依赖系统自带的 curl 和 openssl(用于计算 sha256),不需要安装任何第三方工具,
# 保存为 express_query_demo.sh 后直接执行 bash express_query_demo.sh 即可。
# 如果系统没有 openssl,可把下面 SIGN 那一行换成注释里的 sha256sum 写法。
# 数勋分配的 appKey,请替换为您自己的 appKey
APP_KEY="您的appKey"
# 数勋分配的 appSecret,请替换为您自己的 appSecret
APP_SECRET="您的appSecret"
# 接口地址
API_URL="https://api.shuxuntech.com/v1/express/query"
# 快递编号
NO=""
# 快递代码
CODE=""
# 顺丰速运/丰网速运需传入收件人或寄件人手机号或手机号后四位
TEL=""
# 1、当前 unix 时间毫秒值,服务端要求与服务器时间相差不能超过 5 分钟
TIMESTAMP=$(($(date +%s) * 1000))
# 2、签名:按顺序拼接 appKey + timestamp + appSecret 后做 sha256,得到小写十六进制字符串
# 没有 openssl 时可用: SIGN=$(printf '%s' "${APP_KEY}${TIMESTAMP}${APP_SECRET}" | sha256sum | awk '{print $1}')
SIGN=$(printf '%s' "${APP_KEY}${TIMESTAMP}${APP_SECRET}" | openssl dgst -sha256 | awk '{print $NF}')
# 3、业务参数放在 url 的 query 里(--data-urlencode 会自动对中文做 URL 编码)
# 4、发起 GET 请求,appKey、timestamp、sign 放在请求头
# 5、-w 参数在返回内容后打印 HTTP 状态码,便于查看结果
curl -sS -G "${API_URL}" \
-H "appKey: ${APP_KEY}" \
-H "timestamp: ${TIMESTAMP}" \
-H "sign: ${SIGN}" \
--data-urlencode "no=${NO}" \
--data-urlencode "code=${CODE}" \
--data-urlencode "tel=${TEL}" \
-w "\nHTTP状态码=%{http_code}\n"
java
python
php
c#
nodejs
go
curl
产品详情
API文档
示例代码
产品价格






