使用Inpost ShipX PHP SDK获取运单追踪号报错求助
问题描述
我使用Inpost ShipX PHP SDK这个PHP库,通过API调用快递公司接口创建运单。以下代码可成功获取并保存运单标签,运行正常:
$shipmentData = json_decode($response->getBody()->__toString(), true); while ($shipmentData['status'] !== 'confirmed') { sleep(1); $response = $api->shipments()->get($shipmentData['id']); $shipmentData = json_decode($response->getBody()->__toString(), true); } $labelResponse = $api->shipments()->label()->get($shipmentData['id'], [ 'format' => 'Pdf', 'type' => 'A6', ]); file_put_contents('var/labels/paczkomaty_label.pdf', $labelResponse->getBody()->__toString());
尝试获取已创建运单的追踪号时,添加了以下代码:
$trackingResponse = $api->shipments()->tracking()->get($shipmentData['id']); var_dump($trackingResponse);
执行后触发报错:
An uncaught Exception was encountered
Type: InvalidArgumentException
Message: tracking resource not found
Filename: /vendor/imper86/php-inpost-api/src/Resource/AbstractResource.php
Line Number: 66
需要协助排查SDK用法,找到获取追踪号的正确方式,或提供排查思路。
解决思路与方案
1. 确认SDK资源结构
报错说明shipments()资源下没有tracking()子资源。直接查看SDK源码:
- 打开
vendor/imper86/php-inpost-api/src/Resource/ShipmentsResource.php - 检查该类的方法定义,确认是否有追踪相关的封装方法,或子资源注册逻辑。
2. 从运单详情直接提取追踪号
多数快递API会在运单详情中直接返回追踪号,无需单独调用接口。在你的循环中打印运单数据,查看是否存在相关字段:
var_dump($shipmentData); // 检查是否有tracking_number、tracking_code等字段
如果找到对应字段,直接提取即可:
$trackingNumber = $shipmentData['tracking_number']; // 替换为实际字段名
3. 直接调用API端点(SDK未封装时)
如果SDK没有封装追踪接口,可通过SDK底层的HTTP请求方法直接调用官方API端点:
$trackingResponse = $api->get("/shipments/{$shipmentData['id']}/tracking"); $trackingData = json_decode($trackingResponse->getBody()->__toString(), true); var_dump($trackingData);
4. 更新SDK到最新版本
可能当前SDK版本未支持追踪功能,执行更新命令:
composer update imper86/php-inpost-api
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

