写点什么

商家福音!用 PHP 对接快递鸟接口,一键搞定单号所属快递识别

作者:快递鸟
  • 2025-12-16
    广东
  • 本文字数:2768 字

    阅读完需:约 9 分钟

日常处理快递单时,C 端用户查物流直接搜单号就行,但商家场景完全不同——每天面对成百上千个混杂着顺丰、中通、韵达等不同快递的单号,先搞清楚每个单号属于哪家快递,才能顺利发起物流追踪,这个环节要是靠人工比对,不仅慢还容易错。尤其遇到新号段或不熟悉的快递编码,更是头大。

好在快递鸟提供了专门的单号识别接口,不用手动匹配规则,传个单号就能返回对应快递公司信息。考虑到多数电商商家的后台用 PHP 开发,今天就手把手教大家对接这个实用接口,让单号识别自动化起来。

在动手写代码前,记得先去快递鸟官网申请企业版 API 账号,后续接口调用的核心授权信息都从这里来:

  • // 快递鸟企业版注册地址:https://www.kdniao.com/Service/Apply.html

  • // 按页面要求提交企业信息,审批通过后会收到包含 EBusinessID(用户 ID)和 API Key 的通知邮件

  • // 接口详细规则可参考官方文档:https://www.yuque.com/kdnjishuzhichi/weubcu/yw4s6x1gbxsxadsp?view=doc_embed

快递鸟单号识别接口的核心优势在于:支持全国 1200+家快递单号识别,新号段首次识别失败后,通过轨迹订阅完善数据即可自动学习,后续就能精准识别。下面是具体的 PHP 对接步骤,新手也能跟着做。

第一步:明确接口核心信息与参数配置

先把接口的关键信息记牢,这是对接的基础。快递鸟单号识别接口指令为 2002,不支持批量请求,并发需控制在 10 次/秒内,按请求成功次数计费,接口地址为固定链接。核心参数只需要“快递单号”,返回结果会包含匹配的快递公司编码和名称。

首先设置好基础参数,把从快递鸟获取的 EBusinessID 和 API Key 填进去,再传入需要识别的快递单号即可:

<?php//====================================// 快递鸟单号识别接口请求示例(PHP版)// 核心接口信息:指令2002,支持单票单号识别//====================================
// 1. 基础授权信息(替换为你的企业版账号信息)$ebusinessId = "1237100"; // 你的快递鸟EBusinessID(用户ID)$apiKey = "你的快递鸟API Key"; // 你的快递鸟API授权密钥
// 2. 接口请求参数(核心仅需快递单号)$param = array( "LogisticCode" => "3967950525457" // 待识别的快递单号);
// 3. 接口固定配置$requestType = "2002"; // 单号识别接口指令,固定为2002$apiUrl = "https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx"; // 接口地址?&gt;
复制代码

第二步:生成标准请求数据(含签名加密)

快递鸟接口要求请求数据需经过 JSON 序列化和 URL 编码,同时要生成签名确保数据安全。签名规则为“API Key + 序列化后的参数 + API Key”,再通过 MD5 加密并转大写。

<?php// 续上一步代码
// 1. 序列化请求参数并编码$paramJson = json_encode($param, JSON_UNESCAPED_UNICODE);$postData = array( "EBusinessID" => $ebusinessId, "RequestType" => $requestType, "RequestData" => urlencode($paramJson), "DataType" => "2" // 数据格式,2表示JSON,固定值);
// 2. 生成签名(关键:确保请求合法性)$sign = md5($apiKey . $paramJson . $apiKey);$postData["DataSign"] = urlencode($sign);
// 3. 组装最终请求参数(转为键值对字符串)$requestParams = "";foreach ($postData as $key => $value) { $requestParams .= $key . "=" . $value . "&";}$requestParams = rtrim($requestParams, "&"); // 去除末尾多余的&
echo "接口请求参数:<br/>" . $requestParams . "<br/><br/>";?>
复制代码

第三步:通过 CURL 提交请求并解析返回结果

用 PHP 的 CURL 扩展发送 POST 请求,获取接口返回数据后,反序列化 JSON 格式的结果,就能提取出单号对应的快递公司信息。需要注意的是,可能出现一个单号匹配多家快递的情况,这时需要结合业务场景人工判断。

<?php// 续上一步代码
// 1. 初始化CURL并设置请求参数$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $apiUrl);curl_setopt($ch, CURLOPT_POST, 1); // 启用POST请求curl_setopt($ch, CURLOPT_POSTFIELDS, $requestParams);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 结果以字符串返回curl_setopt($ch, CURLOPT_HEADER, 0); // 不返回响应头信息
// 2. 执行请求并获取返回数据$result = curl_exec($ch);curl_close($ch); // 关闭CURL资源
// 3. 解析返回结果(JSON转数组)$response = json_decode($result, true);
// 4. 输出并处理结果echo "接口返回数据:<br/>";var_dump($response);echo "<br/><br/>";
// 结果判断与提取if ($response["Success"] === true) { $shippers = $response["Shippers"]; if (!empty($shippers)) { echo "识别结果:<br/>"; foreach ($shippers as $shipper) { echo "快递公司编码:" . $shipper["ShipperCode"] . ",名称:" . $shipper["ShipperName"] . "<br/>"; } // 若返回多个结果,需人工判断实际所属快递 if (count($shippers) > 1) { echo "提示:该单号匹配多家快递,请结合实际业务确认。<br/>"; } } else { echo "识别失败:未匹配到对应的快递公司。<br/>"; }} else { echo "请求失败:" . $response["Reason"] . "<br/>";}?>
复制代码

关键说明与避坑指南

对接接口时,这些细节能帮你少走弯路,务必注意:

  1. 识别结果的特殊性:接口仅做单号规则匹配,返回的是“可能所属”的快递公司,若出现多个结果(如示例中“312208599281014”同时匹配韵达、加运美等),需要商家结合订单来源、收件地址等信息人工确认,避免错绑快递渠道。

  2. 新号段处理:快递公司新上线的号段首次识别可能失败,此时可先对该单号发起物流轨迹订阅,当接口拉取到轨迹数据后,会自动完善学习机制,后续再识别该类单号就能成功。

  3. 并发控制:接口不支持批量请求,单秒并发不能超过 10 次,若有大量单号需要识别,建议做好请求排队处理,避免触发接口限制。

  4. 错误反馈:若发现识别结果错误,可联系快递鸟技术支持订正数据,确保后续识别的准确性。

实际应用:无缝对接商家订单系统

把上述代码整合到商家的 ERP 或订单管理系统中,就能实现自动化流程:当系统生成或导入快递单号后,自动调用快递鸟接口识别所属快递,再关联对应的物流查询接口,无需人工介入就能完成“单号录入—快递识别—轨迹追踪”的全流程。

比如某服饰商家的订单系统,接入后将原本需要 2 人/天的单号分类工作,缩短至系统自动处理,仅需 1 人核对少量多结果单号,人力成本降低 90%,同时避免了因快递匹配错误导致的物流追踪失效问题。

快递鸟单号识别接口虽然简单,但对于商家提升物流处理效率至关重要。按照上面的步骤对接后,再也不用对着一堆单号挨个查归属,把精力集中在核心业务上。如果需要批量处理或有定制化需求,还可以结合快递鸟的其他接口做进一步开发。

用户头像

快递鸟

关注

还未添加个人签名 2023-11-06 加入

还未添加个人简介

评论

发布
暂无评论
商家福音!用PHP对接快递鸟接口,一键搞定单号所属快递识别_快递鸟_InfoQ写作社区